@igo2/geo 1.14.1 → 1.14.3
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/esm2020/igo2-geo.mjs +4 -4
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +301 -299
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +306 -268
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +247 -247
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.module.mjs +79 -79
- package/esm2020/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +208 -208
- package/esm2020/lib/catalog/catalog-library/catalog-library-item.component.mjs +78 -78
- package/esm2020/lib/catalog/catalog-library/catalog-library.component.mjs +216 -216
- package/esm2020/lib/catalog/catalog-library/catalog-library.module.mjs +94 -94
- package/esm2020/lib/catalog/catalog.module.mjs +52 -52
- package/esm2020/lib/catalog/index.mjs +4 -4
- package/esm2020/lib/catalog/shared/catalog.abstract.mjs +94 -94
- package/esm2020/lib/catalog/shared/catalog.enum.mjs +15 -15
- package/esm2020/lib/catalog/shared/catalog.interface.mjs +1 -1
- package/esm2020/lib/catalog/shared/catalog.service.mjs +605 -605
- package/esm2020/lib/catalog/shared/index.mjs +4 -4
- package/esm2020/lib/datasource/datasource.module.mjs +21 -21
- package/esm2020/lib/datasource/index.mjs +2 -2
- package/esm2020/lib/datasource/shared/capabilities.service.mjs +430 -430
- package/esm2020/lib/datasource/shared/datasource.service.mjs +235 -235
- package/esm2020/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +144 -144
- package/esm2020/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/carto-datasource.mjs +108 -108
- package/esm2020/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/cluster-datasource.mjs +14 -14
- package/esm2020/lib/datasource/shared/datasources/data.service.mjs +2 -2
- package/esm2020/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/datasource.mjs +28 -28
- package/esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/feature-datasource.mjs +42 -42
- package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +56 -56
- package/esm2020/lib/datasource/shared/datasources/index.mjs +35 -35
- package/esm2020/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/mvt-datasource.mjs +27 -27
- package/esm2020/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/osm-datasource.mjs +11 -11
- package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +48 -48
- package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.mjs +14 -14
- package/esm2020/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/websocket-datasource.mjs +53 -53
- package/esm2020/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wfs-datasource.mjs +71 -71
- package/esm2020/lib/datasource/shared/datasources/wfs.service.mjs +151 -151
- package/esm2020/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wms-datasource.mjs +205 -205
- package/esm2020/lib/datasource/shared/datasources/wms-wfs.utils.mjs +206 -206
- package/esm2020/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/wmts-datasource.mjs +15 -15
- package/esm2020/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/datasources/xyz-datasource.mjs +8 -8
- package/esm2020/lib/datasource/shared/index.mjs +4 -4
- package/esm2020/lib/datasource/shared/options/index.mjs +4 -4
- package/esm2020/lib/datasource/shared/options/options-api.interface.mjs +1 -1
- package/esm2020/lib/datasource/shared/options/options-api.providers.mjs +14 -14
- package/esm2020/lib/datasource/shared/options/options-api.service.mjs +80 -80
- package/esm2020/lib/datasource/shared/options/options.service.mjs +2 -2
- package/esm2020/lib/datasource/utils/esri-style-generator.mjs +356 -356
- package/esm2020/lib/datasource/utils/index.mjs +2 -2
- package/esm2020/lib/datasource/utils/tilegrid.mjs +19 -19
- package/esm2020/lib/directions/directions-buttons/directions-buttons.component.mjs +223 -223
- package/esm2020/lib/directions/directions-buttons/index.mjs +1 -1
- package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +289 -289
- package/esm2020/lib/directions/directions-inputs/index.mjs +1 -1
- package/esm2020/lib/directions/directions-results/directions-results.component.mjs +195 -195
- package/esm2020/lib/directions/directions-results/index.mjs +1 -1
- package/esm2020/lib/directions/directions-sources/directions-source.interface.mjs +1 -1
- package/esm2020/lib/directions/directions-sources/directions-source.mjs +2 -2
- package/esm2020/lib/directions/directions-sources/directions-source.provider.mjs +15 -15
- package/esm2020/lib/directions/directions-sources/index.mjs +4 -4
- package/esm2020/lib/directions/directions-sources/osrm-directions-source.mjs +98 -98
- package/esm2020/lib/directions/directions.component.mjs +310 -310
- package/esm2020/lib/directions/directions.module.mjs +101 -101
- package/esm2020/lib/directions/index.mjs +6 -6
- package/esm2020/lib/directions/shared/directions-source.service.mjs +16 -16
- package/esm2020/lib/directions/shared/directions.enum.mjs +27 -27
- package/esm2020/lib/directions/shared/directions.interface.mjs +1 -1
- package/esm2020/lib/directions/shared/directions.service.mjs +28 -28
- package/esm2020/lib/directions/shared/directions.utils.mjs +508 -508
- package/esm2020/lib/directions/shared/index.mjs +5 -5
- package/esm2020/lib/directions/shared/store.mjs +23 -23
- package/esm2020/lib/download/download-button/download-button.component.mjs +60 -60
- package/esm2020/lib/download/download-button/index.mjs +1 -1
- package/esm2020/lib/download/download.module.mjs +41 -41
- package/esm2020/lib/download/index.mjs +2 -2
- package/esm2020/lib/download/shared/download.interface.mjs +1 -1
- package/esm2020/lib/download/shared/download.service.mjs +64 -64
- package/esm2020/lib/download/shared/index.mjs +2 -2
- package/esm2020/lib/draw/draw/draw-layer-popup.component.mjs +54 -54
- package/esm2020/lib/draw/draw/draw-popup.component.mjs +590 -590
- package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +47 -47
- package/esm2020/lib/draw/draw/draw.component.mjs +1298 -1298
- package/esm2020/lib/draw/draw/draw.module.mjs +112 -112
- package/esm2020/lib/draw/drawingTool.module.mjs +19 -19
- package/esm2020/lib/draw/index.mjs +2 -2
- package/esm2020/lib/draw/shared/draw-icon.service.mjs +26 -26
- package/esm2020/lib/draw/shared/draw-style.service.mjs +189 -189
- package/esm2020/lib/draw/shared/draw.enum.mjs +36 -36
- package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
- package/esm2020/lib/draw/shared/draw.utils.mjs +121 -121
- package/esm2020/lib/draw/shared/index.mjs +5 -5
- package/esm2020/lib/feature/feature-details/feature-details.component.mjs +404 -404
- package/esm2020/lib/feature/feature-details/feature-details.directive.mjs +53 -53
- package/esm2020/lib/feature/feature-details/feature-details.module.mjs +47 -47
- package/esm2020/lib/feature/feature-form/feature-form.component.mjs +111 -111
- package/esm2020/lib/feature/feature-form/feature-form.module.mjs +33 -33
- package/esm2020/lib/feature/feature.module.mjs +27 -27
- package/esm2020/lib/feature/index.mjs +3 -3
- package/esm2020/lib/feature/shared/feature.enums.mjs +8 -8
- package/esm2020/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2020/lib/feature/shared/feature.utils.mjs +346 -346
- package/esm2020/lib/feature/shared/index.mjs +6 -6
- package/esm2020/lib/feature/shared/store.mjs +123 -123
- package/esm2020/lib/feature/shared/strategies/in-map-extent.mjs +112 -112
- package/esm2020/lib/feature/shared/strategies/in-map-resolution.mjs +93 -93
- package/esm2020/lib/feature/shared/strategies/index.mjs +5 -5
- package/esm2020/lib/feature/shared/strategies/loading-layer.mjs +103 -103
- package/esm2020/lib/feature/shared/strategies/loading.mjs +132 -132
- package/esm2020/lib/feature/shared/strategies/selection.mjs +369 -369
- package/esm2020/lib/feature/shared/strategies.utils.mjs +36 -36
- package/esm2020/lib/filter/filter.module.mjs +288 -288
- package/esm2020/lib/filter/index.mjs +15 -15
- package/esm2020/lib/filter/ogc-filter-button/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +139 -139
- package/esm2020/lib/filter/ogc-filter-form/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +644 -644
- package/esm2020/lib/filter/ogc-filter-selection/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +1301 -1301
- package/esm2020/lib/filter/ogc-filter-time/index.mjs +2 -2
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +176 -176
- package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +897 -897
- package/esm2020/lib/filter/ogc-filterable-form/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +58 -58
- package/esm2020/lib/filter/ogc-filterable-item/index.mjs +1 -1
- package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +306 -306
- package/esm2020/lib/filter/ogc-filterable-list/index.mjs +2 -2
- package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +30 -30
- package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +43 -43
- package/esm2020/lib/filter/shared/filterable-datasource.pipe.mjs +54 -54
- package/esm2020/lib/filter/shared/index.mjs +11 -11
- package/esm2020/lib/filter/shared/ogc-filter-time.service.mjs +71 -71
- package/esm2020/lib/filter/shared/ogc-filter.enum.mjs +29 -29
- package/esm2020/lib/filter/shared/ogc-filter.interface.mjs +1 -1
- package/esm2020/lib/filter/shared/ogc-filter.mjs +691 -691
- package/esm2020/lib/filter/shared/ogc-filter.service.mjs +45 -45
- package/esm2020/lib/filter/shared/spatial-filter.enum.mjs +22 -22
- package/esm2020/lib/filter/shared/spatial-filter.interface.mjs +1 -1
- package/esm2020/lib/filter/shared/spatial-filter.service.mjs +268 -268
- package/esm2020/lib/filter/shared/time-filter.enum.mjs +12 -12
- package/esm2020/lib/filter/shared/time-filter.interface.mjs +1 -1
- package/esm2020/lib/filter/shared/time-filter.service.mjs +106 -106
- package/esm2020/lib/filter/spatial-filter/spatial-filter-item/index.mjs +1 -1
- package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +1088 -1088
- package/esm2020/lib/filter/spatial-filter/spatial-filter-list/index.mjs +1 -1
- package/esm2020/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +207 -207
- package/esm2020/lib/filter/spatial-filter/spatial-filter-type/index.mjs +1 -1
- package/esm2020/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +143 -143
- package/esm2020/lib/filter/time-filter-button/index.mjs +1 -1
- package/esm2020/lib/filter/time-filter-button/time-filter-button.component.mjs +77 -77
- package/esm2020/lib/filter/time-filter-form/index.mjs +1 -1
- package/esm2020/lib/filter/time-filter-form/time-filter-form.component.mjs +733 -733
- package/esm2020/lib/filter/time-filter-item/index.mjs +1 -1
- package/esm2020/lib/filter/time-filter-item/time-filter-item.component.mjs +118 -118
- package/esm2020/lib/filter/time-filter-list/index.mjs +2 -2
- package/esm2020/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +30 -30
- package/esm2020/lib/filter/time-filter-list/time-filter-list.component.mjs +38 -38
- package/esm2020/lib/geo.module.mjs +101 -101
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +520 -520
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +188 -188
- package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +63 -63
- package/esm2020/lib/geometry/geometry.module.mjs +26 -26
- package/esm2020/lib/geometry/index.mjs +3 -3
- package/esm2020/lib/geometry/shared/controls/draw.mjs +313 -313
- package/esm2020/lib/geometry/shared/controls/index.mjs +3 -3
- package/esm2020/lib/geometry/shared/controls/modify.mjs +520 -520
- package/esm2020/lib/geometry/shared/controls/slice.mjs +176 -176
- package/esm2020/lib/geometry/shared/geometry.errors.mjs +25 -25
- package/esm2020/lib/geometry/shared/geometry.interfaces.mjs +1 -1
- package/esm2020/lib/geometry/shared/geometry.utils.mjs +121 -121
- package/esm2020/lib/geometry/shared/index.mjs +4 -4
- package/esm2020/lib/import-export/export-button/export-button.component.mjs +63 -63
- package/esm2020/lib/import-export/export-button/index.mjs +1 -1
- package/esm2020/lib/import-export/import-export/import-export.component.mjs +1219 -1219
- package/esm2020/lib/import-export/import-export/index.mjs +1 -1
- package/esm2020/lib/import-export/import-export.module.mjs +95 -95
- package/esm2020/lib/import-export/index.mjs +4 -4
- package/esm2020/lib/import-export/shared/drop-geo-file.directive.mjs +134 -134
- package/esm2020/lib/import-export/shared/export.errors.mjs +14 -14
- package/esm2020/lib/import-export/shared/export.interface.mjs +1 -1
- package/esm2020/lib/import-export/shared/export.service.mjs +195 -195
- package/esm2020/lib/import-export/shared/export.type.mjs +3 -3
- package/esm2020/lib/import-export/shared/export.utils.mjs +54 -54
- package/esm2020/lib/import-export/shared/import.errors.mjs +38 -38
- package/esm2020/lib/import-export/shared/import.interface.mjs +1 -1
- package/esm2020/lib/import-export/shared/import.service.mjs +214 -214
- package/esm2020/lib/import-export/shared/import.utils.mjs +234 -234
- package/esm2020/lib/import-export/shared/index.mjs +10 -10
- package/esm2020/lib/import-export/style-list/index.mjs +4 -4
- package/esm2020/lib/import-export/style-list/style-list.interface.mjs +1 -1
- package/esm2020/lib/import-export/style-list/style-list.module.mjs +22 -22
- package/esm2020/lib/import-export/style-list/style-list.provider.mjs +20 -20
- package/esm2020/lib/import-export/style-list/style-list.service.mjs +50 -50
- package/esm2020/lib/layer/index.mjs +10 -10
- package/esm2020/lib/layer/layer-item/index.mjs +1 -1
- package/esm2020/lib/layer/layer-item/layer-item.component.mjs +299 -299
- package/esm2020/lib/layer/layer-legend/index.mjs +1 -1
- package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +387 -387
- package/esm2020/lib/layer/layer-legend-item/index.mjs +1 -1
- package/esm2020/lib/layer/layer-legend-item/layer-legend-item.component.mjs +83 -83
- package/esm2020/lib/layer/layer-legend-list/index.mjs +2 -2
- package/esm2020/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +47 -47
- package/esm2020/lib/layer/layer-legend-list/layer-legend-list.component.mjs +194 -194
- package/esm2020/lib/layer/layer-list/index.mjs +3 -3
- package/esm2020/lib/layer/layer-list/layer-list-binding.directive.mjs +58 -58
- package/esm2020/lib/layer/layer-list/layer-list.component.mjs +1008 -1008
- package/esm2020/lib/layer/layer-list/layer-list.enum.mjs +18 -18
- package/esm2020/lib/layer/layer-list-tool/index.mjs +4 -4
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +164 -164
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +6 -6
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +1 -1
- package/esm2020/lib/layer/layer-list-tool/layer-list-tool.service.mjs +21 -21
- package/esm2020/lib/layer/layer.module.mjs +184 -184
- package/esm2020/lib/layer/shared/clusterParam.mjs +1 -1
- package/esm2020/lib/layer/shared/index.mjs +6 -6
- package/esm2020/lib/layer/shared/layer.enums.mjs +1 -1
- package/esm2020/lib/layer/shared/layer.service.mjs +185 -185
- package/esm2020/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/any-layer.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/image-layer.mjs +67 -67
- package/esm2020/lib/layer/shared/layers/index.mjs +12 -12
- package/esm2020/lib/layer/shared/layers/layer.interface.mjs +17 -17
- package/esm2020/lib/layer/shared/layers/layer.mjs +163 -163
- package/esm2020/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/tile-layer.mjs +46 -46
- package/esm2020/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/vector-layer.mjs +377 -377
- package/esm2020/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
- package/esm2020/lib/layer/shared/layers/vectortile-layer.mjs +103 -103
- package/esm2020/lib/layer/shared/style.service.mjs +355 -355
- package/esm2020/lib/layer/shared/vector-style.interface.mjs +1 -1
- package/esm2020/lib/layer/style-modal/index.mjs +1 -1
- package/esm2020/lib/layer/style-modal/style-modal.component.mjs +287 -287
- package/esm2020/lib/layer/track-feature-button/index.mjs +1 -1
- package/esm2020/lib/layer/track-feature-button/track-feature-button.component.mjs +58 -58
- package/esm2020/lib/layer/utils/image-watcher.mjs +61 -61
- package/esm2020/lib/layer/utils/index.mjs +5 -5
- package/esm2020/lib/layer/utils/layer.utils.mjs +9 -9
- package/esm2020/lib/layer/utils/outputLegend.mjs +26 -26
- package/esm2020/lib/layer/utils/tile-watcher.mjs +49 -49
- package/esm2020/lib/layer/utils/vector-watcher.mjs +47 -47
- package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +19 -19
- package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +96 -96
- package/esm2020/lib/map/baselayers-switcher/index.mjs +2 -2
- package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +141 -133
- package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +78 -78
- package/esm2020/lib/map/geolocate-button/index.mjs +1 -1
- package/esm2020/lib/map/home-extent-button/home-extent-button.component.mjs +62 -62
- package/esm2020/lib/map/home-extent-button/index.mjs +1 -1
- package/esm2020/lib/map/index.mjs +13 -13
- package/esm2020/lib/map/info-section/index.mjs +1 -1
- package/esm2020/lib/map/info-section/info-section.component.mjs +29 -29
- package/esm2020/lib/map/map-browser/index.mjs +1 -1
- package/esm2020/lib/map/map-browser/map-browser.component.mjs +65 -65
- package/esm2020/lib/map/map-center/index.mjs +1 -1
- package/esm2020/lib/map/map-center/map-center.component.mjs +49 -49
- package/esm2020/lib/map/map.module.mjs +126 -126
- package/esm2020/lib/map/menu-button/index.mjs +1 -1
- package/esm2020/lib/map/menu-button/menu-button.component.mjs +61 -61
- package/esm2020/lib/map/offline-button/index.mjs +1 -1
- package/esm2020/lib/map/offline-button/offline-button.component.mjs +75 -75
- package/esm2020/lib/map/rotation-button/index.mjs +1 -1
- package/esm2020/lib/map/rotation-button/rotation-button.component.mjs +69 -69
- package/esm2020/lib/map/shared/controllers/controller.mjs +41 -41
- package/esm2020/lib/map/shared/controllers/geolocation.mjs +307 -307
- package/esm2020/lib/map/shared/controllers/index.mjs +3 -3
- package/esm2020/lib/map/shared/controllers/view.mjs +350 -350
- package/esm2020/lib/map/shared/hover-feature.directive.mjs +502 -502
- package/esm2020/lib/map/shared/index.mjs +13 -13
- package/esm2020/lib/map/shared/linkedLayers.utils.mjs +237 -237
- package/esm2020/lib/map/shared/map-pointer-position.directive.mjs +106 -106
- package/esm2020/lib/map/shared/map.enums.mjs +5 -5
- package/esm2020/lib/map/shared/map.interface.mjs +1 -1
- package/esm2020/lib/map/shared/map.mjs +406 -406
- package/esm2020/lib/map/shared/map.service.mjs +28 -28
- package/esm2020/lib/map/shared/map.utils.mjs +463 -462
- package/esm2020/lib/map/shared/mapOffline.directive.mjs +162 -162
- package/esm2020/lib/map/shared/projection.interfaces.mjs +1 -1
- package/esm2020/lib/map/shared/projection.service.mjs +64 -64
- package/esm2020/lib/map/shared/projection.utils.mjs +63 -63
- package/esm2020/lib/map/swipe-control/index.mjs +1 -1
- package/esm2020/lib/map/swipe-control/swipe-control.component.mjs +192 -192
- package/esm2020/lib/map/utils/layer-watcher.mjs +78 -78
- package/esm2020/lib/map/wake-lock-button/index.mjs +1 -1
- package/esm2020/lib/map/wake-lock-button/wake-lock-button.component.mjs +113 -113
- package/esm2020/lib/map/zoom-button/index.mjs +1 -1
- package/esm2020/lib/map/zoom-button/zoom-button.component.mjs +39 -39
- package/esm2020/lib/measure/index.mjs +3 -3
- package/esm2020/lib/measure/measure.module.mjs +19 -19
- package/esm2020/lib/measure/measurer/measure-format.pipe.mjs +36 -36
- package/esm2020/lib/measure/measurer/measurer-dialog.component.mjs +179 -179
- package/esm2020/lib/measure/measurer/measurer-item.component.mjs +139 -139
- package/esm2020/lib/measure/measurer/measurer.component.mjs +1041 -1041
- package/esm2020/lib/measure/measurer/measurer.module.mjs +93 -93
- package/esm2020/lib/measure/shared/index.mjs +3 -3
- package/esm2020/lib/measure/shared/measure.enum.mjs +36 -36
- package/esm2020/lib/measure/shared/measure.interfaces.mjs +1 -1
- package/esm2020/lib/measure/shared/measure.utils.mjs +488 -488
- package/esm2020/lib/metadata/index.mjs +2 -2
- package/esm2020/lib/metadata/metadata-button/index.mjs +1 -1
- package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +133 -133
- package/esm2020/lib/metadata/metadata.module.mjs +54 -54
- package/esm2020/lib/metadata/shared/index.mjs +2 -2
- package/esm2020/lib/metadata/shared/metadata.interface.mjs +1 -1
- package/esm2020/lib/metadata/shared/metadata.service.mjs +18 -18
- package/esm2020/lib/offline/geoDB/configFileToGeoDB.service.mjs +104 -104
- package/esm2020/lib/offline/geoDB/geoDB.enums.mjs +5 -5
- package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +1 -1
- package/esm2020/lib/offline/geoDB/geoDB.service.mjs +166 -166
- package/esm2020/lib/offline/geoDB/index.mjs +4 -4
- package/esm2020/lib/offline/index.mjs +2 -2
- package/esm2020/lib/offline/shared/geo-network.service.mjs +65 -65
- package/esm2020/lib/offline/shared/index.mjs +1 -1
- package/esm2020/lib/overlay/index.mjs +1 -1
- package/esm2020/lib/overlay/overlay.module.mjs +22 -22
- package/esm2020/lib/overlay/shared/index.mjs +6 -6
- package/esm2020/lib/overlay/shared/overlay-marker-style.utils.mjs +68 -68
- package/esm2020/lib/overlay/shared/overlay.directive.mjs +32 -32
- package/esm2020/lib/overlay/shared/overlay.enum.mjs +7 -7
- package/esm2020/lib/overlay/shared/overlay.mjs +129 -129
- package/esm2020/lib/overlay/shared/overlay.service.mjs +26 -26
- package/esm2020/lib/overlay/shared/overlay.utils.mjs +102 -102
- package/esm2020/lib/print/index.mjs +3 -3
- package/esm2020/lib/print/print/print.component.mjs +126 -123
- package/esm2020/lib/print/print-form/index.mjs +1 -1
- package/esm2020/lib/print/print-form/print-form.component.mjs +428 -405
- package/esm2020/lib/print/print.module.mjs +64 -64
- package/esm2020/lib/print/shared/geopdf.mjs +57 -57
- package/esm2020/lib/print/shared/index.mjs +4 -4
- package/esm2020/lib/print/shared/print.interface.mjs +1 -1
- package/esm2020/lib/print/shared/print.service.mjs +934 -861
- package/esm2020/lib/print/shared/print.type.mjs +29 -29
- package/esm2020/lib/query/index.mjs +1 -1
- package/esm2020/lib/query/query.module.mjs +28 -28
- package/esm2020/lib/query/shared/index.mjs +6 -6
- package/esm2020/lib/query/shared/query-search-source.mjs +34 -34
- package/esm2020/lib/query/shared/query-search-source.providers.mjs +21 -21
- package/esm2020/lib/query/shared/query.directive.mjs +260 -260
- package/esm2020/lib/query/shared/query.enums.mjs +29 -29
- package/esm2020/lib/query/shared/query.interfaces.mjs +2 -2
- package/esm2020/lib/query/shared/query.service.mjs +733 -619
- package/esm2020/lib/query/shared/query.utils.mjs +36 -36
- package/esm2020/lib/search/index.mjs +11 -11
- package/esm2020/lib/search/search-bar/search-bar.component.mjs +512 -493
- package/esm2020/lib/search/search-bar/search-bar.module.mjs +74 -74
- package/esm2020/lib/search/search-bar/search-url-param.directive.mjs +34 -34
- package/esm2020/lib/search/search-results/save-feature-dialog.component.mjs +118 -0
- package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +371 -193
- package/esm2020/lib/search/search-results/search-results-item.component.mjs +124 -124
- package/esm2020/lib/search/search-results/search-results.component.mjs +340 -340
- package/esm2020/lib/search/search-results/search-results.module.mjs +104 -77
- package/esm2020/lib/search/search-selector/search-selector.component.mjs +122 -122
- package/esm2020/lib/search/search-selector/search-selector.module.mjs +55 -55
- package/esm2020/lib/search/search-settings/search-settings.component.mjs +442 -418
- package/esm2020/lib/search/search-settings/search-settings.module.mjs +59 -59
- package/esm2020/lib/search/search.module.mjs +66 -66
- package/esm2020/lib/search/shared/index.mjs +8 -8
- package/esm2020/lib/search/shared/search-pointer-summary.directive.mjs +321 -321
- package/esm2020/lib/search/shared/search-source-service.providers.mjs +19 -19
- package/esm2020/lib/search/shared/search-source.service.mjs +46 -46
- package/esm2020/lib/search/shared/search.enums.mjs +3 -3
- package/esm2020/lib/search/shared/search.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/search.service.mjs +121 -118
- package/esm2020/lib/search/shared/search.utils.mjs +90 -90
- package/esm2020/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/coordinates.mjs +153 -147
- package/esm2020/lib/search/shared/sources/coordinates.providers.mjs +39 -39
- package/esm2020/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/icherche.mjs +767 -767
- package/esm2020/lib/search/shared/sources/icherche.providers.mjs +65 -65
- package/esm2020/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/ilayer.mjs +320 -320
- package/esm2020/lib/search/shared/sources/ilayer.providers.mjs +39 -39
- package/esm2020/lib/search/shared/sources/index.mjs +17 -17
- package/esm2020/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/nominatim.mjs +251 -251
- package/esm2020/lib/search/shared/sources/nominatim.providers.mjs +22 -22
- package/esm2020/lib/search/shared/sources/source.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/source.mjs +179 -179
- package/esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/storedqueries.mjs +424 -424
- package/esm2020/lib/search/shared/sources/storedqueries.providers.mjs +40 -40
- package/esm2020/lib/toast/index.mjs +1 -1
- package/esm2020/lib/toast/toast.component.mjs +112 -112
- package/esm2020/lib/toast/toast.module.mjs +44 -44
- package/esm2020/lib/utils/commonVectorStyle.interface.mjs +1 -1
- package/esm2020/lib/utils/commonVectorStyle.mjs +74 -74
- package/esm2020/lib/utils/googleLinks.mjs +12 -12
- package/esm2020/lib/utils/id-generator.mjs +109 -109
- package/esm2020/lib/utils/index.mjs +5 -5
- package/esm2020/lib/utils/osmLinks.mjs +9 -9
- package/esm2020/lib/wkt/index.mjs +1 -1
- package/esm2020/lib/wkt/shared/index.mjs +1 -1
- package/esm2020/lib/wkt/shared/wkt.service.mjs +224 -224
- package/esm2020/lib/wkt/wkt.module.mjs +21 -21
- package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +47 -47
- package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +35 -35
- package/esm2020/lib/workspace/confirmation-popup/index.mjs +2 -2
- package/esm2020/lib/workspace/index.mjs +7 -7
- package/esm2020/lib/workspace/shared/edition-workspace.mjs +279 -279
- package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +656 -656
- package/esm2020/lib/workspace/shared/feature-workspace.mjs +34 -34
- package/esm2020/lib/workspace/shared/feature-workspace.service.mjs +149 -149
- package/esm2020/lib/workspace/shared/index.mjs +7 -7
- package/esm2020/lib/workspace/shared/wfs-workspace.mjs +34 -34
- package/esm2020/lib/workspace/shared/wfs-workspace.service.mjs +149 -149
- package/esm2020/lib/workspace/shared/wms-workspace.service.mjs +259 -259
- package/esm2020/lib/workspace/shared/workspace.utils.mjs +23 -23
- package/esm2020/lib/workspace/widgets/index.mjs +3 -3
- package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +46 -46
- package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +35 -35
- package/esm2020/lib/workspace/widgets/widgets.mjs +14 -14
- package/esm2020/lib/workspace/workspace-selector/workspace-selector.directive.mjs +132 -132
- package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +27 -27
- package/esm2020/lib/workspace/workspace-updator/workspace-updator.directive.mjs +112 -112
- package/esm2020/lib/workspace/workspace-updator/workspace-updator.module.mjs +27 -27
- package/esm2020/lib/workspace/workspace.module.mjs +61 -61
- package/esm2020/public_api.mjs +54 -54
- package/fesm2015/igo2-geo.mjs +44993 -44364
- package/fesm2015/igo2-geo.mjs.map +1 -1
- package/fesm2020/igo2-geo.mjs +43075 -42470
- package/fesm2020/igo2-geo.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +126 -124
- package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +80 -73
- package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +105 -105
- package/lib/catalog/catalog-browser/catalog-browser.module.d.ts +22 -22
- package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +45 -45
- package/lib/catalog/catalog-library/catalog-library-item.component.d.ts +25 -25
- package/lib/catalog/catalog-library/catalog-library.component.d.ts +65 -65
- package/lib/catalog/catalog-library/catalog-library.module.d.ts +26 -26
- package/lib/catalog/catalog.module.d.ts +14 -14
- package/lib/catalog/index.d.ts +4 -4
- package/lib/catalog/shared/catalog.abstract.d.ts +50 -50
- package/lib/catalog/shared/catalog.enum.d.ts +14 -14
- package/lib/catalog/shared/catalog.interface.d.ts +66 -66
- package/lib/catalog/shared/catalog.service.d.ts +36 -36
- package/lib/catalog/shared/index.d.ts +4 -4
- package/lib/datasource/datasource.module.d.ts +8 -8
- package/lib/datasource/index.d.ts +2 -2
- package/lib/datasource/shared/capabilities.service.d.ts +37 -37
- package/lib/datasource/shared/datasource.service.d.ts +37 -37
- package/lib/datasource/shared/datasources/any-datasource.d.ts +16 -16
- package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +15 -15
- package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +14 -14
- package/lib/datasource/shared/datasources/arcgisrest-datasource.interface.d.ts +14 -14
- package/lib/datasource/shared/datasources/carto-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/carto-datasource.interface.d.ts +13 -13
- package/lib/datasource/shared/datasources/cluster-datasource.d.ts +10 -10
- package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +11 -11
- package/lib/datasource/shared/datasources/data.service.d.ts +3 -3
- package/lib/datasource/shared/datasources/datasource.d.ts +20 -20
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +100 -100
- package/lib/datasource/shared/datasources/feature-datasource.d.ts +12 -12
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +18 -18
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +15 -15
- package/lib/datasource/shared/datasources/index.d.ts +35 -35
- package/lib/datasource/shared/datasources/mvt-datasource.d.ts +10 -10
- package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +13 -13
- package/lib/datasource/shared/datasources/osm-datasource.d.ts +9 -9
- package/lib/datasource/shared/datasources/osm-datasource.interface.d.ts +7 -7
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.d.ts +14 -14
- package/lib/datasource/shared/datasources/tiledebug-datasource.d.ts +9 -9
- package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +9 -9
- package/lib/datasource/shared/datasources/websocket-datasource.d.ts +15 -15
- package/lib/datasource/shared/datasources/websocket-datasource.interface.d.ts +7 -7
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +20 -20
- package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +20 -20
- package/lib/datasource/shared/datasources/wfs.service.d.ts +17 -17
- package/lib/datasource/shared/datasources/wms-datasource.d.ts +31 -31
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +32 -32
- package/lib/datasource/shared/datasources/wms-wfs.utils.d.ts +41 -41
- package/lib/datasource/shared/datasources/wmts-datasource.d.ts +10 -10
- package/lib/datasource/shared/datasources/wmts-datasource.interface.d.ts +13 -13
- package/lib/datasource/shared/datasources/xyz-datasource.d.ts +9 -9
- package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +11 -11
- package/lib/datasource/shared/index.d.ts +4 -4
- package/lib/datasource/shared/options/index.d.ts +4 -4
- package/lib/datasource/shared/options/options-api.interface.d.ts +4 -4
- package/lib/datasource/shared/options/options-api.providers.d.ts +10 -10
- package/lib/datasource/shared/options/options-api.service.d.ts +16 -16
- package/lib/datasource/shared/options/options.service.d.ts +6 -6
- package/lib/datasource/utils/esri-style-generator.d.ts +21 -21
- package/lib/datasource/utils/index.d.ts +2 -2
- package/lib/datasource/utils/tilegrid.d.ts +2 -2
- package/lib/directions/directions-buttons/directions-buttons.component.d.ts +30 -30
- package/lib/directions/directions-buttons/index.d.ts +1 -1
- package/lib/directions/directions-inputs/directions-inputs.component.d.ts +45 -45
- package/lib/directions/directions-inputs/index.d.ts +1 -1
- package/lib/directions/directions-results/directions-results.component.d.ts +30 -30
- package/lib/directions/directions-results/index.d.ts +1 -1
- package/lib/directions/directions-sources/directions-source.d.ts +7 -7
- package/lib/directions/directions-sources/directions-source.interface.d.ts +11 -11
- package/lib/directions/directions-sources/directions-source.provider.d.ts +11 -11
- package/lib/directions/directions-sources/index.d.ts +4 -4
- package/lib/directions/directions-sources/osrm-directions-source.d.ts +23 -23
- package/lib/directions/directions.component.d.ts +56 -56
- package/lib/directions/directions.module.d.ts +26 -26
- package/lib/directions/index.d.ts +6 -6
- package/lib/directions/shared/directions-source.service.d.ts +11 -11
- package/lib/directions/shared/directions.enum.d.ts +22 -22
- package/lib/directions/shared/directions.interface.d.ts +126 -126
- package/lib/directions/shared/directions.service.d.ts +13 -13
- package/lib/directions/shared/directions.utils.d.ts +42 -42
- package/lib/directions/shared/index.d.ts +5 -5
- package/lib/directions/shared/store.d.ts +18 -18
- package/lib/download/download-button/download-button.component.d.ts +18 -18
- package/lib/download/download-button/index.d.ts +1 -1
- package/lib/download/download.module.d.ts +14 -14
- package/lib/download/index.d.ts +2 -2
- package/lib/download/shared/download.interface.d.ts +10 -10
- package/lib/download/shared/download.service.d.ts +11 -11
- package/lib/download/shared/index.d.ts +2 -2
- package/lib/draw/draw/draw-layer-popup.component.d.ts +14 -14
- package/lib/draw/draw/draw-popup.component.d.ts +63 -63
- package/lib/draw/draw/draw-shorcuts.component.d.ts +5 -5
- package/lib/draw/draw/draw.component.d.ts +239 -239
- package/lib/draw/draw/draw.module.d.ts +34 -34
- package/lib/draw/drawingTool.module.d.ts +7 -7
- package/lib/draw/index.d.ts +2 -2
- package/lib/draw/shared/draw-icon.service.d.ts +12 -12
- package/lib/draw/shared/draw-style.service.d.ts +36 -36
- package/lib/draw/shared/draw.enum.d.ts +32 -32
- package/lib/draw/shared/draw.interface.d.ts +40 -40
- package/lib/draw/shared/draw.utils.d.ts +35 -35
- package/lib/draw/shared/index.d.ts +5 -5
- package/lib/feature/feature-details/feature-details.component.d.ts +60 -60
- package/lib/feature/feature-details/feature-details.directive.d.ts +19 -19
- package/lib/feature/feature-details/feature-details.module.d.ts +15 -15
- package/lib/feature/feature-form/feature-form.component.d.ts +50 -50
- package/lib/feature/feature-form/feature-form.module.d.ts +12 -12
- package/lib/feature/feature.module.d.ts +9 -9
- package/lib/feature/index.d.ts +3 -3
- package/lib/feature/shared/feature.enums.d.ts +7 -7
- package/lib/feature/shared/feature.interfaces.d.ts +74 -74
- package/lib/feature/shared/feature.utils.d.ts +104 -104
- package/lib/feature/shared/index.d.ts +6 -6
- package/lib/feature/shared/store.d.ts +71 -71
- package/lib/feature/shared/strategies/in-map-extent.d.ts +52 -52
- package/lib/feature/shared/strategies/in-map-resolution.d.ts +52 -52
- package/lib/feature/shared/strategies/index.d.ts +5 -5
- package/lib/feature/shared/strategies/loading-layer.d.ts +59 -59
- package/lib/feature/shared/strategies/loading.d.ts +75 -75
- package/lib/feature/shared/strategies/selection.d.ts +176 -176
- package/lib/feature/shared/strategies.utils.d.ts +17 -17
- package/lib/filter/filter.module.d.ts +53 -53
- package/lib/filter/index.d.ts +15 -15
- package/lib/filter/ogc-filter-button/index.d.ts +1 -1
- package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +20 -20
- package/lib/filter/ogc-filter-form/index.d.ts +1 -1
- package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +65 -65
- package/lib/filter/ogc-filter-selection/index.d.ts +1 -1
- package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +93 -93
- package/lib/filter/ogc-filter-time/index.d.ts +2 -2
- package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +39 -39
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +86 -86
- package/lib/filter/ogc-filterable-form/index.d.ts +1 -1
- package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +15 -15
- package/lib/filter/ogc-filterable-item/index.d.ts +1 -1
- package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +41 -41
- package/lib/filter/ogc-filterable-list/index.d.ts +2 -2
- package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +14 -14
- package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +10 -10
- package/lib/filter/shared/filterable-datasource.pipe.d.ts +10 -10
- package/lib/filter/shared/index.d.ts +11 -11
- package/lib/filter/shared/ogc-filter-time.service.d.ts +19 -19
- package/lib/filter/shared/ogc-filter.d.ts +29 -29
- package/lib/filter/shared/ogc-filter.enum.d.ts +27 -27
- package/lib/filter/shared/ogc-filter.interface.d.ts +200 -200
- package/lib/filter/shared/ogc-filter.service.d.ts +11 -11
- package/lib/filter/shared/spatial-filter.enum.d.ts +19 -19
- package/lib/filter/shared/spatial-filter.interface.d.ts +10 -10
- package/lib/filter/shared/spatial-filter.service.d.ts +37 -37
- package/lib/filter/shared/time-filter.enum.d.ts +10 -10
- package/lib/filter/shared/time-filter.interface.d.ts +29 -29
- package/lib/filter/shared/time-filter.service.d.ts +11 -11
- package/lib/filter/spatial-filter/spatial-filter-item/index.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +166 -166
- package/lib/filter/spatial-filter/spatial-filter-list/index.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +58 -58
- package/lib/filter/spatial-filter/spatial-filter-type/index.d.ts +1 -1
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +45 -45
- package/lib/filter/time-filter-button/index.d.ts +1 -1
- package/lib/filter/time-filter-button/time-filter-button.component.d.ts +20 -20
- package/lib/filter/time-filter-form/index.d.ts +1 -1
- package/lib/filter/time-filter-form/time-filter-form.component.d.ts +77 -77
- package/lib/filter/time-filter-item/index.d.ts +1 -1
- package/lib/filter/time-filter-item/time-filter-item.component.d.ts +28 -28
- package/lib/filter/time-filter-list/index.d.ts +2 -2
- package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +14 -14
- package/lib/filter/time-filter-list/time-filter-list.component.d.ts +12 -12
- package/lib/geo.module.d.ts +28 -28
- package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +206 -206
- package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +88 -88
- package/lib/geometry/geometry-form-field/geometry-form-field.module.d.ts +19 -19
- package/lib/geometry/geometry.module.d.ts +8 -8
- package/lib/geometry/index.d.ts +3 -3
- package/lib/geometry/shared/controls/draw.d.ts +150 -150
- package/lib/geometry/shared/controls/index.d.ts +3 -3
- package/lib/geometry/shared/controls/modify.d.ts +228 -228
- package/lib/geometry/shared/controls/slice.d.ts +99 -99
- package/lib/geometry/shared/geometry.errors.d.ts +11 -11
- package/lib/geometry/shared/geometry.interfaces.d.ts +13 -13
- package/lib/geometry/shared/geometry.utils.d.ts +45 -45
- package/lib/geometry/shared/index.d.ts +4 -4
- package/lib/import-export/export-button/export-button.component.d.ts +16 -16
- package/lib/import-export/export-button/index.d.ts +1 -1
- package/lib/import-export/import-export/import-export.component.d.ts +104 -104
- package/lib/import-export/import-export/index.d.ts +1 -1
- package/lib/import-export/import-export.module.d.ts +26 -26
- package/lib/import-export/index.d.ts +4 -4
- package/lib/import-export/shared/drop-geo-file.directive.d.ts +36 -36
- package/lib/import-export/shared/export.errors.d.ts +8 -8
- package/lib/import-export/shared/export.interface.d.ts +11 -11
- package/lib/import-export/shared/export.service.d.ts +30 -30
- package/lib/import-export/shared/export.type.d.ts +16 -16
- package/lib/import-export/shared/export.utils.d.ts +19 -19
- package/lib/import-export/shared/import.errors.d.ts +20 -20
- package/lib/import-export/shared/import.interface.d.ts +8 -8
- package/lib/import-export/shared/import.service.d.ts +31 -31
- package/lib/import-export/shared/import.utils.d.ts +18 -18
- package/lib/import-export/shared/index.d.ts +10 -10
- package/lib/import-export/style-list/index.d.ts +4 -4
- package/lib/import-export/style-list/style-list.interface.d.ts +6 -6
- package/lib/import-export/style-list/style-list.module.d.ts +8 -8
- package/lib/import-export/style-list/style-list.provider.d.ts +15 -15
- package/lib/import-export/style-list/style-list.service.d.ts +18 -18
- package/lib/layer/index.d.ts +10 -10
- package/lib/layer/layer-item/index.d.ts +1 -1
- package/lib/layer/layer-item/layer-item.component.d.ts +62 -62
- package/lib/layer/layer-legend/index.d.ts +1 -1
- package/lib/layer/layer-legend/layer-legend.component.d.ts +90 -90
- package/lib/layer/layer-legend-item/index.d.ts +1 -1
- package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +22 -22
- package/lib/layer/layer-legend-list/index.d.ts +2 -2
- package/lib/layer/layer-legend-list/layer-legend-list-binding.directive.d.ts +16 -16
- package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +31 -31
- package/lib/layer/layer-list/index.d.ts +3 -3
- package/lib/layer/layer-list/layer-list-binding.directive.d.ts +19 -19
- package/lib/layer/layer-list/layer-list.component.d.ts +127 -127
- package/lib/layer/layer-list/layer-list.enum.d.ts +15 -15
- package/lib/layer/layer-list-tool/index.d.ts +4 -4
- package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +32 -32
- package/lib/layer/layer-list-tool/layer-list-tool.enum.d.ts +5 -5
- package/lib/layer/layer-list-tool/layer-list-tool.interface.d.ts +8 -8
- package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +14 -14
- package/lib/layer/layer.module.d.ts +36 -36
- package/lib/layer/shared/clusterParam.d.ts +13 -13
- package/lib/layer/shared/index.d.ts +6 -6
- package/lib/layer/shared/layer.enums.d.ts +1 -1
- package/lib/layer/shared/layer.service.d.ts +30 -30
- package/lib/layer/shared/layers/any-layer.d.ts +6 -6
- package/lib/layer/shared/layers/any-layer.interface.d.ts +6 -6
- package/lib/layer/shared/layers/image-layer.d.ts +22 -22
- package/lib/layer/shared/layers/image-layer.interface.d.ts +19 -19
- package/lib/layer/shared/layers/index.d.ts +12 -12
- package/lib/layer/shared/layers/layer.d.ts +62 -62
- package/lib/layer/shared/layers/layer.interface.d.ts +109 -107
- package/lib/layer/shared/layers/tile-layer.d.ts +31 -31
- package/lib/layer/shared/layers/tile-layer.interface.d.ts +20 -20
- package/lib/layer/shared/layers/vector-layer.d.ts +78 -78
- package/lib/layer/shared/layers/vector-layer.interface.d.ts +41 -41
- package/lib/layer/shared/layers/vectortile-layer.d.ts +28 -28
- package/lib/layer/shared/layers/vectortile-layer.interface.d.ts +18 -18
- package/lib/layer/shared/style.service.d.ts +57 -57
- package/lib/layer/shared/vector-style.interface.d.ts +38 -38
- package/lib/layer/style-modal/index.d.ts +1 -1
- package/lib/layer/style-modal/style-modal.component.d.ts +42 -42
- package/lib/layer/track-feature-button/index.d.ts +1 -1
- package/lib/layer/track-feature-button/track-feature-button.component.d.ts +15 -15
- package/lib/layer/utils/image-watcher.d.ts +17 -17
- package/lib/layer/utils/index.d.ts +5 -5
- package/lib/layer/utils/layer.utils.d.ts +2 -2
- package/lib/layer/utils/outputLegend.d.ts +7 -7
- package/lib/layer/utils/tile-watcher.d.ts +14 -14
- package/lib/layer/utils/vector-watcher.d.ts +13 -13
- package/lib/map/baselayers-switcher/baselayers-switcher.animation.d.ts +2 -2
- package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +21 -21
- package/lib/map/baselayers-switcher/index.d.ts +2 -2
- package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +29 -26
- package/lib/map/geolocate-button/geolocate-button.component.d.ts +22 -22
- package/lib/map/geolocate-button/index.d.ts +1 -1
- package/lib/map/home-extent-button/home-extent-button.component.d.ts +20 -20
- package/lib/map/home-extent-button/index.d.ts +1 -1
- package/lib/map/index.d.ts +13 -13
- package/lib/map/info-section/index.d.ts +1 -1
- package/lib/map/info-section/info-section.component.d.ts +7 -7
- package/lib/map/map-browser/index.d.ts +1 -1
- package/lib/map/map-browser/map-browser.component.d.ts +25 -25
- package/lib/map/map-center/index.d.ts +1 -1
- package/lib/map/map-center/map-center.component.d.ts +31 -31
- package/lib/map/map.module.d.ts +28 -28
- package/lib/map/menu-button/index.d.ts +1 -1
- package/lib/map/menu-button/menu-button.component.d.ts +17 -17
- package/lib/map/offline-button/index.d.ts +1 -1
- package/lib/map/offline-button/offline-button.component.d.ts +23 -23
- package/lib/map/rotation-button/index.d.ts +1 -1
- package/lib/map/rotation-button/rotation-button.component.d.ts +17 -17
- package/lib/map/shared/controllers/controller.d.ts +29 -29
- package/lib/map/shared/controllers/geolocation.d.ts +112 -112
- package/lib/map/shared/controllers/index.d.ts +3 -3
- package/lib/map/shared/controllers/view.d.ts +200 -200
- package/lib/map/shared/hover-feature.directive.d.ts +132 -132
- package/lib/map/shared/index.d.ts +13 -13
- package/lib/map/shared/linkedLayers.utils.d.ts +17 -17
- package/lib/map/shared/map-pointer-position.directive.d.ts +71 -71
- package/lib/map/shared/map.d.ts +135 -135
- package/lib/map/shared/map.enums.d.ts +4 -4
- package/lib/map/shared/map.interface.d.ts +57 -57
- package/lib/map/shared/map.service.d.ts +19 -19
- package/lib/map/shared/map.utils.d.ts +90 -89
- package/lib/map/shared/mapOffline.directive.d.ts +21 -21
- package/lib/map/shared/projection.interfaces.d.ts +29 -29
- package/lib/map/shared/projection.service.d.ts +19 -19
- package/lib/map/shared/projection.utils.d.ts +19 -19
- package/lib/map/swipe-control/index.d.ts +1 -1
- package/lib/map/swipe-control/swipe-control.component.d.ts +97 -97
- package/lib/map/utils/layer-watcher.d.ts +20 -20
- package/lib/map/wake-lock-button/index.d.ts +1 -1
- package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +30 -30
- package/lib/map/zoom-button/index.d.ts +1 -1
- package/lib/map/zoom-button/zoom-button.component.d.ts +12 -12
- package/lib/measure/index.d.ts +3 -3
- package/lib/measure/measure.module.d.ts +7 -7
- package/lib/measure/measurer/measure-format.pipe.d.ts +15 -15
- package/lib/measure/measurer/measurer-dialog.component.d.ts +14 -14
- package/lib/measure/measurer/measurer-item.component.d.ts +66 -66
- package/lib/measure/measurer/measurer.component.d.ts +405 -405
- package/lib/measure/measurer/measurer.module.d.ts +25 -25
- package/lib/measure/shared/index.d.ts +3 -3
- package/lib/measure/shared/measure.enum.d.ts +33 -33
- package/lib/measure/shared/measure.interfaces.d.ts +21 -21
- package/lib/measure/shared/measure.utils.d.ts +180 -180
- package/lib/metadata/index.d.ts +2 -2
- package/lib/metadata/metadata-button/index.d.ts +1 -1
- package/lib/metadata/metadata-button/metadata-button.component.d.ts +26 -26
- package/lib/metadata/metadata.module.d.ts +15 -15
- package/lib/metadata/shared/index.d.ts +2 -2
- package/lib/metadata/shared/metadata.interface.d.ts +13 -13
- package/lib/metadata/shared/metadata.service.d.ts +8 -8
- package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +14 -14
- package/lib/offline/geoDB/geoDB.enums.d.ts +4 -4
- package/lib/offline/geoDB/geoDB.interface.d.ts +19 -19
- package/lib/offline/geoDB/geoDB.service.d.ts +37 -37
- package/lib/offline/geoDB/index.d.ts +4 -4
- package/lib/offline/index.d.ts +2 -2
- package/lib/offline/shared/geo-network.service.d.ts +28 -28
- package/lib/offline/shared/index.d.ts +1 -1
- package/lib/overlay/index.d.ts +1 -1
- package/lib/overlay/overlay.module.d.ts +9 -9
- package/lib/overlay/shared/index.d.ts +6 -6
- package/lib/overlay/shared/overlay-marker-style.utils.d.ts +11 -11
- package/lib/overlay/shared/overlay.d.ts +81 -81
- package/lib/overlay/shared/overlay.directive.d.ts +18 -18
- package/lib/overlay/shared/overlay.enum.d.ts +6 -6
- package/lib/overlay/shared/overlay.service.d.ts +14 -14
- package/lib/overlay/shared/overlay.utils.d.ts +17 -17
- package/lib/print/index.d.ts +3 -3
- package/lib/print/print/print.component.d.ts +35 -35
- package/lib/print/print-form/index.d.ts +1 -1
- package/lib/print/print-form/print-form.component.d.ts +97 -97
- package/lib/print/print.module.d.ts +19 -19
- package/lib/print/shared/geopdf.d.ts +1 -1
- package/lib/print/shared/index.d.ts +4 -4
- package/lib/print/shared/print.interface.d.ts +22 -22
- package/lib/print/shared/print.service.d.ts +168 -159
- package/lib/print/shared/print.type.d.ts +45 -45
- package/lib/query/index.d.ts +1 -1
- package/lib/query/query.module.d.ts +11 -11
- package/lib/query/shared/index.d.ts +6 -6
- package/lib/query/shared/query-search-source.d.ts +17 -17
- package/lib/query/shared/query-search-source.providers.d.ts +17 -17
- package/lib/query/shared/query.directive.d.ts +105 -105
- package/lib/query/shared/query.enums.d.ts +26 -26
- package/lib/query/shared/query.interfaces.d.ts +35 -28
- package/lib/query/shared/query.service.d.ts +56 -54
- package/lib/query/shared/query.utils.d.ts +27 -27
- package/lib/search/index.d.ts +11 -11
- package/lib/search/search-bar/search-bar.component.d.ts +230 -220
- package/lib/search/search-bar/search-bar.module.d.ts +23 -23
- package/lib/search/search-bar/search-url-param.directive.d.ts +13 -13
- package/lib/search/search-results/save-feature-dialog.component.d.ts +32 -0
- package/lib/search/search-results/search-results-add-button.component.d.ts +76 -58
- package/lib/search/search-results/search-results-item.component.d.ts +47 -48
- package/lib/search/search-results/search-results.component.d.ts +161 -161
- package/lib/search/search-results/search-results.module.d.ts +28 -21
- package/lib/search/search-selector/search-selector.component.d.ts +58 -58
- package/lib/search/search-selector/search-selector.module.d.ts +19 -19
- package/lib/search/search-settings/search-settings.component.d.ts +102 -96
- package/lib/search/search-settings/search-settings.module.d.ts +20 -20
- package/lib/search/search.module.d.ts +14 -14
- package/lib/search/shared/index.d.ts +8 -8
- package/lib/search/shared/search-pointer-summary.directive.d.ts +133 -133
- package/lib/search/shared/search-source-service.providers.d.ts +15 -15
- package/lib/search/shared/search-source.service.d.ts +32 -32
- package/lib/search/shared/search.enums.d.ts +1 -1
- package/lib/search/shared/search.interfaces.d.ts +29 -29
- package/lib/search/shared/search.service.d.ts +53 -51
- package/lib/search/shared/search.utils.d.ts +39 -39
- package/lib/search/shared/sources/coordinates.d.ts +40 -40
- package/lib/search/shared/sources/coordinates.interfaces.d.ts +12 -12
- package/lib/search/shared/sources/coordinates.providers.d.ts +31 -31
- package/lib/search/shared/sources/icherche.d.ts +96 -96
- package/lib/search/shared/sources/icherche.interfaces.d.ts +30 -30
- package/lib/search/shared/sources/icherche.providers.d.ts +46 -46
- package/lib/search/shared/sources/ilayer.d.ts +55 -55
- package/lib/search/shared/sources/ilayer.interfaces.d.ts +47 -47
- package/lib/search/shared/sources/ilayer.providers.d.ts +31 -31
- package/lib/search/shared/sources/index.d.ts +17 -17
- package/lib/search/shared/sources/nominatim.d.ts +45 -45
- package/lib/search/shared/sources/nominatim.interfaces.d.ts +10 -10
- package/lib/search/shared/sources/nominatim.providers.d.ts +18 -18
- package/lib/search/shared/sources/source.d.ts +108 -108
- package/lib/search/shared/sources/source.interfaces.d.ts +47 -47
- package/lib/search/shared/sources/storedqueries.d.ts +73 -73
- package/lib/search/shared/sources/storedqueries.interfaces.d.ts +42 -42
- package/lib/search/shared/sources/storedqueries.providers.d.ts +32 -32
- package/lib/toast/index.d.ts +1 -1
- package/lib/toast/toast.component.d.ts +33 -33
- package/lib/toast/toast.module.d.ts +14 -14
- package/lib/utils/commonVectorStyle.d.ts +14 -14
- package/lib/utils/commonVectorStyle.interface.d.ts +16 -16
- package/lib/utils/googleLinks.d.ts +5 -5
- package/lib/utils/id-generator.d.ts +54 -54
- package/lib/utils/index.d.ts +5 -5
- package/lib/utils/osmLinks.d.ts +4 -4
- package/lib/wkt/index.d.ts +1 -1
- package/lib/wkt/shared/index.d.ts +1 -1
- package/lib/wkt/shared/wkt.service.d.ts +19 -19
- package/lib/wkt/wkt.module.d.ts +8 -8
- package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +23 -23
- package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +14 -14
- package/lib/workspace/confirmation-popup/index.d.ts +2 -2
- package/lib/workspace/index.d.ts +7 -7
- package/lib/workspace/shared/edition-workspace.d.ts +82 -82
- package/lib/workspace/shared/edition-workspace.service.d.ts +52 -52
- package/lib/workspace/shared/feature-workspace.d.ts +18 -18
- package/lib/workspace/shared/feature-workspace.service.d.ts +19 -19
- package/lib/workspace/shared/index.d.ts +7 -7
- package/lib/workspace/shared/wfs-workspace.d.ts +18 -18
- package/lib/workspace/shared/wfs-workspace.service.d.ts +19 -19
- package/lib/workspace/shared/wms-workspace.service.d.ts +22 -22
- package/lib/workspace/shared/workspace.utils.d.ts +10 -10
- package/lib/workspace/widgets/index.d.ts +3 -3
- package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +29 -29
- package/lib/workspace/widgets/ogc-filter/ogc-filter.module.d.ts +14 -14
- package/lib/workspace/widgets/widgets.d.ts +9 -9
- package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +32 -32
- package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +11 -11
- package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +26 -26
- package/lib/workspace/workspace-updator/workspace-updator.module.d.ts +11 -11
- package/lib/workspace/workspace.module.d.ts +14 -14
- package/package.json +4 -4
- package/public_api.d.ts +51 -51
|
@@ -1,509 +1,509 @@
|
|
|
1
|
-
import olFeature from 'ol/Feature';
|
|
2
|
-
import * as olStyle from 'ol/style';
|
|
3
|
-
import * as olGeom from 'ol/geom';
|
|
4
|
-
import OlGeoJSON from 'ol/format/GeoJSON';
|
|
5
|
-
import * as olProj from 'ol/proj';
|
|
6
|
-
import { uuid, NumberUtils } from '@igo2/utils';
|
|
7
|
-
import { createOverlayMarkerStyle } from '../../overlay/shared/overlay-marker-style.utils';
|
|
8
|
-
import { VectorLayer } from '../../layer/shared/layers/vector-layer';
|
|
9
|
-
import { FeatureDataSource } from '../../datasource/shared/datasources/feature-datasource';
|
|
10
|
-
import { tryBindStoreLayer } from '../../feature/shared/feature.utils';
|
|
11
|
-
import { tryAddLoadingStrategy } from '../../feature/shared/strategies.utils';
|
|
12
|
-
import { FeatureStoreLoadingStrategy } from '../../feature/shared/strategies/loading';
|
|
13
|
-
import { FEATURE, FeatureMotion } from '../../feature/shared/feature.enums';
|
|
14
|
-
import { DirectionRelativePositionType, DirectionType } from './directions.enum';
|
|
15
|
-
/**
|
|
16
|
-
* Function that updat the sort of the list base on the provided field.
|
|
17
|
-
* @param source stop store
|
|
18
|
-
* @param direction asc / desc sort order
|
|
19
|
-
* @param field the field to use to sort the view
|
|
20
|
-
*/
|
|
21
|
-
export function updateStoreSorting(stopsStore, direction = 'asc', field = 'position') {
|
|
22
|
-
stopsStore.view.sort({
|
|
23
|
-
direction,
|
|
24
|
-
valueAccessor: (entity) => entity[field]
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
export function computeRelativePosition(index, totalLength) {
|
|
28
|
-
let relativePosition = DirectionRelativePositionType.Intermediate;
|
|
29
|
-
if (index === 0) {
|
|
30
|
-
relativePosition = DirectionRelativePositionType.Start;
|
|
31
|
-
}
|
|
32
|
-
else if (index === totalLength - 1) {
|
|
33
|
-
relativePosition = DirectionRelativePositionType.End;
|
|
34
|
-
}
|
|
35
|
-
return relativePosition;
|
|
36
|
-
}
|
|
37
|
-
export function computeStopsPosition(stopsStore) {
|
|
38
|
-
const stopsToComputePosition = [...stopsStore.all()];
|
|
39
|
-
stopsToComputePosition.sort((a, b) => a.position - b.position);
|
|
40
|
-
stopsToComputePosition.map((stop, i) => {
|
|
41
|
-
stop.position = i;
|
|
42
|
-
stop.relativePosition = computeRelativePosition(stop.position, stopsToComputePosition.length);
|
|
43
|
-
});
|
|
44
|
-
if (stopsToComputePosition) {
|
|
45
|
-
stopsStore.updateMany(stopsToComputePosition);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Function that add a stop to the stop store. Stop are always added before the last stop.
|
|
50
|
-
* @param stopsStore stop store as an EntityStore
|
|
51
|
-
*/
|
|
52
|
-
export function addStopToStore(stopsStore) {
|
|
53
|
-
const id = uuid();
|
|
54
|
-
const stops = stopsStore.all();
|
|
55
|
-
let positions;
|
|
56
|
-
if (stopsStore.count === 0) {
|
|
57
|
-
positions = [0];
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
positions = stops.map(stop => stop.position);
|
|
61
|
-
}
|
|
62
|
-
const maxPosition = Math.max(...positions);
|
|
63
|
-
const insertPosition = maxPosition;
|
|
64
|
-
const lastPosition = maxPosition + 1;
|
|
65
|
-
const stopToUpdate = stopsStore.all().find(stop => stop.position === maxPosition);
|
|
66
|
-
if (stopToUpdate) {
|
|
67
|
-
stopToUpdate.position = lastPosition;
|
|
68
|
-
stopToUpdate.relativePosition = computeRelativePosition(lastPosition, stopsStore.count + 1);
|
|
69
|
-
}
|
|
70
|
-
stopsStore.insert({ id, position: insertPosition, relativePosition: computeRelativePosition(insertPosition, stopsStore.count + 1) });
|
|
71
|
-
updateStoreSorting(stopsStore);
|
|
72
|
-
return stopsStore.get(id);
|
|
73
|
-
}
|
|
74
|
-
export function removeStopFromStore(stopsStore, stop) {
|
|
75
|
-
stopsStore.delete(stop);
|
|
76
|
-
computeStopsPosition(stopsStore);
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Create a style for the directions stops and routes
|
|
80
|
-
* @param feature OlFeature
|
|
81
|
-
* @returns OL style function
|
|
82
|
-
*/
|
|
83
|
-
export function directionsStyle(feature, resolution) {
|
|
84
|
-
const vertexStyle = [
|
|
85
|
-
new olStyle.Style({
|
|
86
|
-
geometry: feature.getGeometry(),
|
|
87
|
-
image: new olStyle.Circle({
|
|
88
|
-
radius: 7,
|
|
89
|
-
stroke: new olStyle.Stroke({ color: '#FF0000', width: 3 })
|
|
90
|
-
})
|
|
91
|
-
})
|
|
92
|
-
];
|
|
93
|
-
const stopStyle = createOverlayMarkerStyle({
|
|
94
|
-
text: feature.get('stopText'),
|
|
95
|
-
opacity: feature.get('stopOpacity'),
|
|
96
|
-
markerColor: feature.get('stopColor'),
|
|
97
|
-
markerOutlineColor: [255, 255, 255]
|
|
98
|
-
});
|
|
99
|
-
const routeStyle = [
|
|
100
|
-
new olStyle.Style({
|
|
101
|
-
stroke: new olStyle.Stroke({ color: `rgba(106, 121, 130, ${feature.get('active') ? 0.75 : 0})`, width: 10 })
|
|
102
|
-
}),
|
|
103
|
-
new olStyle.Style({
|
|
104
|
-
stroke: new olStyle.Stroke({ color: `rgba(79, 169, 221, ${feature.get('active') ? 0.75 : 0})`, width: 6 })
|
|
105
|
-
})
|
|
106
|
-
];
|
|
107
|
-
if (feature.get('type') === DirectionType.Stop) {
|
|
108
|
-
return stopStyle;
|
|
109
|
-
}
|
|
110
|
-
if (feature.get('type') === 'vertex') {
|
|
111
|
-
return vertexStyle;
|
|
112
|
-
}
|
|
113
|
-
if (feature.get('type') === DirectionType.Route) {
|
|
114
|
-
return routeStyle;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
export function initStopsFeatureStore(stopsFeatureStore, languageService) {
|
|
118
|
-
const loadingStrategy = new FeatureStoreLoadingStrategy({
|
|
119
|
-
motion: FeatureMotion.None
|
|
120
|
-
});
|
|
121
|
-
const stopsLayer = new VectorLayer({
|
|
122
|
-
isIgoInternalLayer: true,
|
|
123
|
-
id: 'igo-direction-stops-layer',
|
|
124
|
-
title: languageService.translate.instant('igo.geo.directionsForm.stopLayer'),
|
|
125
|
-
zIndex: 911,
|
|
126
|
-
source: new FeatureDataSource(),
|
|
127
|
-
showInLayerList: true,
|
|
128
|
-
workspace: {
|
|
129
|
-
enabled: false,
|
|
130
|
-
},
|
|
131
|
-
linkedLayers: {
|
|
132
|
-
linkId: 'igo-direction-stops-layer',
|
|
133
|
-
links: [
|
|
134
|
-
{
|
|
135
|
-
syncedDelete: true,
|
|
136
|
-
linkedIds: ['igo-direction-route-layer'],
|
|
137
|
-
properties: []
|
|
138
|
-
}
|
|
139
|
-
]
|
|
140
|
-
},
|
|
141
|
-
exportable: true,
|
|
142
|
-
browsable: false,
|
|
143
|
-
style: directionsStyle
|
|
144
|
-
});
|
|
145
|
-
tryBindStoreLayer(stopsFeatureStore, stopsLayer);
|
|
146
|
-
stopsFeatureStore.layer.visible = true;
|
|
147
|
-
tryAddLoadingStrategy(stopsFeatureStore, loadingStrategy);
|
|
148
|
-
}
|
|
149
|
-
export function initRoutesFeatureStore(routesFeatureStore, languageService) {
|
|
150
|
-
const loadingStrategy = new FeatureStoreLoadingStrategy({
|
|
151
|
-
motion: FeatureMotion.None
|
|
152
|
-
});
|
|
153
|
-
const routeLayer = new VectorLayer({
|
|
154
|
-
isIgoInternalLayer: true,
|
|
155
|
-
id: 'igo-direction-route-layer',
|
|
156
|
-
title: languageService.translate.instant('igo.geo.directionsForm.routeLayer'),
|
|
157
|
-
zIndex: 910,
|
|
158
|
-
source: new FeatureDataSource(),
|
|
159
|
-
showInLayerList: true,
|
|
160
|
-
workspace: {
|
|
161
|
-
enabled: false,
|
|
162
|
-
},
|
|
163
|
-
linkedLayers: {
|
|
164
|
-
linkId: 'igo-direction-route-layer'
|
|
165
|
-
},
|
|
166
|
-
exportable: true,
|
|
167
|
-
browsable: false,
|
|
168
|
-
style: directionsStyle
|
|
169
|
-
});
|
|
170
|
-
tryBindStoreLayer(routesFeatureStore, routeLayer);
|
|
171
|
-
routesFeatureStore.layer.visible = true;
|
|
172
|
-
tryAddLoadingStrategy(routesFeatureStore, loadingStrategy);
|
|
173
|
-
}
|
|
174
|
-
export function initStepFeatureStore(stepFeatureStore) {
|
|
175
|
-
const loadingStrategy = new FeatureStoreLoadingStrategy({
|
|
176
|
-
motion: FeatureMotion.None
|
|
177
|
-
});
|
|
178
|
-
const stepLayer = new VectorLayer({
|
|
179
|
-
isIgoInternalLayer: true,
|
|
180
|
-
id: 'igo-direction-step-layer',
|
|
181
|
-
title: '',
|
|
182
|
-
zIndex: 910,
|
|
183
|
-
source: new FeatureDataSource(),
|
|
184
|
-
showInLayerList: false,
|
|
185
|
-
workspace: {
|
|
186
|
-
enabled: false,
|
|
187
|
-
},
|
|
188
|
-
linkedLayers: {
|
|
189
|
-
linkId: 'igo-direction-route-layer'
|
|
190
|
-
},
|
|
191
|
-
exportable: false,
|
|
192
|
-
browsable: false,
|
|
193
|
-
style: directionsStyle
|
|
194
|
-
});
|
|
195
|
-
tryBindStoreLayer(stepFeatureStore, stepLayer);
|
|
196
|
-
stepFeatureStore.layer.visible = true;
|
|
197
|
-
tryAddLoadingStrategy(stepFeatureStore, loadingStrategy);
|
|
198
|
-
}
|
|
199
|
-
export function addStopToStopsFeatureStore(stop, stopsStore, stopsFeatureStore, projection, languageService) {
|
|
200
|
-
let stopColor;
|
|
201
|
-
let stopText;
|
|
202
|
-
switch (stop.relativePosition) {
|
|
203
|
-
case DirectionRelativePositionType.Start:
|
|
204
|
-
stopColor = '#008000';
|
|
205
|
-
stopText = languageService.translate.instant('igo.geo.directionsForm.start');
|
|
206
|
-
break;
|
|
207
|
-
case DirectionRelativePositionType.End:
|
|
208
|
-
stopColor = '#f64139';
|
|
209
|
-
stopText = languageService.translate.instant('igo.geo.directionsForm.end');
|
|
210
|
-
break;
|
|
211
|
-
default:
|
|
212
|
-
stopColor = '#ffd700';
|
|
213
|
-
stopText = languageService.translate.instant('igo.geo.directionsForm.intermediate') + ' #' + stop.position;
|
|
214
|
-
break;
|
|
215
|
-
}
|
|
216
|
-
const geometry = new olGeom.Point(olProj.transform(stop.coordinates, projection, stopsFeatureStore.map.projection));
|
|
217
|
-
const geojsonGeom = new OlGeoJSON().writeGeometryObject(geometry, {
|
|
218
|
-
featureProjection: stopsFeatureStore.map.projection,
|
|
219
|
-
dataProjection: stopsFeatureStore.map.projection
|
|
220
|
-
});
|
|
221
|
-
const previousStop = stopsFeatureStore.get(stop.id);
|
|
222
|
-
const previousStopRevision = previousStop ? previousStop.meta.revision : 0;
|
|
223
|
-
const stopFeatureStore = {
|
|
224
|
-
type: FEATURE,
|
|
225
|
-
geometry: geojsonGeom,
|
|
226
|
-
projection: stopsFeatureStore.map.projection,
|
|
227
|
-
properties: {
|
|
228
|
-
id: stop.id,
|
|
229
|
-
type: DirectionType.Stop,
|
|
230
|
-
stopText,
|
|
231
|
-
stopColor,
|
|
232
|
-
stopOpacity: 1,
|
|
233
|
-
stop
|
|
234
|
-
},
|
|
235
|
-
meta: {
|
|
236
|
-
id: stop.id,
|
|
237
|
-
revision: previousStopRevision + 1
|
|
238
|
-
},
|
|
239
|
-
ol: new olFeature({ geometry })
|
|
240
|
-
};
|
|
241
|
-
stopsFeatureStore.update(stopFeatureStore);
|
|
242
|
-
}
|
|
243
|
-
export function addDirectionToRoutesFeatureStore(routesFeatureStore, direction, projection, active = false, moveToExtent = false) {
|
|
244
|
-
const geom = direction.geometry.coordinates;
|
|
245
|
-
const geometry4326 = new olGeom.LineString(geom);
|
|
246
|
-
const geometry = geometry4326.transform(projection, routesFeatureStore.map.projection);
|
|
247
|
-
const geojsonGeom = new OlGeoJSON().writeGeometryObject(geometry, {
|
|
248
|
-
featureProjection: routesFeatureStore.map.projection,
|
|
249
|
-
dataProjection: routesFeatureStore.map.projection
|
|
250
|
-
});
|
|
251
|
-
const previousRoute = routesFeatureStore.get(direction.id);
|
|
252
|
-
const previousRouteRevision = previousRoute
|
|
253
|
-
? previousRoute.meta.revision
|
|
254
|
-
: 0;
|
|
255
|
-
const routeFeatureStore = {
|
|
256
|
-
type: FEATURE,
|
|
257
|
-
geometry: geojsonGeom,
|
|
258
|
-
projection: routesFeatureStore.map.projection,
|
|
259
|
-
properties: {
|
|
260
|
-
id: direction.id,
|
|
261
|
-
type: DirectionType.Route,
|
|
262
|
-
active,
|
|
263
|
-
direction
|
|
264
|
-
},
|
|
265
|
-
meta: {
|
|
266
|
-
id: direction.id,
|
|
267
|
-
revision: previousRouteRevision + 1
|
|
268
|
-
},
|
|
269
|
-
ol: new olFeature({ geometry })
|
|
270
|
-
};
|
|
271
|
-
routesFeatureStore.update(routeFeatureStore);
|
|
272
|
-
}
|
|
273
|
-
export function formatDistance(distance) {
|
|
274
|
-
if (distance === 0) {
|
|
275
|
-
return;
|
|
276
|
-
}
|
|
277
|
-
if (distance >= 100000) {
|
|
278
|
-
return NumberUtils.roundToNDecimal(Math.round(distance) / 1000, 1) + ' km';
|
|
279
|
-
}
|
|
280
|
-
if (distance >= 10000) {
|
|
281
|
-
return NumberUtils.roundToNDecimal(Math.round(distance) / 100 / 10, 1) + ' km';
|
|
282
|
-
}
|
|
283
|
-
if (distance >= 1000) {
|
|
284
|
-
return NumberUtils.roundToNDecimal(Math.round(distance) / 100 / 10, 1) + ' km';
|
|
285
|
-
}
|
|
286
|
-
return NumberUtils.roundToNDecimal(distance, 0) + ' m';
|
|
287
|
-
}
|
|
288
|
-
export function formatDuration(duration) {
|
|
289
|
-
if (duration >= 3600) {
|
|
290
|
-
const hour = Math.floor(duration / 3600);
|
|
291
|
-
const minute = Math.round((duration / 3600 - hour) * 60);
|
|
292
|
-
if (minute === 60) {
|
|
293
|
-
return hour + 1 + ' h';
|
|
294
|
-
}
|
|
295
|
-
return hour + ' h ' + minute + ' min';
|
|
296
|
-
}
|
|
297
|
-
if (duration >= 60) {
|
|
298
|
-
return Math.round(duration / 60) + ' min';
|
|
299
|
-
}
|
|
300
|
-
return duration + ' s';
|
|
301
|
-
}
|
|
302
|
-
export function formatInstruction(type, modifier, route, direction, stepPosition, exit, languageService, lastStep = false) {
|
|
303
|
-
const translate = languageService.translate;
|
|
304
|
-
let directive;
|
|
305
|
-
let image = 'forward';
|
|
306
|
-
let cssClass = 'rotate-270';
|
|
307
|
-
const translatedDirection = translateBearing(direction, languageService);
|
|
308
|
-
const translatedModifier = translateModifier(modifier, languageService);
|
|
309
|
-
const prefix = modifier === 'straight' ? '' : translate.instant('igo.geo.directions.modifier.prefix');
|
|
310
|
-
let aggregatedDirection = prefix + translatedModifier;
|
|
311
|
-
if (modifier?.search('slight') >= 0) {
|
|
312
|
-
aggregatedDirection = translatedModifier;
|
|
313
|
-
}
|
|
314
|
-
if (modifier === 'uturn') {
|
|
315
|
-
image = 'forward';
|
|
316
|
-
cssClass = 'rotate-90';
|
|
317
|
-
}
|
|
318
|
-
else if (modifier === 'sharp right') {
|
|
319
|
-
image = 'subdirectory-arrow-right';
|
|
320
|
-
cssClass = 'icon-flipped';
|
|
321
|
-
}
|
|
322
|
-
else if (modifier === 'right') {
|
|
323
|
-
image = 'subdirectory-arrow-right';
|
|
324
|
-
cssClass = 'icon-flipped';
|
|
325
|
-
}
|
|
326
|
-
else if (modifier === 'slight right') {
|
|
327
|
-
image = 'forward';
|
|
328
|
-
cssClass = 'rotate-290';
|
|
329
|
-
}
|
|
330
|
-
else if (modifier === 'straight') {
|
|
331
|
-
image = 'forward';
|
|
332
|
-
}
|
|
333
|
-
else if (modifier === 'slight left') {
|
|
334
|
-
image = 'forward';
|
|
335
|
-
cssClass = 'rotate-250';
|
|
336
|
-
}
|
|
337
|
-
else if (modifier === 'left') {
|
|
338
|
-
image = 'subdirectory-arrow-left';
|
|
339
|
-
cssClass = 'icon-flipped';
|
|
340
|
-
}
|
|
341
|
-
else if (modifier === 'sharp left') {
|
|
342
|
-
image = 'subdirectory-arrow-left';
|
|
343
|
-
cssClass = 'icon-flipped';
|
|
344
|
-
}
|
|
345
|
-
if (type === 'turn') {
|
|
346
|
-
if (modifier === 'straight') {
|
|
347
|
-
directive = translate.instant('igo.geo.directions.turn.straight', { route });
|
|
348
|
-
}
|
|
349
|
-
else if (modifier === 'uturn') {
|
|
350
|
-
directive = translate.instant('igo.geo.directions.turn.uturn', { route });
|
|
351
|
-
}
|
|
352
|
-
else {
|
|
353
|
-
directive = translate.instant('igo.geo.directions.turn.else', { route, aggregatedDirection, translatedModifier });
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
else if (type === 'new name') {
|
|
357
|
-
directive = translate.instant('igo.geo.directions.new name', { route, translatedDirection });
|
|
358
|
-
image = 'compass';
|
|
359
|
-
cssClass = '';
|
|
360
|
-
}
|
|
361
|
-
else if (type === 'depart') {
|
|
362
|
-
directive = translate.instant('igo.geo.directions.depart', { route, translatedDirection });
|
|
363
|
-
image = 'compass';
|
|
364
|
-
cssClass = '';
|
|
365
|
-
}
|
|
366
|
-
else if (type === 'arrive') {
|
|
367
|
-
if (lastStep) {
|
|
368
|
-
const coma = !translatedModifier ? '' : ', ';
|
|
369
|
-
aggregatedDirection = !translatedModifier ? '' : aggregatedDirection;
|
|
370
|
-
directive = translate.instant('igo.geo.directions.arrive.lastStep', { coma, aggregatedDirection });
|
|
371
|
-
}
|
|
372
|
-
else {
|
|
373
|
-
directive = translate.instant('igo.geo.directions.arrive.intermediate', { route });
|
|
374
|
-
image = 'map-marker';
|
|
375
|
-
cssClass = '';
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
else if (type === 'merge') {
|
|
379
|
-
directive = translate.instant('igo.geo.directions.merge', { route });
|
|
380
|
-
image = 'forward';
|
|
381
|
-
cssClass = 'rotate-270';
|
|
382
|
-
}
|
|
383
|
-
else if (type === 'on ramp') {
|
|
384
|
-
directive = translate.instant('igo.geo.directions.on ramp', { aggregatedDirection });
|
|
385
|
-
}
|
|
386
|
-
else if (type === 'off ramp') {
|
|
387
|
-
directive = translate.instant('igo.geo.directions.off ramp', { aggregatedDirection });
|
|
388
|
-
}
|
|
389
|
-
else if (type === 'fork') {
|
|
390
|
-
if (modifier.search('left') >= 0) {
|
|
391
|
-
directive = translate.instant('igo.geo.directions.fork.left', { route });
|
|
392
|
-
}
|
|
393
|
-
else if (modifier.search('right') >= 0) {
|
|
394
|
-
directive = translate.instant('igo.geo.directions.fork.right', { route });
|
|
395
|
-
}
|
|
396
|
-
else {
|
|
397
|
-
directive = translate.instant('igo.geo.directions.fork.else', { route });
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
else if (type === 'end of road') {
|
|
401
|
-
directive = translate.instant('igo.geo.directions.end of road', { translatedModifier, route });
|
|
402
|
-
}
|
|
403
|
-
else if (type === 'use lane') {
|
|
404
|
-
directive = translate.instant('igo.geo.directions.use lane');
|
|
405
|
-
}
|
|
406
|
-
else if (type === 'continue' && modifier !== 'uturn') {
|
|
407
|
-
directive = translate.instant('igo.geo.directions.continue.notUturn', { route });
|
|
408
|
-
image = 'forward';
|
|
409
|
-
cssClass = 'rotate-270';
|
|
410
|
-
}
|
|
411
|
-
else if (type === 'roundabout') {
|
|
412
|
-
const cntSuffix = exit === 1 ?
|
|
413
|
-
translate.instant('igo.geo.directions.cntSuffix.first') :
|
|
414
|
-
translate.instant('igo.geo.directions.cntSuffix.secondAndMore');
|
|
415
|
-
directive = translate.instant('igo.geo.directions.roundabout', { exit, cntSuffix, route });
|
|
416
|
-
image = 'chart-donut';
|
|
417
|
-
cssClass = '';
|
|
418
|
-
}
|
|
419
|
-
else if (type === 'rotary') {
|
|
420
|
-
directive = translate.instant('igo.geo.directions.rotary');
|
|
421
|
-
image = 'chart-donut';
|
|
422
|
-
cssClass = '';
|
|
423
|
-
}
|
|
424
|
-
else if (type === 'roundabout turn') {
|
|
425
|
-
directive = translate.instant('igo.geo.directions.roundabout turn');
|
|
426
|
-
image = 'chart-donut';
|
|
427
|
-
cssClass = '';
|
|
428
|
-
}
|
|
429
|
-
else if (type === 'exit roundabout') {
|
|
430
|
-
directive = translate.instant('igo.geo.directions.exit roundabout', { route });
|
|
431
|
-
image = 'forward';
|
|
432
|
-
cssClass = 'rotate-270';
|
|
433
|
-
}
|
|
434
|
-
else if (type === 'notification') {
|
|
435
|
-
directive = translate.instant('igo.geo.directions.notification');
|
|
436
|
-
}
|
|
437
|
-
else if (modifier === 'uturn') {
|
|
438
|
-
directive = translate.instant('igo.geo.directions.uturnText', { translatedDirection, route });
|
|
439
|
-
}
|
|
440
|
-
else {
|
|
441
|
-
directive = translate.instant('igo.geo.directions.unknown');
|
|
442
|
-
}
|
|
443
|
-
image = lastStep ? 'flag-variant' : image;
|
|
444
|
-
cssClass = lastStep ? '' : cssClass;
|
|
445
|
-
image = stepPosition === 0 ? 'compass' : image;
|
|
446
|
-
cssClass = stepPosition === 0 ? '' : cssClass;
|
|
447
|
-
return { instruction: directive, image, cssClass };
|
|
448
|
-
}
|
|
449
|
-
export function translateModifier(modifier, languageService) {
|
|
450
|
-
const translate = languageService.translate;
|
|
451
|
-
if (modifier === 'uturn') {
|
|
452
|
-
return translate.instant('igo.geo.directions.uturn');
|
|
453
|
-
}
|
|
454
|
-
else if (modifier === 'sharp right') {
|
|
455
|
-
return translate.instant('igo.geo.directions.sharp right');
|
|
456
|
-
}
|
|
457
|
-
else if (modifier === 'right') {
|
|
458
|
-
return translate.instant('igo.geo.directions.right');
|
|
459
|
-
}
|
|
460
|
-
else if (modifier === 'slight right') {
|
|
461
|
-
return translate.instant('igo.geo.directions.slight right');
|
|
462
|
-
}
|
|
463
|
-
else if (modifier === 'sharp left') {
|
|
464
|
-
return languageService.translate.instant('igo.geo.directions.sharp left');
|
|
465
|
-
}
|
|
466
|
-
else if (modifier === 'left') {
|
|
467
|
-
return languageService.translate.instant('igo.geo.directions.left');
|
|
468
|
-
}
|
|
469
|
-
else if (modifier === 'slight left') {
|
|
470
|
-
return languageService.translate.instant('igo.geo.directions.slight left');
|
|
471
|
-
}
|
|
472
|
-
else if (modifier === 'straight') {
|
|
473
|
-
return languageService.translate.instant('igo.geo.directions.straight');
|
|
474
|
-
}
|
|
475
|
-
else {
|
|
476
|
-
return modifier;
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
export function translateBearing(bearing, languageService) {
|
|
480
|
-
const translate = languageService.translate;
|
|
481
|
-
if (bearing >= 337 || bearing < 23) {
|
|
482
|
-
return translate.instant('igo.geo.cardinalPoints.n');
|
|
483
|
-
}
|
|
484
|
-
else if (bearing < 67) {
|
|
485
|
-
return translate.instant('igo.geo.cardinalPoints.ne');
|
|
486
|
-
}
|
|
487
|
-
else if (bearing < 113) {
|
|
488
|
-
return translate.instant('igo.geo.cardinalPoints.e');
|
|
489
|
-
}
|
|
490
|
-
else if (bearing < 157) {
|
|
491
|
-
return translate.instant('igo.geo.cardinalPoints.se');
|
|
492
|
-
}
|
|
493
|
-
else if (bearing < 203) {
|
|
494
|
-
return translate.instant('igo.geo.cardinalPoints.s');
|
|
495
|
-
}
|
|
496
|
-
else if (bearing < 247) {
|
|
497
|
-
return translate.instant('igo.geo.cardinalPoints.sw');
|
|
498
|
-
}
|
|
499
|
-
else if (bearing < 293) {
|
|
500
|
-
return translate.instant('igo.geo.cardinalPoints.w');
|
|
501
|
-
}
|
|
502
|
-
else if (bearing < 337) {
|
|
503
|
-
return translate.instant('igo.geo.cardinalPoints.nw');
|
|
504
|
-
}
|
|
505
|
-
else {
|
|
506
|
-
return;
|
|
507
|
-
}
|
|
508
|
-
}
|
|
1
|
+
import olFeature from 'ol/Feature';
|
|
2
|
+
import * as olStyle from 'ol/style';
|
|
3
|
+
import * as olGeom from 'ol/geom';
|
|
4
|
+
import OlGeoJSON from 'ol/format/GeoJSON';
|
|
5
|
+
import * as olProj from 'ol/proj';
|
|
6
|
+
import { uuid, NumberUtils } from '@igo2/utils';
|
|
7
|
+
import { createOverlayMarkerStyle } from '../../overlay/shared/overlay-marker-style.utils';
|
|
8
|
+
import { VectorLayer } from '../../layer/shared/layers/vector-layer';
|
|
9
|
+
import { FeatureDataSource } from '../../datasource/shared/datasources/feature-datasource';
|
|
10
|
+
import { tryBindStoreLayer } from '../../feature/shared/feature.utils';
|
|
11
|
+
import { tryAddLoadingStrategy } from '../../feature/shared/strategies.utils';
|
|
12
|
+
import { FeatureStoreLoadingStrategy } from '../../feature/shared/strategies/loading';
|
|
13
|
+
import { FEATURE, FeatureMotion } from '../../feature/shared/feature.enums';
|
|
14
|
+
import { DirectionRelativePositionType, DirectionType } from './directions.enum';
|
|
15
|
+
/**
|
|
16
|
+
* Function that updat the sort of the list base on the provided field.
|
|
17
|
+
* @param source stop store
|
|
18
|
+
* @param direction asc / desc sort order
|
|
19
|
+
* @param field the field to use to sort the view
|
|
20
|
+
*/
|
|
21
|
+
export function updateStoreSorting(stopsStore, direction = 'asc', field = 'position') {
|
|
22
|
+
stopsStore.view.sort({
|
|
23
|
+
direction,
|
|
24
|
+
valueAccessor: (entity) => entity[field]
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
export function computeRelativePosition(index, totalLength) {
|
|
28
|
+
let relativePosition = DirectionRelativePositionType.Intermediate;
|
|
29
|
+
if (index === 0) {
|
|
30
|
+
relativePosition = DirectionRelativePositionType.Start;
|
|
31
|
+
}
|
|
32
|
+
else if (index === totalLength - 1) {
|
|
33
|
+
relativePosition = DirectionRelativePositionType.End;
|
|
34
|
+
}
|
|
35
|
+
return relativePosition;
|
|
36
|
+
}
|
|
37
|
+
export function computeStopsPosition(stopsStore) {
|
|
38
|
+
const stopsToComputePosition = [...stopsStore.all()];
|
|
39
|
+
stopsToComputePosition.sort((a, b) => a.position - b.position);
|
|
40
|
+
stopsToComputePosition.map((stop, i) => {
|
|
41
|
+
stop.position = i;
|
|
42
|
+
stop.relativePosition = computeRelativePosition(stop.position, stopsToComputePosition.length);
|
|
43
|
+
});
|
|
44
|
+
if (stopsToComputePosition) {
|
|
45
|
+
stopsStore.updateMany(stopsToComputePosition);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Function that add a stop to the stop store. Stop are always added before the last stop.
|
|
50
|
+
* @param stopsStore stop store as an EntityStore
|
|
51
|
+
*/
|
|
52
|
+
export function addStopToStore(stopsStore) {
|
|
53
|
+
const id = uuid();
|
|
54
|
+
const stops = stopsStore.all();
|
|
55
|
+
let positions;
|
|
56
|
+
if (stopsStore.count === 0) {
|
|
57
|
+
positions = [0];
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
positions = stops.map(stop => stop.position);
|
|
61
|
+
}
|
|
62
|
+
const maxPosition = Math.max(...positions);
|
|
63
|
+
const insertPosition = maxPosition;
|
|
64
|
+
const lastPosition = maxPosition + 1;
|
|
65
|
+
const stopToUpdate = stopsStore.all().find(stop => stop.position === maxPosition);
|
|
66
|
+
if (stopToUpdate) {
|
|
67
|
+
stopToUpdate.position = lastPosition;
|
|
68
|
+
stopToUpdate.relativePosition = computeRelativePosition(lastPosition, stopsStore.count + 1);
|
|
69
|
+
}
|
|
70
|
+
stopsStore.insert({ id, position: insertPosition, relativePosition: computeRelativePosition(insertPosition, stopsStore.count + 1) });
|
|
71
|
+
updateStoreSorting(stopsStore);
|
|
72
|
+
return stopsStore.get(id);
|
|
73
|
+
}
|
|
74
|
+
export function removeStopFromStore(stopsStore, stop) {
|
|
75
|
+
stopsStore.delete(stop);
|
|
76
|
+
computeStopsPosition(stopsStore);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Create a style for the directions stops and routes
|
|
80
|
+
* @param feature OlFeature
|
|
81
|
+
* @returns OL style function
|
|
82
|
+
*/
|
|
83
|
+
export function directionsStyle(feature, resolution) {
|
|
84
|
+
const vertexStyle = [
|
|
85
|
+
new olStyle.Style({
|
|
86
|
+
geometry: feature.getGeometry(),
|
|
87
|
+
image: new olStyle.Circle({
|
|
88
|
+
radius: 7,
|
|
89
|
+
stroke: new olStyle.Stroke({ color: '#FF0000', width: 3 })
|
|
90
|
+
})
|
|
91
|
+
})
|
|
92
|
+
];
|
|
93
|
+
const stopStyle = createOverlayMarkerStyle({
|
|
94
|
+
text: feature.get('stopText'),
|
|
95
|
+
opacity: feature.get('stopOpacity'),
|
|
96
|
+
markerColor: feature.get('stopColor'),
|
|
97
|
+
markerOutlineColor: [255, 255, 255]
|
|
98
|
+
});
|
|
99
|
+
const routeStyle = [
|
|
100
|
+
new olStyle.Style({
|
|
101
|
+
stroke: new olStyle.Stroke({ color: `rgba(106, 121, 130, ${feature.get('active') ? 0.75 : 0})`, width: 10 })
|
|
102
|
+
}),
|
|
103
|
+
new olStyle.Style({
|
|
104
|
+
stroke: new olStyle.Stroke({ color: `rgba(79, 169, 221, ${feature.get('active') ? 0.75 : 0})`, width: 6 })
|
|
105
|
+
})
|
|
106
|
+
];
|
|
107
|
+
if (feature.get('type') === DirectionType.Stop) {
|
|
108
|
+
return stopStyle;
|
|
109
|
+
}
|
|
110
|
+
if (feature.get('type') === 'vertex') {
|
|
111
|
+
return vertexStyle;
|
|
112
|
+
}
|
|
113
|
+
if (feature.get('type') === DirectionType.Route) {
|
|
114
|
+
return routeStyle;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export function initStopsFeatureStore(stopsFeatureStore, languageService) {
|
|
118
|
+
const loadingStrategy = new FeatureStoreLoadingStrategy({
|
|
119
|
+
motion: FeatureMotion.None
|
|
120
|
+
});
|
|
121
|
+
const stopsLayer = new VectorLayer({
|
|
122
|
+
isIgoInternalLayer: true,
|
|
123
|
+
id: 'igo-direction-stops-layer',
|
|
124
|
+
title: languageService.translate.instant('igo.geo.directionsForm.stopLayer'),
|
|
125
|
+
zIndex: 911,
|
|
126
|
+
source: new FeatureDataSource(),
|
|
127
|
+
showInLayerList: true,
|
|
128
|
+
workspace: {
|
|
129
|
+
enabled: false,
|
|
130
|
+
},
|
|
131
|
+
linkedLayers: {
|
|
132
|
+
linkId: 'igo-direction-stops-layer',
|
|
133
|
+
links: [
|
|
134
|
+
{
|
|
135
|
+
syncedDelete: true,
|
|
136
|
+
linkedIds: ['igo-direction-route-layer'],
|
|
137
|
+
properties: []
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
exportable: true,
|
|
142
|
+
browsable: false,
|
|
143
|
+
style: directionsStyle
|
|
144
|
+
});
|
|
145
|
+
tryBindStoreLayer(stopsFeatureStore, stopsLayer);
|
|
146
|
+
stopsFeatureStore.layer.visible = true;
|
|
147
|
+
tryAddLoadingStrategy(stopsFeatureStore, loadingStrategy);
|
|
148
|
+
}
|
|
149
|
+
export function initRoutesFeatureStore(routesFeatureStore, languageService) {
|
|
150
|
+
const loadingStrategy = new FeatureStoreLoadingStrategy({
|
|
151
|
+
motion: FeatureMotion.None
|
|
152
|
+
});
|
|
153
|
+
const routeLayer = new VectorLayer({
|
|
154
|
+
isIgoInternalLayer: true,
|
|
155
|
+
id: 'igo-direction-route-layer',
|
|
156
|
+
title: languageService.translate.instant('igo.geo.directionsForm.routeLayer'),
|
|
157
|
+
zIndex: 910,
|
|
158
|
+
source: new FeatureDataSource(),
|
|
159
|
+
showInLayerList: true,
|
|
160
|
+
workspace: {
|
|
161
|
+
enabled: false,
|
|
162
|
+
},
|
|
163
|
+
linkedLayers: {
|
|
164
|
+
linkId: 'igo-direction-route-layer'
|
|
165
|
+
},
|
|
166
|
+
exportable: true,
|
|
167
|
+
browsable: false,
|
|
168
|
+
style: directionsStyle
|
|
169
|
+
});
|
|
170
|
+
tryBindStoreLayer(routesFeatureStore, routeLayer);
|
|
171
|
+
routesFeatureStore.layer.visible = true;
|
|
172
|
+
tryAddLoadingStrategy(routesFeatureStore, loadingStrategy);
|
|
173
|
+
}
|
|
174
|
+
export function initStepFeatureStore(stepFeatureStore) {
|
|
175
|
+
const loadingStrategy = new FeatureStoreLoadingStrategy({
|
|
176
|
+
motion: FeatureMotion.None
|
|
177
|
+
});
|
|
178
|
+
const stepLayer = new VectorLayer({
|
|
179
|
+
isIgoInternalLayer: true,
|
|
180
|
+
id: 'igo-direction-step-layer',
|
|
181
|
+
title: '',
|
|
182
|
+
zIndex: 910,
|
|
183
|
+
source: new FeatureDataSource(),
|
|
184
|
+
showInLayerList: false,
|
|
185
|
+
workspace: {
|
|
186
|
+
enabled: false,
|
|
187
|
+
},
|
|
188
|
+
linkedLayers: {
|
|
189
|
+
linkId: 'igo-direction-route-layer'
|
|
190
|
+
},
|
|
191
|
+
exportable: false,
|
|
192
|
+
browsable: false,
|
|
193
|
+
style: directionsStyle
|
|
194
|
+
});
|
|
195
|
+
tryBindStoreLayer(stepFeatureStore, stepLayer);
|
|
196
|
+
stepFeatureStore.layer.visible = true;
|
|
197
|
+
tryAddLoadingStrategy(stepFeatureStore, loadingStrategy);
|
|
198
|
+
}
|
|
199
|
+
export function addStopToStopsFeatureStore(stop, stopsStore, stopsFeatureStore, projection, languageService) {
|
|
200
|
+
let stopColor;
|
|
201
|
+
let stopText;
|
|
202
|
+
switch (stop.relativePosition) {
|
|
203
|
+
case DirectionRelativePositionType.Start:
|
|
204
|
+
stopColor = '#008000';
|
|
205
|
+
stopText = languageService.translate.instant('igo.geo.directionsForm.start');
|
|
206
|
+
break;
|
|
207
|
+
case DirectionRelativePositionType.End:
|
|
208
|
+
stopColor = '#f64139';
|
|
209
|
+
stopText = languageService.translate.instant('igo.geo.directionsForm.end');
|
|
210
|
+
break;
|
|
211
|
+
default:
|
|
212
|
+
stopColor = '#ffd700';
|
|
213
|
+
stopText = languageService.translate.instant('igo.geo.directionsForm.intermediate') + ' #' + stop.position;
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
const geometry = new olGeom.Point(olProj.transform(stop.coordinates, projection, stopsFeatureStore.map.projection));
|
|
217
|
+
const geojsonGeom = new OlGeoJSON().writeGeometryObject(geometry, {
|
|
218
|
+
featureProjection: stopsFeatureStore.map.projection,
|
|
219
|
+
dataProjection: stopsFeatureStore.map.projection
|
|
220
|
+
});
|
|
221
|
+
const previousStop = stopsFeatureStore.get(stop.id);
|
|
222
|
+
const previousStopRevision = previousStop ? previousStop.meta.revision : 0;
|
|
223
|
+
const stopFeatureStore = {
|
|
224
|
+
type: FEATURE,
|
|
225
|
+
geometry: geojsonGeom,
|
|
226
|
+
projection: stopsFeatureStore.map.projection,
|
|
227
|
+
properties: {
|
|
228
|
+
id: stop.id,
|
|
229
|
+
type: DirectionType.Stop,
|
|
230
|
+
stopText,
|
|
231
|
+
stopColor,
|
|
232
|
+
stopOpacity: 1,
|
|
233
|
+
stop
|
|
234
|
+
},
|
|
235
|
+
meta: {
|
|
236
|
+
id: stop.id,
|
|
237
|
+
revision: previousStopRevision + 1
|
|
238
|
+
},
|
|
239
|
+
ol: new olFeature({ geometry })
|
|
240
|
+
};
|
|
241
|
+
stopsFeatureStore.update(stopFeatureStore);
|
|
242
|
+
}
|
|
243
|
+
export function addDirectionToRoutesFeatureStore(routesFeatureStore, direction, projection, active = false, moveToExtent = false) {
|
|
244
|
+
const geom = direction.geometry.coordinates;
|
|
245
|
+
const geometry4326 = new olGeom.LineString(geom);
|
|
246
|
+
const geometry = geometry4326.transform(projection, routesFeatureStore.map.projection);
|
|
247
|
+
const geojsonGeom = new OlGeoJSON().writeGeometryObject(geometry, {
|
|
248
|
+
featureProjection: routesFeatureStore.map.projection,
|
|
249
|
+
dataProjection: routesFeatureStore.map.projection
|
|
250
|
+
});
|
|
251
|
+
const previousRoute = routesFeatureStore.get(direction.id);
|
|
252
|
+
const previousRouteRevision = previousRoute
|
|
253
|
+
? previousRoute.meta.revision
|
|
254
|
+
: 0;
|
|
255
|
+
const routeFeatureStore = {
|
|
256
|
+
type: FEATURE,
|
|
257
|
+
geometry: geojsonGeom,
|
|
258
|
+
projection: routesFeatureStore.map.projection,
|
|
259
|
+
properties: {
|
|
260
|
+
id: direction.id,
|
|
261
|
+
type: DirectionType.Route,
|
|
262
|
+
active,
|
|
263
|
+
direction
|
|
264
|
+
},
|
|
265
|
+
meta: {
|
|
266
|
+
id: direction.id,
|
|
267
|
+
revision: previousRouteRevision + 1
|
|
268
|
+
},
|
|
269
|
+
ol: new olFeature({ geometry })
|
|
270
|
+
};
|
|
271
|
+
routesFeatureStore.update(routeFeatureStore);
|
|
272
|
+
}
|
|
273
|
+
export function formatDistance(distance) {
|
|
274
|
+
if (distance === 0) {
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
if (distance >= 100000) {
|
|
278
|
+
return NumberUtils.roundToNDecimal(Math.round(distance) / 1000, 1) + ' km';
|
|
279
|
+
}
|
|
280
|
+
if (distance >= 10000) {
|
|
281
|
+
return NumberUtils.roundToNDecimal(Math.round(distance) / 100 / 10, 1) + ' km';
|
|
282
|
+
}
|
|
283
|
+
if (distance >= 1000) {
|
|
284
|
+
return NumberUtils.roundToNDecimal(Math.round(distance) / 100 / 10, 1) + ' km';
|
|
285
|
+
}
|
|
286
|
+
return NumberUtils.roundToNDecimal(distance, 0) + ' m';
|
|
287
|
+
}
|
|
288
|
+
export function formatDuration(duration) {
|
|
289
|
+
if (duration >= 3600) {
|
|
290
|
+
const hour = Math.floor(duration / 3600);
|
|
291
|
+
const minute = Math.round((duration / 3600 - hour) * 60);
|
|
292
|
+
if (minute === 60) {
|
|
293
|
+
return hour + 1 + ' h';
|
|
294
|
+
}
|
|
295
|
+
return hour + ' h ' + minute + ' min';
|
|
296
|
+
}
|
|
297
|
+
if (duration >= 60) {
|
|
298
|
+
return Math.round(duration / 60) + ' min';
|
|
299
|
+
}
|
|
300
|
+
return duration + ' s';
|
|
301
|
+
}
|
|
302
|
+
export function formatInstruction(type, modifier, route, direction, stepPosition, exit, languageService, lastStep = false) {
|
|
303
|
+
const translate = languageService.translate;
|
|
304
|
+
let directive;
|
|
305
|
+
let image = 'forward';
|
|
306
|
+
let cssClass = 'rotate-270';
|
|
307
|
+
const translatedDirection = translateBearing(direction, languageService);
|
|
308
|
+
const translatedModifier = translateModifier(modifier, languageService);
|
|
309
|
+
const prefix = modifier === 'straight' ? '' : translate.instant('igo.geo.directions.modifier.prefix');
|
|
310
|
+
let aggregatedDirection = prefix + translatedModifier;
|
|
311
|
+
if (modifier?.search('slight') >= 0) {
|
|
312
|
+
aggregatedDirection = translatedModifier;
|
|
313
|
+
}
|
|
314
|
+
if (modifier === 'uturn') {
|
|
315
|
+
image = 'forward';
|
|
316
|
+
cssClass = 'rotate-90';
|
|
317
|
+
}
|
|
318
|
+
else if (modifier === 'sharp right') {
|
|
319
|
+
image = 'subdirectory-arrow-right';
|
|
320
|
+
cssClass = 'icon-flipped';
|
|
321
|
+
}
|
|
322
|
+
else if (modifier === 'right') {
|
|
323
|
+
image = 'subdirectory-arrow-right';
|
|
324
|
+
cssClass = 'icon-flipped';
|
|
325
|
+
}
|
|
326
|
+
else if (modifier === 'slight right') {
|
|
327
|
+
image = 'forward';
|
|
328
|
+
cssClass = 'rotate-290';
|
|
329
|
+
}
|
|
330
|
+
else if (modifier === 'straight') {
|
|
331
|
+
image = 'forward';
|
|
332
|
+
}
|
|
333
|
+
else if (modifier === 'slight left') {
|
|
334
|
+
image = 'forward';
|
|
335
|
+
cssClass = 'rotate-250';
|
|
336
|
+
}
|
|
337
|
+
else if (modifier === 'left') {
|
|
338
|
+
image = 'subdirectory-arrow-left';
|
|
339
|
+
cssClass = 'icon-flipped';
|
|
340
|
+
}
|
|
341
|
+
else if (modifier === 'sharp left') {
|
|
342
|
+
image = 'subdirectory-arrow-left';
|
|
343
|
+
cssClass = 'icon-flipped';
|
|
344
|
+
}
|
|
345
|
+
if (type === 'turn') {
|
|
346
|
+
if (modifier === 'straight') {
|
|
347
|
+
directive = translate.instant('igo.geo.directions.turn.straight', { route });
|
|
348
|
+
}
|
|
349
|
+
else if (modifier === 'uturn') {
|
|
350
|
+
directive = translate.instant('igo.geo.directions.turn.uturn', { route });
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
directive = translate.instant('igo.geo.directions.turn.else', { route, aggregatedDirection, translatedModifier });
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
else if (type === 'new name') {
|
|
357
|
+
directive = translate.instant('igo.geo.directions.new name', { route, translatedDirection });
|
|
358
|
+
image = 'compass';
|
|
359
|
+
cssClass = '';
|
|
360
|
+
}
|
|
361
|
+
else if (type === 'depart') {
|
|
362
|
+
directive = translate.instant('igo.geo.directions.depart', { route, translatedDirection });
|
|
363
|
+
image = 'compass';
|
|
364
|
+
cssClass = '';
|
|
365
|
+
}
|
|
366
|
+
else if (type === 'arrive') {
|
|
367
|
+
if (lastStep) {
|
|
368
|
+
const coma = !translatedModifier ? '' : ', ';
|
|
369
|
+
aggregatedDirection = !translatedModifier ? '' : aggregatedDirection;
|
|
370
|
+
directive = translate.instant('igo.geo.directions.arrive.lastStep', { coma, aggregatedDirection });
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
directive = translate.instant('igo.geo.directions.arrive.intermediate', { route });
|
|
374
|
+
image = 'map-marker';
|
|
375
|
+
cssClass = '';
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
else if (type === 'merge') {
|
|
379
|
+
directive = translate.instant('igo.geo.directions.merge', { route });
|
|
380
|
+
image = 'forward';
|
|
381
|
+
cssClass = 'rotate-270';
|
|
382
|
+
}
|
|
383
|
+
else if (type === 'on ramp') {
|
|
384
|
+
directive = translate.instant('igo.geo.directions.on ramp', { aggregatedDirection });
|
|
385
|
+
}
|
|
386
|
+
else if (type === 'off ramp') {
|
|
387
|
+
directive = translate.instant('igo.geo.directions.off ramp', { aggregatedDirection });
|
|
388
|
+
}
|
|
389
|
+
else if (type === 'fork') {
|
|
390
|
+
if (modifier.search('left') >= 0) {
|
|
391
|
+
directive = translate.instant('igo.geo.directions.fork.left', { route });
|
|
392
|
+
}
|
|
393
|
+
else if (modifier.search('right') >= 0) {
|
|
394
|
+
directive = translate.instant('igo.geo.directions.fork.right', { route });
|
|
395
|
+
}
|
|
396
|
+
else {
|
|
397
|
+
directive = translate.instant('igo.geo.directions.fork.else', { route });
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
else if (type === 'end of road') {
|
|
401
|
+
directive = translate.instant('igo.geo.directions.end of road', { translatedModifier, route });
|
|
402
|
+
}
|
|
403
|
+
else if (type === 'use lane') {
|
|
404
|
+
directive = translate.instant('igo.geo.directions.use lane');
|
|
405
|
+
}
|
|
406
|
+
else if (type === 'continue' && modifier !== 'uturn') {
|
|
407
|
+
directive = translate.instant('igo.geo.directions.continue.notUturn', { route });
|
|
408
|
+
image = 'forward';
|
|
409
|
+
cssClass = 'rotate-270';
|
|
410
|
+
}
|
|
411
|
+
else if (type === 'roundabout') {
|
|
412
|
+
const cntSuffix = exit === 1 ?
|
|
413
|
+
translate.instant('igo.geo.directions.cntSuffix.first') :
|
|
414
|
+
translate.instant('igo.geo.directions.cntSuffix.secondAndMore');
|
|
415
|
+
directive = translate.instant('igo.geo.directions.roundabout', { exit, cntSuffix, route });
|
|
416
|
+
image = 'chart-donut';
|
|
417
|
+
cssClass = '';
|
|
418
|
+
}
|
|
419
|
+
else if (type === 'rotary') {
|
|
420
|
+
directive = translate.instant('igo.geo.directions.rotary');
|
|
421
|
+
image = 'chart-donut';
|
|
422
|
+
cssClass = '';
|
|
423
|
+
}
|
|
424
|
+
else if (type === 'roundabout turn') {
|
|
425
|
+
directive = translate.instant('igo.geo.directions.roundabout turn');
|
|
426
|
+
image = 'chart-donut';
|
|
427
|
+
cssClass = '';
|
|
428
|
+
}
|
|
429
|
+
else if (type === 'exit roundabout') {
|
|
430
|
+
directive = translate.instant('igo.geo.directions.exit roundabout', { route });
|
|
431
|
+
image = 'forward';
|
|
432
|
+
cssClass = 'rotate-270';
|
|
433
|
+
}
|
|
434
|
+
else if (type === 'notification') {
|
|
435
|
+
directive = translate.instant('igo.geo.directions.notification');
|
|
436
|
+
}
|
|
437
|
+
else if (modifier === 'uturn') {
|
|
438
|
+
directive = translate.instant('igo.geo.directions.uturnText', { translatedDirection, route });
|
|
439
|
+
}
|
|
440
|
+
else {
|
|
441
|
+
directive = translate.instant('igo.geo.directions.unknown');
|
|
442
|
+
}
|
|
443
|
+
image = lastStep ? 'flag-variant' : image;
|
|
444
|
+
cssClass = lastStep ? '' : cssClass;
|
|
445
|
+
image = stepPosition === 0 ? 'compass' : image;
|
|
446
|
+
cssClass = stepPosition === 0 ? '' : cssClass;
|
|
447
|
+
return { instruction: directive, image, cssClass };
|
|
448
|
+
}
|
|
449
|
+
export function translateModifier(modifier, languageService) {
|
|
450
|
+
const translate = languageService.translate;
|
|
451
|
+
if (modifier === 'uturn') {
|
|
452
|
+
return translate.instant('igo.geo.directions.uturn');
|
|
453
|
+
}
|
|
454
|
+
else if (modifier === 'sharp right') {
|
|
455
|
+
return translate.instant('igo.geo.directions.sharp right');
|
|
456
|
+
}
|
|
457
|
+
else if (modifier === 'right') {
|
|
458
|
+
return translate.instant('igo.geo.directions.right');
|
|
459
|
+
}
|
|
460
|
+
else if (modifier === 'slight right') {
|
|
461
|
+
return translate.instant('igo.geo.directions.slight right');
|
|
462
|
+
}
|
|
463
|
+
else if (modifier === 'sharp left') {
|
|
464
|
+
return languageService.translate.instant('igo.geo.directions.sharp left');
|
|
465
|
+
}
|
|
466
|
+
else if (modifier === 'left') {
|
|
467
|
+
return languageService.translate.instant('igo.geo.directions.left');
|
|
468
|
+
}
|
|
469
|
+
else if (modifier === 'slight left') {
|
|
470
|
+
return languageService.translate.instant('igo.geo.directions.slight left');
|
|
471
|
+
}
|
|
472
|
+
else if (modifier === 'straight') {
|
|
473
|
+
return languageService.translate.instant('igo.geo.directions.straight');
|
|
474
|
+
}
|
|
475
|
+
else {
|
|
476
|
+
return modifier;
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
export function translateBearing(bearing, languageService) {
|
|
480
|
+
const translate = languageService.translate;
|
|
481
|
+
if (bearing >= 337 || bearing < 23) {
|
|
482
|
+
return translate.instant('igo.geo.cardinalPoints.n');
|
|
483
|
+
}
|
|
484
|
+
else if (bearing < 67) {
|
|
485
|
+
return translate.instant('igo.geo.cardinalPoints.ne');
|
|
486
|
+
}
|
|
487
|
+
else if (bearing < 113) {
|
|
488
|
+
return translate.instant('igo.geo.cardinalPoints.e');
|
|
489
|
+
}
|
|
490
|
+
else if (bearing < 157) {
|
|
491
|
+
return translate.instant('igo.geo.cardinalPoints.se');
|
|
492
|
+
}
|
|
493
|
+
else if (bearing < 203) {
|
|
494
|
+
return translate.instant('igo.geo.cardinalPoints.s');
|
|
495
|
+
}
|
|
496
|
+
else if (bearing < 247) {
|
|
497
|
+
return translate.instant('igo.geo.cardinalPoints.sw');
|
|
498
|
+
}
|
|
499
|
+
else if (bearing < 293) {
|
|
500
|
+
return translate.instant('igo.geo.cardinalPoints.w');
|
|
501
|
+
}
|
|
502
|
+
else if (bearing < 337) {
|
|
503
|
+
return translate.instant('igo.geo.cardinalPoints.nw');
|
|
504
|
+
}
|
|
505
|
+
else {
|
|
506
|
+
return;
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
509
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9ucy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2RpcmVjdGlvbnMvc2hhcmVkL2RpcmVjdGlvbnMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sS0FBSyxPQUFPLE1BQU0sVUFBVSxDQUFDO0FBRXBDLE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sU0FBUyxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2hELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMzRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN0RixPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRzVFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRjs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxVQUFzQixFQUFFLFlBQTRCLEtBQUssRUFBRSxLQUFLLEdBQUcsVUFBVTtJQUM5RyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNuQixTQUFT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Q0FBQywwQkFBMEIsQ0FBQyxDQUFDO0tBQ3REO1NBQU0sSUFBSSxPQUFPLEdBQUcsR0FBRyxFQUFFO1FBQ3hCLE9BQU8sU0FBUyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0tBQ3ZEO1NBQU07UUFDTCxPQUFPO0tBQ1I7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9sRmVhdHVyZSBmcm9tICdvbC9GZWF0dXJlJztcbmltcG9ydCAqIGFzIG9sU3R5bGUgZnJvbSAnb2wvc3R5bGUnO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE9sR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcbmltcG9ydCAqIGFzIG9sR2VvbSBmcm9tICdvbC9nZW9tJztcbmltcG9ydCBPbEdlb0pTT04gZnJvbSAnb2wvZm9ybWF0L0dlb0pTT04nO1xuaW1wb3J0ICogYXMgb2xQcm9qIGZyb20gJ29sL3Byb2onO1xuXG5pbXBvcnQgeyB1dWlkLCBOdW1iZXJVdGlscyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IHsgRGlyZWN0aW9uLCBGZWF0dXJlV2l0aERpcmVjdGlvbiwgRmVhdHVyZVdpdGhTdG9wLCBTdG9wIH0gZnJvbSAnLi9kaXJlY3Rpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBjcmVhdGVPdmVybGF5TWFya2VyU3R5bGUgfSBmcm9tICcuLi8uLi9vdmVybGF5L3NoYXJlZC9vdmVybGF5LW1hcmtlci1zdHlsZS51dGlscyc7XG5pbXBvcnQgeyBWZWN0b3JMYXllciB9IGZyb20gJy4uLy4uL2xheWVyL3NoYXJlZC9sYXllcnMvdmVjdG9yLWxheWVyJztcbmltcG9ydCB7IEZlYXR1cmVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZmVhdHVyZS1kYXRhc291cmNlJztcbmltcG9ydCB7IHRyeUJpbmRTdG9yZUxheWVyIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS51dGlscyc7XG5pbXBvcnQgeyB0cnlBZGRMb2FkaW5nU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi9mZWF0dXJlL3NoYXJlZC9zdHJhdGVnaWVzLnV0aWxzJztcbmltcG9ydCB7IEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneSB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL3N0cmF0ZWdpZXMvbG9hZGluZyc7XG5pbXBvcnQgeyBGRUFUVVJFLCBGZWF0dXJlTW90aW9uIH0gZnJvbSAnLi4vLi4vZmVhdHVyZS9zaGFyZWQvZmVhdHVyZS5lbnVtcyc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcbmltcG9ydCB7IEZlYXR1cmVHZW9tZXRyeSB9IGZyb20gJy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBEaXJlY3Rpb25SZWxhdGl2ZVBvc2l0aW9uVHlwZSwgRGlyZWN0aW9uVHlwZSB9IGZyb20gJy4vZGlyZWN0aW9ucy5lbnVtJztcbmltcG9ydCB7IFJvdXRlc0ZlYXR1cmVTdG9yZSwgU3RlcEZlYXR1cmVTdG9yZSwgU3RvcHNGZWF0dXJlU3RvcmUsIFN0b3BzU3RvcmUgfSBmcm9tICcuL3N0b3JlJztcblxuLyoqXG4gKiBGdW5jdGlvbiB0aGF0IHVwZGF0IHRoZSBzb3J0IG9mIHRoZSBsaXN0IGJhc2Ugb24gdGhlIHByb3ZpZGVkIGZpZWxkLlxuICogQHBhcmFtIHNvdXJjZSBzdG9wIHN0b3JlXG4gKiBAcGFyYW0gZGlyZWN0aW9uIGFzYyAvIGRlc2Mgc29ydCBvcmRlclxuICogQHBhcmFtIGZpZWxkIHRoZSBmaWVsZCB0byB1c2UgdG8gc29ydCB0aGUgdmlld1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlU3RvcmVTb3J0aW5nKHN0b3BzU3RvcmU6IFN0b3BzU3RvcmUsIGRpcmVjdGlvbjogJ2FzYycgfCAnZGVzYycgPSAnYXNjJywgZmllbGQgPSAncG9zaXRpb24nKSB7XG4gIHN0b3BzU3RvcmUudmlldy5zb3J0KHtcbiAgICBkaXJlY3Rpb24sXG4gICAgdmFsdWVBY2Nlc3NvcjogKGVudGl0eTogU3RvcCkgPT4gZW50aXR5W2ZpZWxkXVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKGluZGV4OiBudW1iZXIsIHRvdGFsTGVuZ3RoKTogRGlyZWN0aW9uUmVsYXRpdmVQb3NpdGlvblR5cGUge1xuICBsZXQgcmVsYXRpdmVQb3NpdGlvbiA9IERpcmVjdGlvblJlbGF0aXZlUG9zaXRpb25UeXBlLkludGVybWVkaWF0ZTtcbiAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgcmVsYXRpdmVQb3NpdGlvbiA9IERpcmVjdGlvblJlbGF0aXZlUG9zaXRpb25UeXBlLlN0YXJ0O1xuICB9IGVsc2UgaWYgKGluZGV4ID09PSB0b3RhbExlbmd0aCAtIDEpIHtcbiAgICByZWxhdGl2ZVBvc2l0aW9uID0gRGlyZWN0aW9uUmVsYXRpdmVQb3NpdGlvblR5cGUuRW5kO1xuICB9XG4gIHJldHVybiByZWxhdGl2ZVBvc2l0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVN0b3BzUG9zaXRpb24oc3RvcHNTdG9yZTogU3RvcHNTdG9yZSkge1xuXG4gIGNvbnN0IHN0b3BzVG9Db21wdXRlUG9zaXRpb24gPSBbLi4uc3RvcHNTdG9yZS5hbGwoKV07XG4gIHN0b3BzVG9Db21wdXRlUG9zaXRpb24uc29ydCgoYSwgYikgPT4gYS5wb3NpdGlvbiAtIGIucG9zaXRpb24pO1xuICBzdG9wc1RvQ29tcHV0ZVBvc2l0aW9uLm1hcCgoc3RvcCwgaSkgPT4ge1xuICAgIHN0b3AucG9zaXRpb24gPSBpO1xuICAgIHN0b3AucmVsYXRpdmVQb3NpdGlvbiA9IGNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKHN0b3AucG9zaXRpb24sIHN0b3BzVG9Db21wdXRlUG9zaXRpb24ubGVuZ3RoKTtcbiAgfSk7XG4gIGlmIChzdG9wc1RvQ29tcHV0ZVBvc2l0aW9uKSB7XG4gICAgc3RvcHNTdG9yZS51cGRhdGVNYW55KHN0b3BzVG9Db21wdXRlUG9zaXRpb24pO1xuICB9XG59XG5cbi8qKlxuICogRnVuY3Rpb24gdGhhdCBhZGQgYSBzdG9wIHRvIHRoZSBzdG9wIHN0b3JlLiBTdG9wIGFyZSBhbHdheXMgYWRkZWQgYmVmb3JlIHRoZSBsYXN0IHN0b3AuXG4gKiBAcGFyYW0gc3RvcHNTdG9yZSBzdG9wIHN0b3JlIGFzIGFuIEVudGl0eVN0b3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRTdG9wVG9TdG9yZShzdG9wc1N0b3JlOiBTdG9wc1N0b3JlKTogU3RvcCB7XG5cbiAgY29uc3QgaWQgPSB1dWlkKCk7XG4gIGNvbnN0IHN0b3BzID0gc3RvcHNTdG9yZS5hbGwoKTtcbiAgbGV0IHBvc2l0aW9uczogbnVtYmVyW107XG4gIGlmIChzdG9wc1N0b3JlLmNvdW50ID09PSAwKSB7XG4gICAgcG9zaXRpb25zID0gWzBdO1xuICB9IGVsc2Uge1xuICAgIHBvc2l0aW9ucyA9IHN0b3BzLm1hcChzdG9wID0+IHN0b3AucG9zaXRpb24pO1xuICB9XG4gIGNvbnN0IG1heFBvc2l0aW9uOiBudW1iZXIgPSBNYXRoLm1heCguLi5wb3NpdGlvbnMpO1xuICBjb25zdCBpbnNlcnRQb3NpdGlvbjogbnVtYmVyID0gbWF4UG9zaXRpb247XG4gIGNvbnN0IGxhc3RQb3NpdGlvbjogbnVtYmVyID0gbWF4UG9zaXRpb24gKyAxO1xuXG4gIGNvbnN0IHN0b3BUb1VwZGF0ZSA9IHN0b3BzU3RvcmUuYWxsKCkuZmluZChzdG9wID0+IHN0b3AucG9zaXRpb24gPT09IG1heFBvc2l0aW9uKTtcbiAgaWYgKHN0b3BUb1VwZGF0ZSkge1xuICAgIHN0b3BUb1VwZGF0ZS5wb3NpdGlvbiA9IGxhc3RQb3NpdGlvbjtcbiAgICBzdG9wVG9VcGRhdGUucmVsYXRpdmVQb3NpdGlvbiA9IGNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKGxhc3RQb3NpdGlvbiwgc3RvcHNTdG9yZS5jb3VudCArIDEpO1xuICB9XG5cbiAgc3RvcHNTdG9yZS5pbnNlcnQoeyBpZCwgcG9zaXRpb246IGluc2VydFBvc2l0aW9uLCByZWxhdGl2ZVBvc2l0aW9uOiBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbihpbnNlcnRQb3NpdGlvbiwgc3RvcHNTdG9yZS5jb3VudCArIDEpIH0pO1xuXG4gIHVwZGF0ZVN0b3JlU29ydGluZyhzdG9wc1N0b3JlKTtcbiAgcmV0dXJuIHN0b3BzU3RvcmUuZ2V0KGlkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVN0b3BGcm9tU3RvcmUoc3RvcHNTdG9yZTogU3RvcHNTdG9yZSwgc3RvcDogU3RvcCkge1xuICBzdG9wc1N0b3JlLmRlbGV0ZShzdG9wKTtcbiAgY29tcHV0ZVN0b3BzUG9zaXRpb24oc3RvcHNTdG9yZSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgc3R5bGUgZm9yIHRoZSBkaXJlY3Rpb25zIHN0b3BzIGFuZCByb3V0ZXNcbiAqIEBwYXJhbSBmZWF0dXJlIE9sRmVhdHVyZVxuICogQHJldHVybnMgT0wgc3R5bGUgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpcmVjdGlvbnNTdHlsZShcbiAgZmVhdHVyZTogb2xGZWF0dXJlPE9sR2VvbWV0cnk+LFxuICByZXNvbHV0aW9uOiBudW1iZXJcbik6IG9sU3R5bGUuU3R5bGUgfCBvbFN0eWxlLlN0eWxlW10ge1xuICBjb25zdCB2ZXJ0ZXhTdHlsZSA9IFtcbiAgICBuZXcgb2xTdHlsZS5TdHlsZSh7XG4gICAgICBnZW9tZXRyeTogZmVhdHVyZS5nZXRHZW9tZXRyeSgpLFxuICAgICAgaW1hZ2U6IG5ldyBvbFN0eWxlLkNpcmNsZSh7XG4gICAgICAgIHJhZGl1czogNyxcbiAgICAgICAgc3Ryb2tlOiBuZXcgb2xTdHlsZS5TdHJva2UoeyBjb2xvcjogJyNGRjAwMDAnLCB3aWR0aDogMyB9KVxuICAgICAgfSlcbiAgICB9KVxuICBdO1xuXG4gIGNvbnN0IHN0b3BTdHlsZSA9IGNyZWF0ZU92ZXJsYXlNYXJrZXJTdHlsZSh7XG4gICAgdGV4dDogZmVhdHVyZS5nZXQoJ3N0b3BUZXh0JyksXG4gICAgb3BhY2l0eTogZmVhdHVyZS5nZXQoJ3N0b3BPcGFjaXR5JyksXG4gICAgbWFya2VyQ29sb3I6IGZlYXR1cmUuZ2V0KCdzdG9wQ29sb3InKSxcbiAgICBtYXJrZXJPdXRsaW5lQ29sb3I6IFsyNTUsIDI1NSwgMjU1XVxuICB9KTtcblxuICBjb25zdCByb3V0ZVN0eWxlID0gW1xuICAgIG5ldyBvbFN0eWxlLlN0eWxlKHtcbiAgICAgIHN0cm9rZTogbmV3IG9sU3R5bGUuU3Ryb2tlKHsgY29sb3I6IGByZ2JhKDEwNiwgMTIxLCAxMzAsICR7ZmVhdHVyZS5nZXQoJ2FjdGl2ZScpID8gMC43NSA6IDB9KWAsIHdpZHRoOiAxMCB9KVxuICAgIH0pLFxuICAgIG5ldyBvbFN0eWxlLlN0eWxlKHtcbiAgICAgIHN0cm9rZTogbmV3IG9sU3R5bGUuU3Ryb2tlKHsgY29sb3I6IGByZ2JhKDc5LCAxNjksIDIyMSwgJHtmZWF0dXJlLmdldCgnYWN0aXZlJykgPyAwLjc1IDogMH0pYCwgd2lkdGg6IDYgfSlcbiAgICB9KVxuICBdO1xuXG4gIGlmIChmZWF0dXJlLmdldCgndHlwZScpID09PSBEaXJlY3Rpb25UeXBlLlN0b3ApIHtcbiAgICByZXR1cm4gc3RvcFN0eWxlO1xuICB9XG4gIGlmIChmZWF0dXJlLmdldCgndHlwZScpID09PSAndmVydGV4Jykge1xuICAgIHJldHVybiB2ZXJ0ZXhTdHlsZTtcbiAgfVxuICBpZiAoZmVhdHVyZS5nZXQoJ3R5cGUnKSA9PT0gRGlyZWN0aW9uVHlwZS5Sb3V0ZSkge1xuICAgIHJldHVybiByb3V0ZVN0eWxlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0U3RvcHNGZWF0dXJlU3RvcmUoc3RvcHNGZWF0dXJlU3RvcmU6IFN0b3BzRmVhdHVyZVN0b3JlLCBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSkge1xuICBjb25zdCBsb2FkaW5nU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5KHtcbiAgICBtb3Rpb246IEZlYXR1cmVNb3Rpb24uTm9uZVxuICB9KTtcblxuICBjb25zdCBzdG9wc0xheWVyID0gbmV3IFZlY3RvckxheWVyKHtcbiAgICBpc0lnb0ludGVybmFsTGF5ZXI6IHRydWUsXG4gICAgaWQ6ICdpZ28tZGlyZWN0aW9uLXN0b3BzLWxheWVyJyxcbiAgICB0aXRsZTogbGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnNGb3JtLnN0b3BMYXllcicpLFxuICAgIHpJbmRleDogOTExLFxuICAgIHNvdXJjZTogbmV3IEZlYXR1cmVEYXRhU291cmNlKCksXG4gICAgc2hvd0luTGF5ZXJMaXN0OiB0cnVlLFxuICAgIHdvcmtzcGFjZToge1xuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgfSxcbiAgICBsaW5rZWRMYXllcnM6IHtcbiAgICAgIGxpbmtJZDogJ2lnby1kaXJlY3Rpb24tc3RvcHMtbGF5ZXInLFxuICAgICAgbGlua3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIHN5bmNlZERlbGV0ZTogdHJ1ZSxcbiAgICAgICAgICBsaW5rZWRJZHM6IFsnaWdvLWRpcmVjdGlvbi1yb3V0ZS1sYXllciddLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtdXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9LFxuICAgIGV4cG9ydGFibGU6IHRydWUsXG4gICAgYnJvd3NhYmxlOiBmYWxzZSxcbiAgICBzdHlsZTogZGlyZWN0aW9uc1N0eWxlXG4gIH0pO1xuICB0cnlCaW5kU3RvcmVMYXllcihzdG9wc0ZlYXR1cmVTdG9yZSwgc3RvcHNMYXllcik7XG4gIHN0b3BzRmVhdHVyZVN0b3JlLmxheWVyLnZpc2libGUgPSB0cnVlO1xuICB0cnlBZGRMb2FkaW5nU3RyYXRlZ3koc3RvcHNGZWF0dXJlU3RvcmUsIGxvYWRpbmdTdHJhdGVneSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0Um91dGVzRmVhdHVyZVN0b3JlKHJvdXRlc0ZlYXR1cmVTdG9yZTogUm91dGVzRmVhdHVyZVN0b3JlLCBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSkge1xuICBjb25zdCBsb2FkaW5nU3RyYXRlZ3kgPSBuZXcgRmVhdHVyZVN0b3JlTG9hZGluZ1N0cmF0ZWd5KHtcbiAgICBtb3Rpb246IEZlYXR1cmVNb3Rpb24uTm9uZVxuICB9KTtcblxuICBjb25zdCByb3V0ZUxheWVyID0gbmV3IFZlY3RvckxheWVyKHtcbiAgICBpc0lnb0ludGVybmFsTGF5ZXI6IHRydWUsXG4gICAgaWQ6ICdpZ28tZGlyZWN0aW9uLXJvdXRlLWxheWVyJyxcbiAgICB0aXRsZTogbGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnNGb3JtLnJvdXRlTGF5ZXInKSxcbiAgICB6SW5kZXg6IDkxMCxcbiAgICBzb3VyY2U6IG5ldyBGZWF0dXJlRGF0YVNvdXJjZSgpLFxuICAgIHNob3dJbkxheWVyTGlzdDogdHJ1ZSxcbiAgICB3b3Jrc3BhY2U6IHtcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgIH0sXG4gICAgbGlua2VkTGF5ZXJzOiB7XG4gICAgICBsaW5rSWQ6ICdpZ28tZGlyZWN0aW9uLXJvdXRlLWxheWVyJ1xuICAgIH0sXG4gICAgZXhwb3J0YWJsZTogdHJ1ZSxcbiAgICBicm93c2FibGU6IGZhbHNlLFxuICAgIHN0eWxlOiBkaXJlY3Rpb25zU3R5bGVcbiAgfSk7XG4gIHRyeUJpbmRTdG9yZUxheWVyKHJvdXRlc0ZlYXR1cmVTdG9yZSwgcm91dGVMYXllcik7XG4gIHJvdXRlc0ZlYXR1cmVTdG9yZS5sYXllci52aXNpYmxlID0gdHJ1ZTtcbiAgdHJ5QWRkTG9hZGluZ1N0cmF0ZWd5KHJvdXRlc0ZlYXR1cmVTdG9yZSwgbG9hZGluZ1N0cmF0ZWd5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRTdGVwRmVhdHVyZVN0b3JlKHN0ZXBGZWF0dXJlU3RvcmU6IFN0ZXBGZWF0dXJlU3RvcmUpIHtcbiAgY29uc3QgbG9hZGluZ1N0cmF0ZWd5ID0gbmV3IEZlYXR1cmVTdG9yZUxvYWRpbmdTdHJhdGVneSh7XG4gICAgbW90aW9uOiBGZWF0dXJlTW90aW9uLk5vbmVcbiAgfSk7XG5cbiAgY29uc3Qgc3RlcExheWVyID0gbmV3IFZlY3RvckxheWVyKHtcbiAgICBpc0lnb0ludGVybmFsTGF5ZXI6IHRydWUsXG4gICAgaWQ6ICdpZ28tZGlyZWN0aW9uLXN0ZXAtbGF5ZXInLFxuICAgIHRpdGxlOiAnJyxcbiAgICB6SW5kZXg6IDkxMCxcbiAgICBzb3VyY2U6IG5ldyBGZWF0dXJlRGF0YVNvdXJjZSgpLFxuICAgIHNob3dJbkxheWVyTGlzdDogZmFsc2UsXG4gICAgd29ya3NwYWNlOiB7XG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICB9LFxuICAgIGxpbmtlZExheWVyczoge1xuICAgICAgbGlua0lkOiAnaWdvLWRpcmVjdGlvbi1yb3V0ZS1sYXllcidcbiAgICB9LFxuICAgIGV4cG9ydGFibGU6IGZhbHNlLFxuICAgIGJyb3dzYWJsZTogZmFsc2UsXG4gICAgc3R5bGU6IGRpcmVjdGlvbnNTdHlsZVxuICB9KTtcbiAgdHJ5QmluZFN0b3JlTGF5ZXIoc3RlcEZlYXR1cmVTdG9yZSwgc3RlcExheWVyKTtcbiAgc3RlcEZlYXR1cmVTdG9yZS5sYXllci52aXNpYmxlID0gdHJ1ZTtcbiAgdHJ5QWRkTG9hZGluZ1N0cmF0ZWd5KHN0ZXBGZWF0dXJlU3RvcmUsIGxvYWRpbmdTdHJhdGVneSk7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFN0b3BUb1N0b3BzRmVhdHVyZVN0b3JlKFxuICBzdG9wOiBTdG9wLFxuICBzdG9wc1N0b3JlOiBTdG9wc1N0b3JlLFxuICBzdG9wc0ZlYXR1cmVTdG9yZTogU3RvcHNGZWF0dXJlU3RvcmUsXG4gIHByb2plY3Rpb246IHN0cmluZyxcbiAgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UpIHtcbiAgbGV0IHN0b3BDb2xvcjtcbiAgbGV0IHN0b3BUZXh0O1xuXG5cbiAgc3dpdGNoIChzdG9wLnJlbGF0aXZlUG9zaXRpb24pIHtcbiAgICBjYXNlIERpcmVjdGlvblJlbGF0aXZlUG9zaXRpb25UeXBlLlN0YXJ0OlxuICAgICAgc3RvcENvbG9yID0gJyMwMDgwMDAnO1xuICAgICAgc3RvcFRleHQgPSBsYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0uc3RhcnQnKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRGlyZWN0aW9uUmVsYXRpdmVQb3NpdGlvblR5cGUuRW5kOlxuICAgICAgc3RvcENvbG9yID0gJyNmNjQxMzknO1xuICAgICAgc3RvcFRleHQgPSBsYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0uZW5kJyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RvcENvbG9yID0gJyNmZmQ3MDAnO1xuICAgICAgc3RvcFRleHQgPSBsYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZGlyZWN0aW9uc0Zvcm0uaW50ZXJtZWRpYXRlJykgKyAnICMnICsgc3RvcC5wb3NpdGlvbjtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgY29uc3QgZ2VvbWV0cnkgPSBuZXcgb2xHZW9tLlBvaW50KFxuICAgIG9sUHJvai50cmFuc2Zvcm0oc3RvcC5jb29yZGluYXRlcywgcHJvamVjdGlvbiwgc3RvcHNGZWF0dXJlU3RvcmUubWFwLnByb2plY3Rpb24pXG4gICk7XG5cbiAgY29uc3QgZ2VvanNvbkdlb20gPSBuZXcgT2xHZW9KU09OKCkud3JpdGVHZW9tZXRyeU9iamVjdChnZW9tZXRyeSwge1xuICAgIGZlYXR1cmVQcm9qZWN0aW9uOiBzdG9wc0ZlYXR1cmVTdG9yZS5tYXAucHJvamVjdGlvbixcbiAgICBkYXRhUHJvamVjdGlvbjogc3RvcHNGZWF0dXJlU3RvcmUubWFwLnByb2plY3Rpb25cbiAgfSkgYXMgRmVhdHVyZUdlb21ldHJ5O1xuXG4gIGNvbnN0IHByZXZpb3VzU3RvcCA9IHN0b3BzRmVhdHVyZVN0b3JlLmdldChzdG9wLmlkKTtcbiAgY29uc3QgcHJldmlvdXNTdG9wUmV2aXNpb24gPSBwcmV2aW91c1N0b3AgPyBwcmV2aW91c1N0b3AubWV0YS5yZXZpc2lvbiA6IDA7XG5cbiAgY29uc3Qgc3RvcEZlYXR1cmVTdG9yZTogRmVhdHVyZVdpdGhTdG9wID0ge1xuICAgIHR5cGU6IEZFQVRVUkUsXG4gICAgZ2VvbWV0cnk6IGdlb2pzb25HZW9tLFxuICAgIHByb2plY3Rpb246IHN0b3BzRmVhdHVyZVN0b3JlLm1hcC5wcm9qZWN0aW9uLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIGlkOiBzdG9wLmlkLFxuICAgICAgdHlwZTogRGlyZWN0aW9uVHlwZS5TdG9wLFxuICAgICAgc3RvcFRleHQsXG4gICAgICBzdG9wQ29sb3IsXG4gICAgICBzdG9wT3BhY2l0eTogMSxcbiAgICAgIHN0b3BcbiAgICB9LFxuICAgIG1ldGE6IHtcbiAgICAgIGlkOiBzdG9wLmlkLFxuICAgICAgcmV2aXNpb246IHByZXZpb3VzU3RvcFJldmlzaW9uICsgMVxuICAgIH0sXG4gICAgb2w6IG5ldyBvbEZlYXR1cmUoeyBnZW9tZXRyeSB9KVxuICB9O1xuICBzdG9wc0ZlYXR1cmVTdG9yZS51cGRhdGUoc3RvcEZlYXR1cmVTdG9yZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGREaXJlY3Rpb25Ub1JvdXRlc0ZlYXR1cmVTdG9yZShcbiAgcm91dGVzRmVhdHVyZVN0b3JlOiBSb3V0ZXNGZWF0dXJlU3RvcmUsXG4gIGRpcmVjdGlvbjogRGlyZWN0aW9uLFxuICBwcm9qZWN0aW9uOiBzdHJpbmcsXG4gIGFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlLFxuICBtb3ZlVG9FeHRlbnQgPSBmYWxzZSkge1xuICBjb25zdCBnZW9tID0gZGlyZWN0aW9uLmdlb21ldHJ5LmNvb3JkaW5hdGVzO1xuICBjb25zdCBnZW9tZXRyeTQzMjYgPSBuZXcgb2xHZW9tLkxpbmVTdHJpbmcoZ2VvbSk7XG4gIGNvbnN0IGdlb21ldHJ5ID0gZ2VvbWV0cnk0MzI2LnRyYW5zZm9ybShcbiAgICBwcm9qZWN0aW9uLFxuICAgIHJvdXRlc0ZlYXR1cmVTdG9yZS5tYXAucHJvamVjdGlvblxuICApO1xuXG4gIGNvbnN0IGdlb2pzb25HZW9tID0gbmV3IE9sR2VvSlNPTigpLndyaXRlR2VvbWV0cnlPYmplY3QoZ2VvbWV0cnksIHtcbiAgICBmZWF0dXJlUHJvamVjdGlvbjogcm91dGVzRmVhdHVyZVN0b3JlLm1hcC5wcm9qZWN0aW9uLFxuICAgIGRhdGFQcm9qZWN0aW9uOiByb3V0ZXNGZWF0dXJlU3RvcmUubWFwLnByb2plY3Rpb25cbiAgfSkgYXMgRmVhdHVyZUdlb21ldHJ5O1xuXG5cbiAgY29uc3QgcHJldmlvdXNSb3V0ZSA9IHJvdXRlc0ZlYXR1cmVTdG9yZS5nZXQoZGlyZWN0aW9uLmlkKTtcbiAgY29uc3QgcHJldmlvdXNSb3V0ZVJldmlzaW9uID0gcHJldmlvdXNSb3V0ZVxuICAgID8gcHJldmlvdXNSb3V0ZS5tZXRhLnJldmlzaW9uXG4gICAgOiAwO1xuXG4gIGNvbnN0IHJvdXRlRmVhdHVyZVN0b3JlOiBGZWF0dXJlV2l0aERpcmVjdGlvbiA9IHtcbiAgICB0eXBlOiBGRUFUVVJFLFxuICAgIGdlb21ldHJ5OiBnZW9qc29uR2VvbSxcbiAgICBwcm9qZWN0aW9uOiByb3V0ZXNGZWF0dXJlU3RvcmUubWFwLnByb2plY3Rpb24sXG4gICAgcHJvcGVydGllczoge1xuICAgICAgaWQ6IGRpcmVjdGlvbi5pZCxcbiAgICAgIHR5cGU6IERpcmVjdGlvblR5cGUuUm91dGUsXG4gICAgICBhY3RpdmUsXG4gICAgICBkaXJlY3Rpb25cbiAgICB9LFxuICAgIG1ldGE6IHtcbiAgICAgIGlkOiBkaXJlY3Rpb24uaWQsXG4gICAgICByZXZpc2lvbjogcHJldmlvdXNSb3V0ZVJldmlzaW9uICsgMVxuICAgIH0sXG4gICAgb2w6IG5ldyBvbEZlYXR1cmUoeyBnZW9tZXRyeSB9KVxuICB9O1xuICByb3V0ZXNGZWF0dXJlU3RvcmUudXBkYXRlKHJvdXRlRmVhdHVyZVN0b3JlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERpc3RhbmNlKGRpc3RhbmNlOiBudW1iZXIpOiBzdHJpbmcge1xuICBpZiAoZGlzdGFuY2UgPT09IDApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGRpc3RhbmNlID49IDEwMDAwMCkge1xuICAgIHJldHVybiBOdW1iZXJVdGlscy5yb3VuZFRvTkRlY2ltYWwoTWF0aC5yb3VuZChkaXN0YW5jZSkgLyAxMDAwLCAxKSArICcga20nO1xuICB9XG4gIGlmIChkaXN0YW5jZSA+PSAxMDAwMCkge1xuICAgIHJldHVybiBOdW1iZXJVdGlscy5yb3VuZFRvTkRlY2ltYWwoTWF0aC5yb3VuZChkaXN0YW5jZSkgLyAxMDAgLyAxMCwgMSkgKyAnIGttJztcbiAgfVxuICBpZiAoZGlzdGFuY2UgPj0gMTAwMCkge1xuICAgIHJldHVybiBOdW1iZXJVdGlscy5yb3VuZFRvTkRlY2ltYWwoTWF0aC5yb3VuZChkaXN0YW5jZSkgLyAxMDAgLyAxMCwgMSkgKyAnIGttJztcbiAgfVxuICByZXR1cm4gTnVtYmVyVXRpbHMucm91bmRUb05EZWNpbWFsKGRpc3RhbmNlLCAwKSArICcgbSc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREdXJhdGlvbihkdXJhdGlvbjogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKGR1cmF0aW9uID49IDM2MDApIHtcbiAgICBjb25zdCBob3VyID0gTWF0aC5mbG9vcihkdXJhdGlvbiAvIDM2MDApO1xuICAgIGNvbnN0IG1pbnV0ZSA9IE1hdGgucm91bmQoKGR1cmF0aW9uIC8gMzYwMCAtIGhvdXIpICogNjApO1xuICAgIGlmIChtaW51dGUgPT09IDYwKSB7XG4gICAgICByZXR1cm4gaG91ciArIDEgKyAnIGgnO1xuICAgIH1cbiAgICByZXR1cm4gaG91ciArICcgaCAnICsgbWludXRlICsgJyBtaW4nO1xuICB9XG5cbiAgaWYgKGR1cmF0aW9uID49IDYwKSB7XG4gICAgcmV0dXJuIE1hdGgucm91bmQoZHVyYXRpb24gLyA2MCkgKyAnIG1pbic7XG4gIH1cbiAgcmV0dXJuIGR1cmF0aW9uICsgJyBzJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEluc3RydWN0aW9uKFxuICB0eXBlLFxuICBtb2RpZmllcixcbiAgcm91dGUsXG4gIGRpcmVjdGlvbixcbiAgc3RlcFBvc2l0aW9uLFxuICBleGl0LFxuICBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSxcbiAgbGFzdFN0ZXAgPSBmYWxzZVxuKSB7XG4gIGNvbnN0IHRyYW5zbGF0ZSA9IGxhbmd1YWdlU2VydmljZS50cmFuc2xhdGU7XG4gIGxldCBkaXJlY3RpdmU7XG4gIGxldCBpbWFnZSA9ICdmb3J3YXJkJztcbiAgbGV0IGNzc0NsYXNzID0gJ3JvdGF0ZS0yNzAnO1xuICBjb25zdCB0cmFuc2xhdGVkRGlyZWN0aW9uID0gdHJhbnNsYXRlQmVhcmluZyhkaXJlY3Rpb24sIGxhbmd1YWdlU2VydmljZSk7XG4gIGNvbnN0IHRyYW5zbGF0ZWRNb2RpZmllciA9IHRyYW5zbGF0ZU1vZGlmaWVyKG1vZGlmaWVyLCBsYW5ndWFnZVNlcnZpY2UpO1xuICBjb25zdCBwcmVmaXggPSBtb2RpZmllciA9PT0gJ3N0cmFpZ2h0JyA/ICcnIDogdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZGlyZWN0aW9ucy5tb2RpZmllci5wcmVmaXgnKTtcblxuICBsZXQgYWdncmVnYXRlZERpcmVjdGlvbiA9IHByZWZpeCArIHRyYW5zbGF0ZWRNb2RpZmllcjtcblxuXG4gIGlmIChtb2RpZmllcj8uc2VhcmNoKCdzbGlnaHQnKSA+PSAwKSB7XG4gICAgYWdncmVnYXRlZERpcmVjdGlvbiA9IHRyYW5zbGF0ZWRNb2RpZmllcjtcbiAgfVxuXG4gIGlmIChtb2RpZmllciA9PT0gJ3V0dXJuJykge1xuICAgIGltYWdlID0gJ2ZvcndhcmQnO1xuICAgIGNzc0NsYXNzID0gJ3JvdGF0ZS05MCc7XG4gIH0gZWxzZSBpZiAobW9kaWZpZXIgPT09ICdzaGFycCByaWdodCcpIHtcbiAgICBpbWFnZSA9ICdzdWJkaXJlY3RvcnktYXJyb3ctcmlnaHQnO1xuICAgIGNzc0NsYXNzID0gJ2ljb24tZmxpcHBlZCc7XG4gIH0gZWxzZSBpZiAobW9kaWZpZXIgPT09ICdyaWdodCcpIHtcbiAgICBpbWFnZSA9ICdzdWJkaXJlY3RvcnktYXJyb3ctcmlnaHQnO1xuICAgIGNzc0NsYXNzID0gJ2ljb24tZmxpcHBlZCc7XG4gIH0gZWxzZSBpZiAobW9kaWZpZXIgPT09ICdzbGlnaHQgcmlnaHQnKSB7XG4gICAgaW1hZ2UgPSAnZm9yd2FyZCc7XG4gICAgY3NzQ2xhc3MgPSAncm90YXRlLTI5MCc7XG4gIH0gZWxzZSBpZiAobW9kaWZpZXIgPT09ICdzdHJhaWdodCcpIHtcbiAgICBpbWFnZSA9ICdmb3J3YXJkJztcbiAgfSBlbHNlIGlmIChtb2RpZmllciA9PT0gJ3NsaWdodCBsZWZ0Jykge1xuICAgIGltYWdlID0gJ2ZvcndhcmQnO1xuICAgIGNzc0NsYXNzID0gJ3JvdGF0ZS0yNTAnO1xuICB9IGVsc2UgaWYgKG1vZGlmaWVyID09PSAnbGVmdCcpIHtcbiAgICBpbWFnZSA9ICdzdWJkaXJlY3RvcnktYXJyb3ctbGVmdCc7XG4gICAgY3NzQ2xhc3MgPSAnaWNvbi1mbGlwcGVkJztcbiAgfSBlbHNlIGlmIChtb2RpZmllciA9PT0gJ3NoYXJwIGxlZnQnKSB7XG4gICAgaW1hZ2UgPSAnc3ViZGlyZWN0b3J5LWFycm93LWxlZnQnO1xuICAgIGNzc0NsYXNzID0gJ2ljb24tZmxpcHBlZCc7XG4gIH1cblxuICBpZiAodHlwZSA9PT0gJ3R1cm4nKSB7XG4gICAgaWYgKG1vZGlmaWVyID09PSAnc3RyYWlnaHQnKSB7XG4gICAgICBkaXJlY3RpdmUgPSB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kaXJlY3Rpb25zLnR1cm4uc3RyYWlnaHQnLCB7IHJvdXRlIH0pO1xuICAgIH0gZWxzZSBpZiAobW9kaWZpZXIgPT09ICd1dHVybicpIHtcbiAgICAgIGRpcmVjdGl2ZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnMudHVybi51dHVybicsIHsgcm91dGUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpcmVjdGl2ZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnMudHVybi5lbHNlJywgeyByb3V0ZSwgYWdncmVnYXRlZERpcmVjdGlvbiwgdHJhbnNsYXRlZE1vZGlmaWVyIH0pO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlID09PSAnbmV3IG5hbWUnKSB7XG4gICAgZGlyZWN0aXZlID0gdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZGlyZWN0aW9ucy5uZXcgbmFtZScsIHsgcm91dGUsIHRyYW5zbGF0ZWREaXJlY3Rpb24gfSk7XG4gICAgaW1hZ2UgPSAnY29tcGFzcyc7XG4gICAgY3NzQ2xhc3MgPSAnJztcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnZGVwYXJ0Jykge1xuICAgIGRpcmVjdGl2ZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnMuZGVwYXJ0JywgeyByb3V0ZSwgdHJhbnNsYXRlZERpcmVjdGlvbiB9KTtcbiAgICBpbWFnZSA9ICdjb21wYXNzJztcbiAgICBjc3NDbGFzcyA9ICcnO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhcnJpdmUnKSB7XG4gICAgaWYgKGxhc3RTdGVwKSB7XG4gICAgICBjb25zdCBjb21hID0gIXRyYW5zbGF0ZWRNb2RpZmllciA/ICcnIDogJywgJztcbiAgICAgIGFnZ3JlZ2F0ZWREaXJlY3Rpb24gPSAhdHJhbnNsYXRlZE1vZGlmaWVyID8gJycgOiBhZ2dyZWdhdGVkRGlyZWN0aW9uO1xuICAgICAgZGlyZWN0aXZlID0gdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZGlyZWN0aW9ucy5hcnJpdmUubGFzdFN0ZXAnLCB7IGNvbWEsIGFnZ3JlZ2F0ZWREaXJlY3Rpb24gfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpcmVjdGl2ZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnMuYXJyaXZlLmludGVybWVkaWF0ZScsIHsgcm91dGUgfSk7XG4gICAgICBpbWFnZSA9ICdtYXAtbWFya2VyJztcbiAgICAgIGNzc0NsYXNzID0gJyc7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdtZXJnZScpIHtcbiAgICBkaXJlY3RpdmUgPSB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kaXJlY3Rpb25zLm1lcmdlJywgeyByb3V0ZSB9KTtcbiAgICBpbWFnZSA9ICdmb3J3YXJkJztcbiAgICBjc3NDbGFzcyA9ICdyb3RhdGUtMjcwJztcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnb24gcmFtcCcpIHtcbiAgICBkaXJlY3RpdmUgPSB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kaXJlY3Rpb25zLm9uIHJhbXAnLCB7IGFnZ3JlZ2F0ZWREaXJlY3Rpb24gfSk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29mZiByYW1wJykge1xuICAgIGRpcmVjdGl2ZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnMub2ZmIHJhbXAnLCB7IGFnZ3JlZ2F0ZWREaXJlY3Rpb24gfSk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2ZvcmsnKSB7XG4gICAgaWYgKG1vZGlmaWVyLnNlYXJjaCgnbGVmdCcpID49IDApIHtcbiAgICAgIGRpcmVjdGl2ZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnMuZm9yay5sZWZ0JywgeyByb3V0ZSB9KTtcbiAgICB9IGVsc2UgaWYgKG1vZGlmaWVyLnNlYXJjaCgncmlnaHQnKSA+PSAwKSB7XG4gICAgICBkaXJlY3RpdmUgPSB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kaXJlY3Rpb25zLmZvcmsucmlnaHQnLCB7IHJvdXRlIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXJlY3RpdmUgPSB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kaXJlY3Rpb25zLmZvcmsuZWxzZScsIHsgcm91dGUgfSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdlbmQgb2Ygcm9hZCcpIHtcbiAgICBkaXJlY3RpdmUgPSB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kaXJlY3Rpb25zLmVuZCBvZiByb2FkJywgeyB0cmFuc2xhdGVkTW9kaWZpZXIsIHJvdXRlIH0pO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICd1c2UgbGFuZScpIHtcbiAgICBkaXJlY3RpdmUgPSB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kaXJlY3Rpb25zLnVzZSBsYW5lJyk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2NvbnRpbnVlJyAmJiBtb2RpZmllciAhPT0gJ3V0dXJuJykge1xuICAgIGRpcmVjdGl2ZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnMuY29udGludWUubm90VXR1cm4nLCB7IHJvdXRlIH0pO1xuICAgIGltYWdlID0gJ2ZvcndhcmQnO1xuICAgIGNzc0NsYXNzID0gJ3JvdGF0ZS0yNzAnO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdyb3VuZGFib3V0Jykge1xuICAgIGNvbnN0IGNudFN1ZmZpeCA9IGV4aXQgPT09IDEgP1xuICAgICAgdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZGlyZWN0aW9ucy5jbnRTdWZmaXguZmlyc3QnKSA6XG4gICAgICB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kaXJlY3Rpb25zLmNudFN1ZmZpeC5zZWNvbmRBbmRNb3JlJyk7XG4gICAgZGlyZWN0aXZlID0gdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZGlyZWN0aW9ucy5yb3VuZGFib3V0JywgeyBleGl0LCBjbnRTdWZmaXgsIHJvdXRlIH0pO1xuICAgIGltYWdlID0gJ2NoYXJ0LWRvbnV0JztcbiAgICBjc3NDbGFzcyA9ICcnO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdyb3RhcnknKSB7XG4gICAgZGlyZWN0aXZlID0gdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZGlyZWN0aW9ucy5yb3RhcnknKTtcbiAgICBpbWFnZSA9ICdjaGFydC1kb251dCc7XG4gICAgY3NzQ2xhc3MgPSAnJztcbiAgfSBlbHNlIGlmICh0eXBlID09PSAncm91bmRhYm91dCB0dXJuJykge1xuICAgIGRpcmVjdGl2ZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnMucm91bmRhYm91dCB0dXJuJyk7XG4gICAgaW1hZ2UgPSAnY2hhcnQtZG9udXQnO1xuICAgIGNzc0NsYXNzID0gJyc7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2V4aXQgcm91bmRhYm91dCcpIHtcbiAgICBkaXJlY3RpdmUgPSB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kaXJlY3Rpb25zLmV4aXQgcm91bmRhYm91dCcsIHsgcm91dGUgfSk7XG4gICAgaW1hZ2UgPSAnZm9yd2FyZCc7XG4gICAgY3NzQ2xhc3MgPSAncm90YXRlLTI3MCc7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ25vdGlmaWNhdGlvbicpIHtcbiAgICBkaXJlY3RpdmUgPSB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kaXJlY3Rpb25zLm5vdGlmaWNhdGlvbicpO1xuICB9IGVsc2UgaWYgKG1vZGlmaWVyID09PSAndXR1cm4nKSB7XG4gICAgZGlyZWN0aXZlID0gdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZGlyZWN0aW9ucy51dHVyblRleHQnLCB7IHRyYW5zbGF0ZWREaXJlY3Rpb24sIHJvdXRlIH0pO1xuICB9IGVsc2Uge1xuICAgIGRpcmVjdGl2ZSA9IHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnMudW5rbm93bicpO1xuICB9XG5cbiAgaW1hZ2UgPSBsYXN0U3RlcCA/ICdmbGFnLXZhcmlhbnQnIDogaW1hZ2U7XG4gIGNzc0NsYXNzID0gbGFzdFN0ZXAgPyAnJyA6IGNzc0NsYXNzO1xuICBpbWFnZSA9IHN0ZXBQb3NpdGlvbiA9PT0gMCA/ICdjb21wYXNzJyA6IGltYWdlO1xuICBjc3NDbGFzcyA9IHN0ZXBQb3NpdGlvbiA9PT0gMCA/ICcnIDogY3NzQ2xhc3M7XG5cbiAgcmV0dXJuIHsgaW5zdHJ1Y3Rpb246IGRpcmVjdGl2ZSwgaW1hZ2UsIGNzc0NsYXNzIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2xhdGVNb2RpZmllcihtb2RpZmllciwgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UpIHtcbiAgY29uc3QgdHJhbnNsYXRlID0gbGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZTtcbiAgaWYgKG1vZGlmaWVyID09PSAndXR1cm4nKSB7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnMudXR1cm4nKTtcbiAgfSBlbHNlIGlmIChtb2RpZmllciA9PT0gJ3NoYXJwIHJpZ2h0Jykge1xuICAgIHJldHVybiB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kaXJlY3Rpb25zLnNoYXJwIHJpZ2h0Jyk7XG4gIH0gZWxzZSBpZiAobW9kaWZpZXIgPT09ICdyaWdodCcpIHtcbiAgICByZXR1cm4gdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uZGlyZWN0aW9ucy5yaWdodCcpO1xuICB9IGVsc2UgaWYgKG1vZGlmaWVyID09PSAnc2xpZ2h0IHJpZ2h0Jykge1xuICAgIHJldHVybiB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kaXJlY3Rpb25zLnNsaWdodCByaWdodCcpO1xuICB9IGVsc2UgaWYgKG1vZGlmaWVyID09PSAnc2hhcnAgbGVmdCcpIHtcbiAgICByZXR1cm4gbGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnMuc2hhcnAgbGVmdCcpO1xuICB9IGVsc2UgaWYgKG1vZGlmaWVyID09PSAnbGVmdCcpIHtcbiAgICByZXR1cm4gbGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnMubGVmdCcpO1xuICB9IGVsc2UgaWYgKG1vZGlmaWVyID09PSAnc2xpZ2h0IGxlZnQnKSB7XG4gICAgcmV0dXJuIGxhbmd1YWdlU2VydmljZS50cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5kaXJlY3Rpb25zLnNsaWdodCBsZWZ0Jyk7XG4gIH0gZWxzZSBpZiAobW9kaWZpZXIgPT09ICdzdHJhaWdodCcpIHtcbiAgICByZXR1cm4gbGFuZ3VhZ2VTZXJ2aWNlLnRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmRpcmVjdGlvbnMuc3RyYWlnaHQnKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbW9kaWZpZXI7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0ZUJlYXJpbmcoYmVhcmluZzogbnVtYmVyLCBsYW5ndWFnZVNlcnZpY2U6IExhbmd1YWdlU2VydmljZSkge1xuICBjb25zdCB0cmFuc2xhdGUgPSBsYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlO1xuICBpZiAoYmVhcmluZyA+PSAzMzcgfHwgYmVhcmluZyA8IDIzKSB7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmNhcmRpbmFsUG9pbnRzLm4nKTtcbiAgfSBlbHNlIGlmIChiZWFyaW5nIDwgNjcpIHtcbiAgICByZXR1cm4gdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uY2FyZGluYWxQb2ludHMubmUnKTtcbiAgfSBlbHNlIGlmIChiZWFyaW5nIDwgMTEzKSB7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmNhcmRpbmFsUG9pbnRzLmUnKTtcbiAgfSBlbHNlIGlmIChiZWFyaW5nIDwgMTU3KSB7XG4gICAgcmV0dXJuIHRyYW5zbGF0ZS5pbnN0YW50KCdpZ28uZ2VvLmNhcmRpbmFsUG9pbnRzLnNlJyk7XG4gIH0gZWxzZSBpZiAoYmVhcmluZyA8IDIwMykge1xuICAgIHJldHVybiB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5jYXJkaW5hbFBvaW50cy5zJyk7XG4gIH0gZWxzZSBpZiAoYmVhcmluZyA8IDI0Nykge1xuICAgIHJldHVybiB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5jYXJkaW5hbFBvaW50cy5zdycpO1xuICB9IGVsc2UgaWYgKGJlYXJpbmcgPCAyOTMpIHtcbiAgICByZXR1cm4gdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uY2FyZGluYWxQb2ludHMudycpO1xuICB9IGVsc2UgaWYgKGJlYXJpbmcgPCAzMzcpIHtcbiAgICByZXR1cm4gdHJhbnNsYXRlLmluc3RhbnQoJ2lnby5nZW8uY2FyZGluYWxQb2ludHMubncnKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm47XG4gIH1cbn1cblxuXG4iXX0=
|