@igo2/geo 1.14.3 → 1.14.4
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/assets/icons/cross_black_18px.svg +88 -88
- package/assets/icons/place_blue_36px.svg +55 -55
- package/assets/icons/place_green_36px.svg +55 -55
- package/assets/icons/place_red_36px.svg +55 -55
- package/assets/icons/place_yellow_36px.svg +55 -55
- package/esm2020/igo2-geo.mjs +4 -4
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +300 -300
- package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +305 -305
- package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +246 -246
- 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 +5 -5
- package/esm2020/lib/datasource/datasource.module.mjs +21 -21
- package/esm2020/lib/datasource/index.mjs +3 -3
- package/esm2020/lib/datasource/shared/capabilities.service.mjs +431 -431
- 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 +36 -36
- 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 +2 -2
- package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +289 -289
- package/esm2020/lib/directions/directions-inputs/index.mjs +2 -2
- package/esm2020/lib/directions/directions-results/directions-results.component.mjs +195 -195
- package/esm2020/lib/directions/directions-results/index.mjs +2 -2
- 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 +5 -5
- package/esm2020/lib/directions/directions-sources/osrm-directions-source.mjs +99 -99
- package/esm2020/lib/directions/directions.component.mjs +310 -310
- package/esm2020/lib/directions/directions.module.mjs +101 -101
- package/esm2020/lib/directions/index.mjs +7 -7
- package/esm2020/lib/directions/shared/directions-source.service.mjs +17 -17
- package/esm2020/lib/directions/shared/directions.enum.mjs +28 -28
- 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 +6 -6
- 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 +2 -2
- package/esm2020/lib/download/download.module.mjs +41 -41
- package/esm2020/lib/download/index.mjs +3 -3
- package/esm2020/lib/download/shared/download.interface.mjs +2 -2
- package/esm2020/lib/download/shared/download.service.mjs +64 -64
- package/esm2020/lib/download/shared/index.mjs +3 -3
- 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 +3 -3
- 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 +9 -9
- 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 +4 -4
- 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 +5 -5
- package/esm2020/lib/import-export/export-button/export-button.component.mjs +63 -63
- package/esm2020/lib/import-export/export-button/index.mjs +2 -2
- package/esm2020/lib/import-export/import-export/import-export.component.mjs +1219 -1219
- package/esm2020/lib/import-export/import-export/index.mjs +2 -2
- 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 +15 -15
- package/esm2020/lib/import-export/shared/export.interface.mjs +1 -1
- package/esm2020/lib/import-export/shared/export.service.mjs +194 -194
- 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 +11 -11
- 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 +13 -13
- package/esm2020/lib/layer/shared/layers/layer.interface.mjs +16 -16
- 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 +140 -140
- 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 +412 -407
- package/esm2020/lib/map/shared/map.service.mjs +28 -28
- package/esm2020/lib/map/shared/map.utils.mjs +462 -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 +4 -4
- 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 +2 -2
- package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +134 -134
- package/esm2020/lib/metadata/metadata.module.mjs +54 -54
- package/esm2020/lib/metadata/shared/index.mjs +3 -3
- package/esm2020/lib/metadata/shared/metadata.interface.mjs +1 -1
- package/esm2020/lib/metadata/shared/metadata.service.mjs +19 -19
- 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 +5 -5
- 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 +2 -2
- package/esm2020/lib/overlay/index.mjs +2 -2
- 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 +4 -4
- package/esm2020/lib/print/print/print.component.mjs +125 -125
- package/esm2020/lib/print/print-form/index.mjs +2 -2
- package/esm2020/lib/print/print-form/print-form.component.mjs +427 -427
- 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 +5 -5
- package/esm2020/lib/print/shared/print.interface.mjs +1 -1
- package/esm2020/lib/print/shared/print.service.mjs +933 -933
- package/esm2020/lib/print/shared/print.type.mjs +29 -29
- package/esm2020/lib/query/index.mjs +2 -2
- package/esm2020/lib/query/query.module.mjs +28 -28
- package/esm2020/lib/query/shared/index.mjs +7 -7
- 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 +30 -30
- package/esm2020/lib/query/shared/query.interfaces.mjs +1 -1
- package/esm2020/lib/query/shared/query.service.mjs +732 -732
- 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 +511 -511
- 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 +117 -117
- package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +370 -370
- package/esm2020/lib/search/search-results/search-results-item.component.mjs +123 -123
- package/esm2020/lib/search/search-results/search-results.component.mjs +339 -339
- package/esm2020/lib/search/search-results/search-results.module.mjs +103 -103
- 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 +441 -441
- 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 +9 -9
- 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 +120 -120
- 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 -153
- 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 +2 -2
- package/esm2020/lib/search/shared/sources/nominatim.mjs +252 -252
- 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 +178 -178
- package/esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
- package/esm2020/lib/search/shared/sources/storedqueries.mjs +425 -425
- package/esm2020/lib/search/shared/sources/storedqueries.providers.mjs +40 -40
- package/esm2020/lib/toast/index.mjs +2 -2
- 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 +2 -2
- package/esm2020/lib/wkt/shared/index.mjs +2 -2
- 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 +8 -8
- 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 +8 -8
- 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 +4 -4
- 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 +15 -15
- 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 +44992 -44987
- package/fesm2015/igo2-geo.mjs.map +1 -1
- package/fesm2020/igo2-geo.mjs +43034 -43029
- 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 -126
- package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +80 -80
- 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 -109
- 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 -29
- 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 -90
- 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 -168
- 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 -35
- package/lib/query/shared/query.service.d.ts +56 -56
- 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 -230
- 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 -32
- package/lib/search/search-results/search-results-add-button.component.d.ts +76 -76
- package/lib/search/search-results/search-results-item.component.d.ts +47 -47
- package/lib/search/search-results/search-results.component.d.ts +161 -161
- package/lib/search/search-results/search-results.module.d.ts +28 -28
- 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 -102
- 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 -53
- 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,405 +1,405 @@
|
|
|
1
|
-
import { Component, Input, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { takeUntil } from 'rxjs/operators';
|
|
4
|
-
import { userAgent } from '@igo2/utils';
|
|
5
|
-
import { getEntityTitle, getEntityIcon } from '@igo2/common';
|
|
6
|
-
import { Clipboard } from '@igo2/utils';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common/http";
|
|
9
|
-
import * as i2 from "@angular/platform-browser";
|
|
10
|
-
import * as i3 from "@igo2/core";
|
|
11
|
-
import * as i4 from "@angular/common";
|
|
12
|
-
import * as i5 from "@angular/material/icon";
|
|
13
|
-
import * as i6 from "@igo2/common";
|
|
14
|
-
import * as i7 from "@ngx-translate/core";
|
|
15
|
-
function FeatureDetailsComponent_table_0_tr_2_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
16
|
-
i0.ɵɵelementStart(0, "td");
|
|
17
|
-
i0.ɵɵelement(1, "mat-icon", 7);
|
|
18
|
-
i0.ɵɵelementEnd();
|
|
19
|
-
} if (rf & 2) {
|
|
20
|
-
const ctx_r4 = i0.ɵɵnextContext(3);
|
|
21
|
-
i0.ɵɵadvance(1);
|
|
22
|
-
i0.ɵɵpropertyInterpolate("svgIcon", ctx_r4.icon);
|
|
23
|
-
} }
|
|
24
|
-
function FeatureDetailsComponent_table_0_tr_2_td_2_Template(rf, ctx) { if (rf & 1) {
|
|
25
|
-
const _r14 = i0.ɵɵgetCurrentView();
|
|
26
|
-
i0.ɵɵelementStart(0, "td")(1, "a", 8);
|
|
27
|
-
i0.ɵɵtext(2);
|
|
28
|
-
i0.ɵɵpipe(3, "translate");
|
|
29
|
-
i0.ɵɵelementEnd();
|
|
30
|
-
i0.ɵɵelementStart(4, "button", 9);
|
|
31
|
-
i0.ɵɵlistener("click", function FeatureDetailsComponent_table_0_tr_2_td_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r14); const property_r3 = i0.ɵɵnextContext().$implicit; const ctx_r12 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r12.copyTextToClipboard(property_r3.value)); });
|
|
32
|
-
i0.ɵɵelement(5, "mat-icon", 10);
|
|
33
|
-
i0.ɵɵelementEnd()();
|
|
34
|
-
} if (rf & 2) {
|
|
35
|
-
const property_r3 = i0.ɵɵnextContext().$implicit;
|
|
36
|
-
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
37
|
-
i0.ɵɵadvance(1);
|
|
38
|
-
i0.ɵɵpropertyInterpolate("href", property_r3.value, i0.ɵɵsanitizeUrl);
|
|
39
|
-
i0.ɵɵadvance(1);
|
|
40
|
-
i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(3, 3, "igo.geo.targetHtmlUrl"), " ", ctx_r5.title, "");
|
|
41
|
-
} }
|
|
42
|
-
function FeatureDetailsComponent_table_0_tr_2_td_3_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
-
i0.ɵɵelementStart(0, "td", 11);
|
|
44
|
-
i0.ɵɵtext(1);
|
|
45
|
-
i0.ɵɵelementEnd();
|
|
46
|
-
} if (rf & 2) {
|
|
47
|
-
const property_r3 = i0.ɵɵnextContext().$implicit;
|
|
48
|
-
i0.ɵɵadvance(1);
|
|
49
|
-
i0.ɵɵtextInterpolate1(" ", property_r3.key, " ");
|
|
50
|
-
} }
|
|
51
|
-
function FeatureDetailsComponent_table_0_tr_2_td_4_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
-
i0.ɵɵelement(0, "td", 12);
|
|
53
|
-
} if (rf & 2) {
|
|
54
|
-
const property_r3 = i0.ɵɵnextContext().$implicit;
|
|
55
|
-
i0.ɵɵproperty("innerHTML", property_r3.value, i0.ɵɵsanitizeHtml);
|
|
56
|
-
} }
|
|
57
|
-
const _c0 = function () { return { "cursor": "pointer", "color": "blue" }; };
|
|
58
|
-
function FeatureDetailsComponent_table_0_tr_2_td_5_Template(rf, ctx) { if (rf & 1) {
|
|
59
|
-
const _r20 = i0.ɵɵgetCurrentView();
|
|
60
|
-
i0.ɵɵelementStart(0, "td")(1, "u", 13);
|
|
61
|
-
i0.ɵɵlistener("click", function FeatureDetailsComponent_table_0_tr_2_td_5_Template_u_click_1_listener() { i0.ɵɵrestoreView(_r20); const property_r3 = i0.ɵɵnextContext().$implicit; const ctx_r18 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r18.openSecureUrl(property_r3.value)); });
|
|
62
|
-
i0.ɵɵtext(2);
|
|
63
|
-
i0.ɵɵelementEnd()();
|
|
64
|
-
} if (rf & 2) {
|
|
65
|
-
const property_r3 = i0.ɵɵnextContext().$implicit;
|
|
66
|
-
const ctx_r8 = i0.ɵɵnextContext(2);
|
|
67
|
-
i0.ɵɵadvance(1);
|
|
68
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(2, _c0));
|
|
69
|
-
i0.ɵɵadvance(1);
|
|
70
|
-
i0.ɵɵtextInterpolate(ctx_r8.getEmbeddedLinkText(property_r3.value));
|
|
71
|
-
} }
|
|
72
|
-
function FeatureDetailsComponent_table_0_tr_2_td_6_Template(rf, ctx) { if (rf & 1) {
|
|
73
|
-
const _r24 = i0.ɵɵgetCurrentView();
|
|
74
|
-
i0.ɵɵelementStart(0, "td")(1, "u", 13);
|
|
75
|
-
i0.ɵɵlistener("click", function FeatureDetailsComponent_table_0_tr_2_td_6_Template_u_click_1_listener() { i0.ɵɵrestoreView(_r24); const property_r3 = i0.ɵɵnextContext().$implicit; const ctx_r22 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r22.openSecureUrl(property_r3.value)); });
|
|
76
|
-
i0.ɵɵtext(2);
|
|
77
|
-
i0.ɵɵpipe(3, "translate");
|
|
78
|
-
i0.ɵɵelementEnd();
|
|
79
|
-
i0.ɵɵelementStart(4, "button", 9);
|
|
80
|
-
i0.ɵɵlistener("click", function FeatureDetailsComponent_table_0_tr_2_td_6_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r24); const property_r3 = i0.ɵɵnextContext().$implicit; const ctx_r25 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r25.copyTextToClipboard(property_r3.value)); });
|
|
81
|
-
i0.ɵɵelement(5, "mat-icon", 10);
|
|
82
|
-
i0.ɵɵelementEnd()();
|
|
83
|
-
} if (rf & 2) {
|
|
84
|
-
i0.ɵɵadvance(1);
|
|
85
|
-
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(4, _c0));
|
|
86
|
-
i0.ɵɵadvance(1);
|
|
87
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "igo.geo.targetHtmlUrl"));
|
|
88
|
-
} }
|
|
89
|
-
function FeatureDetailsComponent_table_0_tr_2_td_7_Template(rf, ctx) { if (rf & 1) {
|
|
90
|
-
const _r29 = i0.ɵɵgetCurrentView();
|
|
91
|
-
i0.ɵɵelementStart(0, "td")(1, "a", 14);
|
|
92
|
-
i0.ɵɵlistener("click", function FeatureDetailsComponent_table_0_tr_2_td_7_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r29); const property_r3 = i0.ɵɵnextContext().$implicit; const ctx_r27 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r27.openSecureUrl(property_r3.value)); });
|
|
93
|
-
i0.ɵɵelement(2, "img", 15);
|
|
94
|
-
i0.ɵɵpipe(3, "async");
|
|
95
|
-
i0.ɵɵpipe(4, "secureImage");
|
|
96
|
-
i0.ɵɵelementEnd()();
|
|
97
|
-
} if (rf & 2) {
|
|
98
|
-
const property_r3 = i0.ɵɵnextContext().$implicit;
|
|
99
|
-
i0.ɵɵadvance(1);
|
|
100
|
-
i0.ɵɵpropertyInterpolate("href", property_r3.value, i0.ɵɵsanitizeUrl);
|
|
101
|
-
i0.ɵɵadvance(1);
|
|
102
|
-
i0.ɵɵpropertyInterpolate("src", i0.ɵɵpipeBind1(3, 2, i0.ɵɵpipeBind1(4, 4, property_r3.value)), i0.ɵɵsanitizeUrl);
|
|
103
|
-
} }
|
|
104
|
-
function FeatureDetailsComponent_table_0_tr_2_td_8_Template(rf, ctx) { if (rf & 1) {
|
|
105
|
-
i0.ɵɵelement(0, "td", 12);
|
|
106
|
-
i0.ɵɵpipe(1, "json");
|
|
107
|
-
} if (rf & 2) {
|
|
108
|
-
const property_r3 = i0.ɵɵnextContext().$implicit;
|
|
109
|
-
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind1(1, 1, property_r3.value), i0.ɵɵsanitizeHtml);
|
|
110
|
-
} }
|
|
111
|
-
function FeatureDetailsComponent_table_0_tr_2_Template(rf, ctx) { if (rf & 1) {
|
|
112
|
-
i0.ɵɵelementStart(0, "tr");
|
|
113
|
-
i0.ɵɵtemplate(1, FeatureDetailsComponent_table_0_tr_2_td_1_Template, 2, 1, "td", 4);
|
|
114
|
-
i0.ɵɵtemplate(2, FeatureDetailsComponent_table_0_tr_2_td_2_Template, 6, 5, "td", 4);
|
|
115
|
-
i0.ɵɵtemplate(3, FeatureDetailsComponent_table_0_tr_2_td_3_Template, 2, 1, "td", 5);
|
|
116
|
-
i0.ɵɵtemplate(4, FeatureDetailsComponent_table_0_tr_2_td_4_Template, 1, 1, "td", 6);
|
|
117
|
-
i0.ɵɵtemplate(5, FeatureDetailsComponent_table_0_tr_2_td_5_Template, 3, 3, "td", 4);
|
|
118
|
-
i0.ɵɵtemplate(6, FeatureDetailsComponent_table_0_tr_2_td_6_Template, 6, 5, "td", 4);
|
|
119
|
-
i0.ɵɵtemplate(7, FeatureDetailsComponent_table_0_tr_2_td_7_Template, 5, 6, "td", 4);
|
|
120
|
-
i0.ɵɵtemplate(8, FeatureDetailsComponent_table_0_tr_2_td_8_Template, 2, 3, "td", 6);
|
|
121
|
-
i0.ɵɵelementEnd();
|
|
122
|
-
} if (rf & 2) {
|
|
123
|
-
const property_r3 = ctx.$implicit;
|
|
124
|
-
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
125
|
-
i0.ɵɵadvance(1);
|
|
126
|
-
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === "_blank" && property_r3.key === "url");
|
|
127
|
-
i0.ɵɵadvance(1);
|
|
128
|
-
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === "_blank" && property_r3.key === "url");
|
|
129
|
-
i0.ɵɵadvance(1);
|
|
130
|
-
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === undefined);
|
|
131
|
-
i0.ɵɵadvance(1);
|
|
132
|
-
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === undefined && !ctx_r2.isObject(property_r3.value) && !ctx_r2.isUrl(property_r3.value) && !ctx_r2.isEmbeddedLink(property_r3.value));
|
|
133
|
-
i0.ɵɵadvance(1);
|
|
134
|
-
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === undefined && ctx_r2.isEmbeddedLink(property_r3.value));
|
|
135
|
-
i0.ɵɵadvance(1);
|
|
136
|
-
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === undefined && !ctx_r2.isObject(property_r3.value) && (ctx_r2.isDoc(property_r3.value) || ctx_r2.isUrl(property_r3.value)) && !ctx_r2.isImg(property_r3.value));
|
|
137
|
-
i0.ɵɵadvance(1);
|
|
138
|
-
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === undefined && !ctx_r2.isObject(property_r3.value) && ctx_r2.isUrl(property_r3.value) && ctx_r2.isImg(property_r3.value));
|
|
139
|
-
i0.ɵɵadvance(1);
|
|
140
|
-
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === undefined && ctx_r2.isObject(property_r3.value));
|
|
141
|
-
} }
|
|
142
|
-
function FeatureDetailsComponent_table_0_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
-
i0.ɵɵelementStart(0, "table", 2)(1, "tbody");
|
|
144
|
-
i0.ɵɵtemplate(2, FeatureDetailsComponent_table_0_tr_2_Template, 9, 8, "tr", 3);
|
|
145
|
-
i0.ɵɵpipe(3, "keyvalue");
|
|
146
|
-
i0.ɵɵelementEnd()();
|
|
147
|
-
} if (rf & 2) {
|
|
148
|
-
const ctx_r0 = i0.ɵɵnextContext();
|
|
149
|
-
i0.ɵɵadvance(2);
|
|
150
|
-
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(3, 1, ctx_r0.filterFeatureProperties(ctx_r0.feature)));
|
|
151
|
-
} }
|
|
152
|
-
function FeatureDetailsComponent_iframe_1_Template(rf, ctx) { if (rf & 1) {
|
|
153
|
-
i0.ɵɵelement(0, "iframe", 16);
|
|
154
|
-
} if (rf & 2) {
|
|
155
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
156
|
-
i0.ɵɵproperty("srcdoc", ctx_r1.htmlSanitizer(ctx_r1.feature.properties), i0.ɵɵsanitizeHtml)("src", ctx_r1.urlSanitizer(ctx_r1.feature.properties.url), i0.ɵɵsanitizeResourceUrl);
|
|
157
|
-
} }
|
|
158
|
-
export class FeatureDetailsComponent {
|
|
159
|
-
constructor(http, cdRef, sanitizer, networkService, messageService, configService) {
|
|
160
|
-
this.http = http;
|
|
161
|
-
this.cdRef = cdRef;
|
|
162
|
-
this.sanitizer = sanitizer;
|
|
163
|
-
this.networkService = networkService;
|
|
164
|
-
this.messageService = messageService;
|
|
165
|
-
this.configService = configService;
|
|
166
|
-
this.unsubscribe$ = new Subject();
|
|
167
|
-
this.ready = false;
|
|
168
|
-
this.routeEvent = new EventEmitter();
|
|
169
|
-
this.selectFeature = new EventEmitter();
|
|
170
|
-
this.htmlDisplayEvent = new EventEmitter();
|
|
171
|
-
this.networkService.currentState().pipe(takeUntil(this.unsubscribe$)).subscribe((state) => {
|
|
172
|
-
this.state = state;
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
get source() {
|
|
176
|
-
return this._source;
|
|
177
|
-
}
|
|
178
|
-
set source(value) {
|
|
179
|
-
this._source = value;
|
|
180
|
-
this.cdRef.detectChanges();
|
|
181
|
-
}
|
|
182
|
-
get feature() {
|
|
183
|
-
return this._feature;
|
|
184
|
-
}
|
|
185
|
-
set feature(value) {
|
|
186
|
-
this._feature = value;
|
|
187
|
-
this.cdRef.detectChanges();
|
|
188
|
-
this.selectFeature.emit();
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* @internal
|
|
192
|
-
*/
|
|
193
|
-
get title() {
|
|
194
|
-
return getEntityTitle(this.feature);
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* @internal
|
|
198
|
-
*/
|
|
199
|
-
get icon() {
|
|
200
|
-
return getEntityIcon(this.feature) || 'link';
|
|
201
|
-
}
|
|
202
|
-
ngOnInit() {
|
|
203
|
-
this.ready = true;
|
|
204
|
-
}
|
|
205
|
-
ngOnDestroy() {
|
|
206
|
-
this.unsubscribe$.next();
|
|
207
|
-
this.unsubscribe$.complete();
|
|
208
|
-
}
|
|
209
|
-
urlSanitizer(value) {
|
|
210
|
-
return this.sanitizer.bypassSecurityTrustResourceUrl(value);
|
|
211
|
-
}
|
|
212
|
-
isHtmlDisplay() {
|
|
213
|
-
if (this.feature && this.isObject(this.feature.properties) && this.feature.properties.target === 'iframe') {
|
|
214
|
-
this.htmlDisplayEvent.emit(true);
|
|
215
|
-
return true;
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
this.htmlDisplayEvent.emit(false);
|
|
219
|
-
return false;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
htmlSanitizer(value) {
|
|
223
|
-
if (!value.body || userAgent.getBrowserName() === 'Internet Explorer') {
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
const regexBase = /<base href="[\w:\/\.]+">/;
|
|
227
|
-
if (!regexBase.test(value.body)) {
|
|
228
|
-
const url = new URL(value.url, window.location.origin);
|
|
229
|
-
value.body = value.body.replace('<head>', `<head><base href="${url.origin}">`);
|
|
230
|
-
}
|
|
231
|
-
return this.sanitizer.bypassSecurityTrustHtml(value.body);
|
|
232
|
-
}
|
|
233
|
-
isObject(value) {
|
|
234
|
-
return typeof value === 'object';
|
|
235
|
-
}
|
|
236
|
-
openSecureUrl(value) {
|
|
237
|
-
let url;
|
|
238
|
-
const regexDepot = new RegExp(this.configService?.getConfig('depot.url') + '.*?(?="|$)');
|
|
239
|
-
if (regexDepot.test(value)) {
|
|
240
|
-
url = value.match(regexDepot)[0];
|
|
241
|
-
this.http.get(url, {
|
|
242
|
-
responseType: 'blob'
|
|
243
|
-
})
|
|
244
|
-
.subscribe((docOrImage) => {
|
|
245
|
-
const fileUrl = URL.createObjectURL(docOrImage);
|
|
246
|
-
window.open(fileUrl, '_blank');
|
|
247
|
-
this.cdRef.detectChanges();
|
|
248
|
-
}, (error) => {
|
|
249
|
-
this.messageService.error('igo.geo.targetHtmlUrlUnauthorized', 'igo.geo.targetHtmlUrlUnauthorizedTitle');
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
else {
|
|
253
|
-
let url = value;
|
|
254
|
-
if (this.isEmbeddedLink(value)) {
|
|
255
|
-
var div = document.createElement('div');
|
|
256
|
-
div.innerHTML = value;
|
|
257
|
-
url = div.children[0].getAttribute('href');
|
|
258
|
-
}
|
|
259
|
-
window.open(url, '_blank');
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
isUrl(value) {
|
|
263
|
-
if (typeof value === 'string') {
|
|
264
|
-
const regex = /^https?:\/\//;
|
|
265
|
-
return regex.test(value);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
isDoc(value) {
|
|
269
|
-
if (typeof value === 'string') {
|
|
270
|
-
if (this.isUrl(value)) {
|
|
271
|
-
const regex = /(pdf|docx?|xlsx?)$/;
|
|
272
|
-
return regex.test(value.toLowerCase());
|
|
273
|
-
}
|
|
274
|
-
else {
|
|
275
|
-
return false;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
isImg(value) {
|
|
280
|
-
if (typeof value === 'string') {
|
|
281
|
-
if (this.isUrl(value)) {
|
|
282
|
-
const regex = /(jpe?g|png|gif)$/;
|
|
283
|
-
return regex.test(value.toLowerCase());
|
|
284
|
-
}
|
|
285
|
-
else {
|
|
286
|
-
return false;
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
isEmbeddedLink(value) {
|
|
291
|
-
if (typeof value === 'string') {
|
|
292
|
-
const matchRegex = /<a/g;
|
|
293
|
-
const match = value.match(matchRegex) || [];
|
|
294
|
-
const count = match.length;
|
|
295
|
-
if (count === 1) {
|
|
296
|
-
return true;
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
return false;
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
return false;
|
|
303
|
-
}
|
|
304
|
-
getEmbeddedLinkText(value) {
|
|
305
|
-
const regex = /(?:>).*?(?=<|$)/;
|
|
306
|
-
let text = value.match(regex)[0];
|
|
307
|
-
text = text.replace(/>/g, '');
|
|
308
|
-
return text;
|
|
309
|
-
}
|
|
310
|
-
filterFeatureProperties(feature) {
|
|
311
|
-
const allowedFieldsAndAlias = feature.meta ? feature.meta.alias : undefined;
|
|
312
|
-
const properties = {};
|
|
313
|
-
let offlineButtonState;
|
|
314
|
-
if (this.map) {
|
|
315
|
-
this.map.offlineButtonToggle$.pipe(takeUntil(this.unsubscribe$)).subscribe(state => {
|
|
316
|
-
offlineButtonState = state;
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
if (feature.properties && feature.properties.Route && this.toolbox && !this.toolbox.getTool('directions')) {
|
|
320
|
-
delete feature.properties.Route;
|
|
321
|
-
}
|
|
322
|
-
if (allowedFieldsAndAlias) {
|
|
323
|
-
Object.keys(allowedFieldsAndAlias).forEach(field => {
|
|
324
|
-
properties[allowedFieldsAndAlias[field]] = feature.properties[field];
|
|
325
|
-
});
|
|
326
|
-
return properties;
|
|
327
|
-
}
|
|
328
|
-
else if (offlineButtonState !== undefined) {
|
|
329
|
-
if (!offlineButtonState) {
|
|
330
|
-
if (this.state.connection && feature.meta && feature.meta.excludeAttribute) {
|
|
331
|
-
const excludeAttribute = feature.meta.excludeAttribute;
|
|
332
|
-
excludeAttribute.forEach(attribute => {
|
|
333
|
-
delete feature.properties[attribute];
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
else if (!this.state.connection && feature.meta && feature.meta.excludeAttributeOffline) {
|
|
337
|
-
const excludeAttributeOffline = feature.meta.excludeAttributeOffline;
|
|
338
|
-
excludeAttributeOffline.forEach(attribute => {
|
|
339
|
-
delete feature.properties[attribute];
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
else {
|
|
344
|
-
if (feature.meta && feature.meta.excludeAttributeOffline) {
|
|
345
|
-
const excludeAttributeOffline = feature.meta.excludeAttributeOffline;
|
|
346
|
-
excludeAttributeOffline.forEach(attribute => {
|
|
347
|
-
delete feature.properties[attribute];
|
|
348
|
-
});
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
else {
|
|
353
|
-
if (this.state.connection && feature.meta && feature.meta.excludeAttribute) {
|
|
354
|
-
const excludeAttribute = feature.meta.excludeAttribute;
|
|
355
|
-
excludeAttribute.forEach(attribute => {
|
|
356
|
-
delete feature.properties[attribute];
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
else if (!this.state.connection && feature.meta && feature.meta.excludeAttributeOffline) {
|
|
360
|
-
const excludeAttributeOffline = feature.meta.excludeAttributeOffline;
|
|
361
|
-
excludeAttributeOffline.forEach(attribute => {
|
|
362
|
-
delete feature.properties[attribute];
|
|
363
|
-
});
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
return feature.properties;
|
|
367
|
-
}
|
|
368
|
-
/**
|
|
369
|
-
* Copy the url to a clipboard
|
|
370
|
-
*/
|
|
371
|
-
copyTextToClipboard(value) {
|
|
372
|
-
const successful = Clipboard.copy(value);
|
|
373
|
-
if (successful) {
|
|
374
|
-
this.messageService.success('igo.geo.query.link.message');
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
FeatureDetailsComponent.ɵfac = function FeatureDetailsComponent_Factory(t) { return new (t || FeatureDetailsComponent)(i0.ɵɵdirectiveInject(i1.HttpClient), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2.DomSanitizer), i0.ɵɵdirectiveInject(i3.NetworkService), i0.ɵɵdirectiveInject(i3.MessageService), i0.ɵɵdirectiveInject(i3.ConfigService)); };
|
|
379
|
-
FeatureDetailsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FeatureDetailsComponent, selectors: [["igo-feature-details"]], inputs: { source: "source", map: "map", toolbox: "toolbox", feature: "feature" }, outputs: { routeEvent: "routeEvent", selectFeature: "selectFeature", htmlDisplayEvent: "htmlDisplayEvent" }, decls: 2, vars: 2, consts: [["class", "igo-striped mat-typography", 4, "ngIf"], [3, "srcdoc", "src", 4, "ngIf"], [1, "igo-striped", "mat-typography"], [4, "ngFor", "ngForOf"], [4, "ngIf"], ["id", "keyValue", 4, "ngIf"], [3, "innerHTML", 4, "ngIf"], ["mat-list-avatar", "", 3, "svgIcon"], ["target", "_blank", "rel", "noopener noreferrer", 3, "href"], ["mat-icon-button", "", 1, "copyClipboard", 3, "click"], ["svgIcon", "content-copy"], ["id", "keyValue"], [3, "innerHTML"], [3, "ngStyle", "click"], ["target", "_blank", "rel", "noopener noreferrer", 3, "href", "click"], ["igoImageError", "", "width", "225", "height", "auto", 3, "src"], [3, "srcdoc", "src"]], template: function FeatureDetailsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
380
|
-
i0.ɵɵtemplate(0, FeatureDetailsComponent_table_0_Template, 4, 3, "table", 0);
|
|
381
|
-
i0.ɵɵtemplate(1, FeatureDetailsComponent_iframe_1_Template, 1, 2, "iframe", 1);
|
|
382
|
-
} if (rf & 2) {
|
|
383
|
-
i0.ɵɵproperty("ngIf", ctx.ready && ctx.feature && ctx.isObject(ctx.feature.properties) && ctx.feature.properties.target !== "iframe");
|
|
384
|
-
i0.ɵɵadvance(1);
|
|
385
|
-
i0.ɵɵproperty("ngIf", ctx.isHtmlDisplay());
|
|
386
|
-
} }, dependencies: [i4.NgForOf, i4.NgIf, i4.NgStyle, i5.MatIcon, i6.ImageErrorDirective, i4.AsyncPipe, i4.JsonPipe, i7.TranslatePipe, i6.KeyValuePipe, i6.SecureImagePipe], styles: ["table[_ngcontent-%COMP%]{width:100%}table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:5px}#keyValue[_ngcontent-%COMP%]{width:30%}table[_ngcontent-%COMP%] .routing{cursor:pointer}iframe[_ngcontent-%COMP%]{height:calc(100% - 4px);width:100%;border:0}.copyClipboard[_ngcontent-%COMP%]{border:none;background:transparent;cursor:pointer}"], changeDetection: 0 });
|
|
387
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FeatureDetailsComponent, [{
|
|
388
|
-
type: Component,
|
|
389
|
-
args: [{ selector: 'igo-feature-details', changeDetection: ChangeDetectionStrategy.OnPush, template: "<table class=\"igo-striped mat-typography\" *ngIf=\"ready && feature && isObject(feature.properties) && feature.properties.target !== 'iframe'\">\n <tbody>\n <tr *ngFor=\"let property of filterFeatureProperties(feature) | keyvalue\">\n\n <td *ngIf=\"feature.properties.target === '_blank' && property.key === 'url'\">\n <mat-icon mat-list-avatar svgIcon=\"{{icon}}\"></mat-icon>\n </td>\n\n <td *ngIf=\"feature.properties.target === '_blank' && property.key === 'url'\">\n <a href=\"{{property.value}}\" target='_blank' rel=\"noopener noreferrer\"> {{ 'igo.geo.targetHtmlUrl' | translate }} {{title}}</a>\n <button class=\"copyClipboard\" mat-icon-button (click)=\"copyTextToClipboard(property.value)\">\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n </button>\n </td>\n\n <td id=\"keyValue\" *ngIf=\"feature.properties.target === undefined\">\n {{property.key}}\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && !isObject(property.value) && !isUrl(property.value) && !isEmbeddedLink(property.value)\" [innerHTML]=\"property.value\">\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && isEmbeddedLink(property.value)\">\n <u [ngStyle]=\"{'cursor': 'pointer', 'color': 'blue'}\" (click)=\"openSecureUrl(property.value)\">{{ getEmbeddedLinkText(property.value) }}</u>\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && !isObject(property.value) && (isDoc(property.value) || isUrl(property.value)) && !isImg(property.value)\">\n <u [ngStyle]=\"{'cursor': 'pointer', 'color': 'blue'}\" (click)=\"openSecureUrl(property.value)\">{{ 'igo.geo.targetHtmlUrl' | translate }}</u>\n <button class=\"copyClipboard\" mat-icon-button (click)=\"copyTextToClipboard(property.value)\">\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n </button>\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && !isObject(property.value) && isUrl(property.value) && isImg(property.value)\">\n <a href=\"{{property.value}}\" target='_blank' (click)=\"openSecureUrl(property.value)\" rel=\"noopener noreferrer\">\n <img igoImageError src=\"{{(property.value | secureImage) |\u00A0async}}\" width=\"225\" height=\"auto\">\n </a>\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && isObject(property.value)\" [innerHTML]=\"property.value | json\">\n </td>\n\n </tr>\n </tbody>\n</table>\n\n<iframe *ngIf=\"isHtmlDisplay()\" [srcdoc]=\"htmlSanitizer(feature.properties)\" [src]=\"urlSanitizer(feature.properties.url)\"></iframe>\n", styles: ["table{width:100%}table td{padding:5px}#keyValue{width:30%}table ::ng-deep .routing{cursor:pointer}iframe{height:calc(100% - 4px);width:100%;border:0}.copyClipboard{border:none;background:transparent;cursor:pointer}\n"] }]
|
|
390
|
-
}], function () { return [{ type: i1.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i2.DomSanitizer }, { type: i3.NetworkService }, { type: i3.MessageService }, { type: i3.ConfigService }]; }, { source: [{
|
|
391
|
-
type: Input
|
|
392
|
-
}], map: [{
|
|
393
|
-
type: Input
|
|
394
|
-
}], toolbox: [{
|
|
395
|
-
type: Input
|
|
396
|
-
}], feature: [{
|
|
397
|
-
type: Input
|
|
398
|
-
}], routeEvent: [{
|
|
399
|
-
type: Output
|
|
400
|
-
}], selectFeature: [{
|
|
401
|
-
type: Output
|
|
402
|
-
}], htmlDisplayEvent: [{
|
|
403
|
-
type: Output
|
|
404
|
-
}] }); })();
|
|
1
|
+
import { Component, Input, ChangeDetectionStrategy, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { takeUntil } from 'rxjs/operators';
|
|
4
|
+
import { userAgent } from '@igo2/utils';
|
|
5
|
+
import { getEntityTitle, getEntityIcon } from '@igo2/common';
|
|
6
|
+
import { Clipboard } from '@igo2/utils';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/common/http";
|
|
9
|
+
import * as i2 from "@angular/platform-browser";
|
|
10
|
+
import * as i3 from "@igo2/core";
|
|
11
|
+
import * as i4 from "@angular/common";
|
|
12
|
+
import * as i5 from "@angular/material/icon";
|
|
13
|
+
import * as i6 from "@igo2/common";
|
|
14
|
+
import * as i7 from "@ngx-translate/core";
|
|
15
|
+
function FeatureDetailsComponent_table_0_tr_2_td_1_Template(rf, ctx) { if (rf & 1) {
|
|
16
|
+
i0.ɵɵelementStart(0, "td");
|
|
17
|
+
i0.ɵɵelement(1, "mat-icon", 7);
|
|
18
|
+
i0.ɵɵelementEnd();
|
|
19
|
+
} if (rf & 2) {
|
|
20
|
+
const ctx_r4 = i0.ɵɵnextContext(3);
|
|
21
|
+
i0.ɵɵadvance(1);
|
|
22
|
+
i0.ɵɵpropertyInterpolate("svgIcon", ctx_r4.icon);
|
|
23
|
+
} }
|
|
24
|
+
function FeatureDetailsComponent_table_0_tr_2_td_2_Template(rf, ctx) { if (rf & 1) {
|
|
25
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
26
|
+
i0.ɵɵelementStart(0, "td")(1, "a", 8);
|
|
27
|
+
i0.ɵɵtext(2);
|
|
28
|
+
i0.ɵɵpipe(3, "translate");
|
|
29
|
+
i0.ɵɵelementEnd();
|
|
30
|
+
i0.ɵɵelementStart(4, "button", 9);
|
|
31
|
+
i0.ɵɵlistener("click", function FeatureDetailsComponent_table_0_tr_2_td_2_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r14); const property_r3 = i0.ɵɵnextContext().$implicit; const ctx_r12 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r12.copyTextToClipboard(property_r3.value)); });
|
|
32
|
+
i0.ɵɵelement(5, "mat-icon", 10);
|
|
33
|
+
i0.ɵɵelementEnd()();
|
|
34
|
+
} if (rf & 2) {
|
|
35
|
+
const property_r3 = i0.ɵɵnextContext().$implicit;
|
|
36
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
37
|
+
i0.ɵɵadvance(1);
|
|
38
|
+
i0.ɵɵpropertyInterpolate("href", property_r3.value, i0.ɵɵsanitizeUrl);
|
|
39
|
+
i0.ɵɵadvance(1);
|
|
40
|
+
i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(3, 3, "igo.geo.targetHtmlUrl"), " ", ctx_r5.title, "");
|
|
41
|
+
} }
|
|
42
|
+
function FeatureDetailsComponent_table_0_tr_2_td_3_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
+
i0.ɵɵelementStart(0, "td", 11);
|
|
44
|
+
i0.ɵɵtext(1);
|
|
45
|
+
i0.ɵɵelementEnd();
|
|
46
|
+
} if (rf & 2) {
|
|
47
|
+
const property_r3 = i0.ɵɵnextContext().$implicit;
|
|
48
|
+
i0.ɵɵadvance(1);
|
|
49
|
+
i0.ɵɵtextInterpolate1(" ", property_r3.key, " ");
|
|
50
|
+
} }
|
|
51
|
+
function FeatureDetailsComponent_table_0_tr_2_td_4_Template(rf, ctx) { if (rf & 1) {
|
|
52
|
+
i0.ɵɵelement(0, "td", 12);
|
|
53
|
+
} if (rf & 2) {
|
|
54
|
+
const property_r3 = i0.ɵɵnextContext().$implicit;
|
|
55
|
+
i0.ɵɵproperty("innerHTML", property_r3.value, i0.ɵɵsanitizeHtml);
|
|
56
|
+
} }
|
|
57
|
+
const _c0 = function () { return { "cursor": "pointer", "color": "blue" }; };
|
|
58
|
+
function FeatureDetailsComponent_table_0_tr_2_td_5_Template(rf, ctx) { if (rf & 1) {
|
|
59
|
+
const _r20 = i0.ɵɵgetCurrentView();
|
|
60
|
+
i0.ɵɵelementStart(0, "td")(1, "u", 13);
|
|
61
|
+
i0.ɵɵlistener("click", function FeatureDetailsComponent_table_0_tr_2_td_5_Template_u_click_1_listener() { i0.ɵɵrestoreView(_r20); const property_r3 = i0.ɵɵnextContext().$implicit; const ctx_r18 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r18.openSecureUrl(property_r3.value)); });
|
|
62
|
+
i0.ɵɵtext(2);
|
|
63
|
+
i0.ɵɵelementEnd()();
|
|
64
|
+
} if (rf & 2) {
|
|
65
|
+
const property_r3 = i0.ɵɵnextContext().$implicit;
|
|
66
|
+
const ctx_r8 = i0.ɵɵnextContext(2);
|
|
67
|
+
i0.ɵɵadvance(1);
|
|
68
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(2, _c0));
|
|
69
|
+
i0.ɵɵadvance(1);
|
|
70
|
+
i0.ɵɵtextInterpolate(ctx_r8.getEmbeddedLinkText(property_r3.value));
|
|
71
|
+
} }
|
|
72
|
+
function FeatureDetailsComponent_table_0_tr_2_td_6_Template(rf, ctx) { if (rf & 1) {
|
|
73
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
74
|
+
i0.ɵɵelementStart(0, "td")(1, "u", 13);
|
|
75
|
+
i0.ɵɵlistener("click", function FeatureDetailsComponent_table_0_tr_2_td_6_Template_u_click_1_listener() { i0.ɵɵrestoreView(_r24); const property_r3 = i0.ɵɵnextContext().$implicit; const ctx_r22 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r22.openSecureUrl(property_r3.value)); });
|
|
76
|
+
i0.ɵɵtext(2);
|
|
77
|
+
i0.ɵɵpipe(3, "translate");
|
|
78
|
+
i0.ɵɵelementEnd();
|
|
79
|
+
i0.ɵɵelementStart(4, "button", 9);
|
|
80
|
+
i0.ɵɵlistener("click", function FeatureDetailsComponent_table_0_tr_2_td_6_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r24); const property_r3 = i0.ɵɵnextContext().$implicit; const ctx_r25 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r25.copyTextToClipboard(property_r3.value)); });
|
|
81
|
+
i0.ɵɵelement(5, "mat-icon", 10);
|
|
82
|
+
i0.ɵɵelementEnd()();
|
|
83
|
+
} if (rf & 2) {
|
|
84
|
+
i0.ɵɵadvance(1);
|
|
85
|
+
i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(4, _c0));
|
|
86
|
+
i0.ɵɵadvance(1);
|
|
87
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "igo.geo.targetHtmlUrl"));
|
|
88
|
+
} }
|
|
89
|
+
function FeatureDetailsComponent_table_0_tr_2_td_7_Template(rf, ctx) { if (rf & 1) {
|
|
90
|
+
const _r29 = i0.ɵɵgetCurrentView();
|
|
91
|
+
i0.ɵɵelementStart(0, "td")(1, "a", 14);
|
|
92
|
+
i0.ɵɵlistener("click", function FeatureDetailsComponent_table_0_tr_2_td_7_Template_a_click_1_listener() { i0.ɵɵrestoreView(_r29); const property_r3 = i0.ɵɵnextContext().$implicit; const ctx_r27 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r27.openSecureUrl(property_r3.value)); });
|
|
93
|
+
i0.ɵɵelement(2, "img", 15);
|
|
94
|
+
i0.ɵɵpipe(3, "async");
|
|
95
|
+
i0.ɵɵpipe(4, "secureImage");
|
|
96
|
+
i0.ɵɵelementEnd()();
|
|
97
|
+
} if (rf & 2) {
|
|
98
|
+
const property_r3 = i0.ɵɵnextContext().$implicit;
|
|
99
|
+
i0.ɵɵadvance(1);
|
|
100
|
+
i0.ɵɵpropertyInterpolate("href", property_r3.value, i0.ɵɵsanitizeUrl);
|
|
101
|
+
i0.ɵɵadvance(1);
|
|
102
|
+
i0.ɵɵpropertyInterpolate("src", i0.ɵɵpipeBind1(3, 2, i0.ɵɵpipeBind1(4, 4, property_r3.value)), i0.ɵɵsanitizeUrl);
|
|
103
|
+
} }
|
|
104
|
+
function FeatureDetailsComponent_table_0_tr_2_td_8_Template(rf, ctx) { if (rf & 1) {
|
|
105
|
+
i0.ɵɵelement(0, "td", 12);
|
|
106
|
+
i0.ɵɵpipe(1, "json");
|
|
107
|
+
} if (rf & 2) {
|
|
108
|
+
const property_r3 = i0.ɵɵnextContext().$implicit;
|
|
109
|
+
i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind1(1, 1, property_r3.value), i0.ɵɵsanitizeHtml);
|
|
110
|
+
} }
|
|
111
|
+
function FeatureDetailsComponent_table_0_tr_2_Template(rf, ctx) { if (rf & 1) {
|
|
112
|
+
i0.ɵɵelementStart(0, "tr");
|
|
113
|
+
i0.ɵɵtemplate(1, FeatureDetailsComponent_table_0_tr_2_td_1_Template, 2, 1, "td", 4);
|
|
114
|
+
i0.ɵɵtemplate(2, FeatureDetailsComponent_table_0_tr_2_td_2_Template, 6, 5, "td", 4);
|
|
115
|
+
i0.ɵɵtemplate(3, FeatureDetailsComponent_table_0_tr_2_td_3_Template, 2, 1, "td", 5);
|
|
116
|
+
i0.ɵɵtemplate(4, FeatureDetailsComponent_table_0_tr_2_td_4_Template, 1, 1, "td", 6);
|
|
117
|
+
i0.ɵɵtemplate(5, FeatureDetailsComponent_table_0_tr_2_td_5_Template, 3, 3, "td", 4);
|
|
118
|
+
i0.ɵɵtemplate(6, FeatureDetailsComponent_table_0_tr_2_td_6_Template, 6, 5, "td", 4);
|
|
119
|
+
i0.ɵɵtemplate(7, FeatureDetailsComponent_table_0_tr_2_td_7_Template, 5, 6, "td", 4);
|
|
120
|
+
i0.ɵɵtemplate(8, FeatureDetailsComponent_table_0_tr_2_td_8_Template, 2, 3, "td", 6);
|
|
121
|
+
i0.ɵɵelementEnd();
|
|
122
|
+
} if (rf & 2) {
|
|
123
|
+
const property_r3 = ctx.$implicit;
|
|
124
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
125
|
+
i0.ɵɵadvance(1);
|
|
126
|
+
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === "_blank" && property_r3.key === "url");
|
|
127
|
+
i0.ɵɵadvance(1);
|
|
128
|
+
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === "_blank" && property_r3.key === "url");
|
|
129
|
+
i0.ɵɵadvance(1);
|
|
130
|
+
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === undefined);
|
|
131
|
+
i0.ɵɵadvance(1);
|
|
132
|
+
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === undefined && !ctx_r2.isObject(property_r3.value) && !ctx_r2.isUrl(property_r3.value) && !ctx_r2.isEmbeddedLink(property_r3.value));
|
|
133
|
+
i0.ɵɵadvance(1);
|
|
134
|
+
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === undefined && ctx_r2.isEmbeddedLink(property_r3.value));
|
|
135
|
+
i0.ɵɵadvance(1);
|
|
136
|
+
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === undefined && !ctx_r2.isObject(property_r3.value) && (ctx_r2.isDoc(property_r3.value) || ctx_r2.isUrl(property_r3.value)) && !ctx_r2.isImg(property_r3.value));
|
|
137
|
+
i0.ɵɵadvance(1);
|
|
138
|
+
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === undefined && !ctx_r2.isObject(property_r3.value) && ctx_r2.isUrl(property_r3.value) && ctx_r2.isImg(property_r3.value));
|
|
139
|
+
i0.ɵɵadvance(1);
|
|
140
|
+
i0.ɵɵproperty("ngIf", ctx_r2.feature.properties.target === undefined && ctx_r2.isObject(property_r3.value));
|
|
141
|
+
} }
|
|
142
|
+
function FeatureDetailsComponent_table_0_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
+
i0.ɵɵelementStart(0, "table", 2)(1, "tbody");
|
|
144
|
+
i0.ɵɵtemplate(2, FeatureDetailsComponent_table_0_tr_2_Template, 9, 8, "tr", 3);
|
|
145
|
+
i0.ɵɵpipe(3, "keyvalue");
|
|
146
|
+
i0.ɵɵelementEnd()();
|
|
147
|
+
} if (rf & 2) {
|
|
148
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
149
|
+
i0.ɵɵadvance(2);
|
|
150
|
+
i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(3, 1, ctx_r0.filterFeatureProperties(ctx_r0.feature)));
|
|
151
|
+
} }
|
|
152
|
+
function FeatureDetailsComponent_iframe_1_Template(rf, ctx) { if (rf & 1) {
|
|
153
|
+
i0.ɵɵelement(0, "iframe", 16);
|
|
154
|
+
} if (rf & 2) {
|
|
155
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
156
|
+
i0.ɵɵproperty("srcdoc", ctx_r1.htmlSanitizer(ctx_r1.feature.properties), i0.ɵɵsanitizeHtml)("src", ctx_r1.urlSanitizer(ctx_r1.feature.properties.url), i0.ɵɵsanitizeResourceUrl);
|
|
157
|
+
} }
|
|
158
|
+
export class FeatureDetailsComponent {
|
|
159
|
+
constructor(http, cdRef, sanitizer, networkService, messageService, configService) {
|
|
160
|
+
this.http = http;
|
|
161
|
+
this.cdRef = cdRef;
|
|
162
|
+
this.sanitizer = sanitizer;
|
|
163
|
+
this.networkService = networkService;
|
|
164
|
+
this.messageService = messageService;
|
|
165
|
+
this.configService = configService;
|
|
166
|
+
this.unsubscribe$ = new Subject();
|
|
167
|
+
this.ready = false;
|
|
168
|
+
this.routeEvent = new EventEmitter();
|
|
169
|
+
this.selectFeature = new EventEmitter();
|
|
170
|
+
this.htmlDisplayEvent = new EventEmitter();
|
|
171
|
+
this.networkService.currentState().pipe(takeUntil(this.unsubscribe$)).subscribe((state) => {
|
|
172
|
+
this.state = state;
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
get source() {
|
|
176
|
+
return this._source;
|
|
177
|
+
}
|
|
178
|
+
set source(value) {
|
|
179
|
+
this._source = value;
|
|
180
|
+
this.cdRef.detectChanges();
|
|
181
|
+
}
|
|
182
|
+
get feature() {
|
|
183
|
+
return this._feature;
|
|
184
|
+
}
|
|
185
|
+
set feature(value) {
|
|
186
|
+
this._feature = value;
|
|
187
|
+
this.cdRef.detectChanges();
|
|
188
|
+
this.selectFeature.emit();
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* @internal
|
|
192
|
+
*/
|
|
193
|
+
get title() {
|
|
194
|
+
return getEntityTitle(this.feature);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* @internal
|
|
198
|
+
*/
|
|
199
|
+
get icon() {
|
|
200
|
+
return getEntityIcon(this.feature) || 'link';
|
|
201
|
+
}
|
|
202
|
+
ngOnInit() {
|
|
203
|
+
this.ready = true;
|
|
204
|
+
}
|
|
205
|
+
ngOnDestroy() {
|
|
206
|
+
this.unsubscribe$.next();
|
|
207
|
+
this.unsubscribe$.complete();
|
|
208
|
+
}
|
|
209
|
+
urlSanitizer(value) {
|
|
210
|
+
return this.sanitizer.bypassSecurityTrustResourceUrl(value);
|
|
211
|
+
}
|
|
212
|
+
isHtmlDisplay() {
|
|
213
|
+
if (this.feature && this.isObject(this.feature.properties) && this.feature.properties.target === 'iframe') {
|
|
214
|
+
this.htmlDisplayEvent.emit(true);
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
this.htmlDisplayEvent.emit(false);
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
htmlSanitizer(value) {
|
|
223
|
+
if (!value.body || userAgent.getBrowserName() === 'Internet Explorer') {
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
const regexBase = /<base href="[\w:\/\.]+">/;
|
|
227
|
+
if (!regexBase.test(value.body)) {
|
|
228
|
+
const url = new URL(value.url, window.location.origin);
|
|
229
|
+
value.body = value.body.replace('<head>', `<head><base href="${url.origin}">`);
|
|
230
|
+
}
|
|
231
|
+
return this.sanitizer.bypassSecurityTrustHtml(value.body);
|
|
232
|
+
}
|
|
233
|
+
isObject(value) {
|
|
234
|
+
return typeof value === 'object';
|
|
235
|
+
}
|
|
236
|
+
openSecureUrl(value) {
|
|
237
|
+
let url;
|
|
238
|
+
const regexDepot = new RegExp(this.configService?.getConfig('depot.url') + '.*?(?="|$)');
|
|
239
|
+
if (regexDepot.test(value)) {
|
|
240
|
+
url = value.match(regexDepot)[0];
|
|
241
|
+
this.http.get(url, {
|
|
242
|
+
responseType: 'blob'
|
|
243
|
+
})
|
|
244
|
+
.subscribe((docOrImage) => {
|
|
245
|
+
const fileUrl = URL.createObjectURL(docOrImage);
|
|
246
|
+
window.open(fileUrl, '_blank');
|
|
247
|
+
this.cdRef.detectChanges();
|
|
248
|
+
}, (error) => {
|
|
249
|
+
this.messageService.error('igo.geo.targetHtmlUrlUnauthorized', 'igo.geo.targetHtmlUrlUnauthorizedTitle');
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
let url = value;
|
|
254
|
+
if (this.isEmbeddedLink(value)) {
|
|
255
|
+
var div = document.createElement('div');
|
|
256
|
+
div.innerHTML = value;
|
|
257
|
+
url = div.children[0].getAttribute('href');
|
|
258
|
+
}
|
|
259
|
+
window.open(url, '_blank');
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
isUrl(value) {
|
|
263
|
+
if (typeof value === 'string') {
|
|
264
|
+
const regex = /^https?:\/\//;
|
|
265
|
+
return regex.test(value);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
isDoc(value) {
|
|
269
|
+
if (typeof value === 'string') {
|
|
270
|
+
if (this.isUrl(value)) {
|
|
271
|
+
const regex = /(pdf|docx?|xlsx?)$/;
|
|
272
|
+
return regex.test(value.toLowerCase());
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
return false;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
isImg(value) {
|
|
280
|
+
if (typeof value === 'string') {
|
|
281
|
+
if (this.isUrl(value)) {
|
|
282
|
+
const regex = /(jpe?g|png|gif)$/;
|
|
283
|
+
return regex.test(value.toLowerCase());
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
isEmbeddedLink(value) {
|
|
291
|
+
if (typeof value === 'string') {
|
|
292
|
+
const matchRegex = /<a/g;
|
|
293
|
+
const match = value.match(matchRegex) || [];
|
|
294
|
+
const count = match.length;
|
|
295
|
+
if (count === 1) {
|
|
296
|
+
return true;
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
getEmbeddedLinkText(value) {
|
|
305
|
+
const regex = /(?:>).*?(?=<|$)/;
|
|
306
|
+
let text = value.match(regex)[0];
|
|
307
|
+
text = text.replace(/>/g, '');
|
|
308
|
+
return text;
|
|
309
|
+
}
|
|
310
|
+
filterFeatureProperties(feature) {
|
|
311
|
+
const allowedFieldsAndAlias = feature.meta ? feature.meta.alias : undefined;
|
|
312
|
+
const properties = {};
|
|
313
|
+
let offlineButtonState;
|
|
314
|
+
if (this.map) {
|
|
315
|
+
this.map.offlineButtonToggle$.pipe(takeUntil(this.unsubscribe$)).subscribe(state => {
|
|
316
|
+
offlineButtonState = state;
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
if (feature.properties && feature.properties.Route && this.toolbox && !this.toolbox.getTool('directions')) {
|
|
320
|
+
delete feature.properties.Route;
|
|
321
|
+
}
|
|
322
|
+
if (allowedFieldsAndAlias) {
|
|
323
|
+
Object.keys(allowedFieldsAndAlias).forEach(field => {
|
|
324
|
+
properties[allowedFieldsAndAlias[field]] = feature.properties[field];
|
|
325
|
+
});
|
|
326
|
+
return properties;
|
|
327
|
+
}
|
|
328
|
+
else if (offlineButtonState !== undefined) {
|
|
329
|
+
if (!offlineButtonState) {
|
|
330
|
+
if (this.state.connection && feature.meta && feature.meta.excludeAttribute) {
|
|
331
|
+
const excludeAttribute = feature.meta.excludeAttribute;
|
|
332
|
+
excludeAttribute.forEach(attribute => {
|
|
333
|
+
delete feature.properties[attribute];
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
else if (!this.state.connection && feature.meta && feature.meta.excludeAttributeOffline) {
|
|
337
|
+
const excludeAttributeOffline = feature.meta.excludeAttributeOffline;
|
|
338
|
+
excludeAttributeOffline.forEach(attribute => {
|
|
339
|
+
delete feature.properties[attribute];
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
else {
|
|
344
|
+
if (feature.meta && feature.meta.excludeAttributeOffline) {
|
|
345
|
+
const excludeAttributeOffline = feature.meta.excludeAttributeOffline;
|
|
346
|
+
excludeAttributeOffline.forEach(attribute => {
|
|
347
|
+
delete feature.properties[attribute];
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
if (this.state.connection && feature.meta && feature.meta.excludeAttribute) {
|
|
354
|
+
const excludeAttribute = feature.meta.excludeAttribute;
|
|
355
|
+
excludeAttribute.forEach(attribute => {
|
|
356
|
+
delete feature.properties[attribute];
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
else if (!this.state.connection && feature.meta && feature.meta.excludeAttributeOffline) {
|
|
360
|
+
const excludeAttributeOffline = feature.meta.excludeAttributeOffline;
|
|
361
|
+
excludeAttributeOffline.forEach(attribute => {
|
|
362
|
+
delete feature.properties[attribute];
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return feature.properties;
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Copy the url to a clipboard
|
|
370
|
+
*/
|
|
371
|
+
copyTextToClipboard(value) {
|
|
372
|
+
const successful = Clipboard.copy(value);
|
|
373
|
+
if (successful) {
|
|
374
|
+
this.messageService.success('igo.geo.query.link.message');
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
FeatureDetailsComponent.ɵfac = function FeatureDetailsComponent_Factory(t) { return new (t || FeatureDetailsComponent)(i0.ɵɵdirectiveInject(i1.HttpClient), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2.DomSanitizer), i0.ɵɵdirectiveInject(i3.NetworkService), i0.ɵɵdirectiveInject(i3.MessageService), i0.ɵɵdirectiveInject(i3.ConfigService)); };
|
|
379
|
+
FeatureDetailsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FeatureDetailsComponent, selectors: [["igo-feature-details"]], inputs: { source: "source", map: "map", toolbox: "toolbox", feature: "feature" }, outputs: { routeEvent: "routeEvent", selectFeature: "selectFeature", htmlDisplayEvent: "htmlDisplayEvent" }, decls: 2, vars: 2, consts: [["class", "igo-striped mat-typography", 4, "ngIf"], [3, "srcdoc", "src", 4, "ngIf"], [1, "igo-striped", "mat-typography"], [4, "ngFor", "ngForOf"], [4, "ngIf"], ["id", "keyValue", 4, "ngIf"], [3, "innerHTML", 4, "ngIf"], ["mat-list-avatar", "", 3, "svgIcon"], ["target", "_blank", "rel", "noopener noreferrer", 3, "href"], ["mat-icon-button", "", 1, "copyClipboard", 3, "click"], ["svgIcon", "content-copy"], ["id", "keyValue"], [3, "innerHTML"], [3, "ngStyle", "click"], ["target", "_blank", "rel", "noopener noreferrer", 3, "href", "click"], ["igoImageError", "", "width", "225", "height", "auto", 3, "src"], [3, "srcdoc", "src"]], template: function FeatureDetailsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
380
|
+
i0.ɵɵtemplate(0, FeatureDetailsComponent_table_0_Template, 4, 3, "table", 0);
|
|
381
|
+
i0.ɵɵtemplate(1, FeatureDetailsComponent_iframe_1_Template, 1, 2, "iframe", 1);
|
|
382
|
+
} if (rf & 2) {
|
|
383
|
+
i0.ɵɵproperty("ngIf", ctx.ready && ctx.feature && ctx.isObject(ctx.feature.properties) && ctx.feature.properties.target !== "iframe");
|
|
384
|
+
i0.ɵɵadvance(1);
|
|
385
|
+
i0.ɵɵproperty("ngIf", ctx.isHtmlDisplay());
|
|
386
|
+
} }, dependencies: [i4.NgForOf, i4.NgIf, i4.NgStyle, i5.MatIcon, i6.ImageErrorDirective, i4.AsyncPipe, i4.JsonPipe, i7.TranslatePipe, i6.KeyValuePipe, i6.SecureImagePipe], styles: ["table[_ngcontent-%COMP%]{width:100%}table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:5px}#keyValue[_ngcontent-%COMP%]{width:30%}table[_ngcontent-%COMP%] .routing{cursor:pointer}iframe[_ngcontent-%COMP%]{height:calc(100% - 4px);width:100%;border:0}.copyClipboard[_ngcontent-%COMP%]{border:none;background:transparent;cursor:pointer}"], changeDetection: 0 });
|
|
387
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FeatureDetailsComponent, [{
|
|
388
|
+
type: Component,
|
|
389
|
+
args: [{ selector: 'igo-feature-details', changeDetection: ChangeDetectionStrategy.OnPush, template: "<table class=\"igo-striped mat-typography\" *ngIf=\"ready && feature && isObject(feature.properties) && feature.properties.target !== 'iframe'\">\n <tbody>\n <tr *ngFor=\"let property of filterFeatureProperties(feature) | keyvalue\">\n\n <td *ngIf=\"feature.properties.target === '_blank' && property.key === 'url'\">\n <mat-icon mat-list-avatar svgIcon=\"{{icon}}\"></mat-icon>\n </td>\n\n <td *ngIf=\"feature.properties.target === '_blank' && property.key === 'url'\">\n <a href=\"{{property.value}}\" target='_blank' rel=\"noopener noreferrer\"> {{ 'igo.geo.targetHtmlUrl' | translate }} {{title}}</a>\n <button class=\"copyClipboard\" mat-icon-button (click)=\"copyTextToClipboard(property.value)\">\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n </button>\n </td>\n\n <td id=\"keyValue\" *ngIf=\"feature.properties.target === undefined\">\n {{property.key}}\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && !isObject(property.value) && !isUrl(property.value) && !isEmbeddedLink(property.value)\" [innerHTML]=\"property.value\">\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && isEmbeddedLink(property.value)\">\n <u [ngStyle]=\"{'cursor': 'pointer', 'color': 'blue'}\" (click)=\"openSecureUrl(property.value)\">{{ getEmbeddedLinkText(property.value) }}</u>\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && !isObject(property.value) && (isDoc(property.value) || isUrl(property.value)) && !isImg(property.value)\">\n <u [ngStyle]=\"{'cursor': 'pointer', 'color': 'blue'}\" (click)=\"openSecureUrl(property.value)\">{{ 'igo.geo.targetHtmlUrl' | translate }}</u>\n <button class=\"copyClipboard\" mat-icon-button (click)=\"copyTextToClipboard(property.value)\">\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n </button>\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && !isObject(property.value) && isUrl(property.value) && isImg(property.value)\">\n <a href=\"{{property.value}}\" target='_blank' (click)=\"openSecureUrl(property.value)\" rel=\"noopener noreferrer\">\n <img igoImageError src=\"{{(property.value | secureImage) |\u00A0async}}\" width=\"225\" height=\"auto\">\n </a>\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && isObject(property.value)\" [innerHTML]=\"property.value | json\">\n </td>\n\n </tr>\n </tbody>\n</table>\n\n<iframe *ngIf=\"isHtmlDisplay()\" [srcdoc]=\"htmlSanitizer(feature.properties)\" [src]=\"urlSanitizer(feature.properties.url)\"></iframe>\n", styles: ["table{width:100%}table td{padding:5px}#keyValue{width:30%}table ::ng-deep .routing{cursor:pointer}iframe{height:calc(100% - 4px);width:100%;border:0}.copyClipboard{border:none;background:transparent;cursor:pointer}\n"] }]
|
|
390
|
+
}], function () { return [{ type: i1.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i2.DomSanitizer }, { type: i3.NetworkService }, { type: i3.MessageService }, { type: i3.ConfigService }]; }, { source: [{
|
|
391
|
+
type: Input
|
|
392
|
+
}], map: [{
|
|
393
|
+
type: Input
|
|
394
|
+
}], toolbox: [{
|
|
395
|
+
type: Input
|
|
396
|
+
}], feature: [{
|
|
397
|
+
type: Input
|
|
398
|
+
}], routeEvent: [{
|
|
399
|
+
type: Output
|
|
400
|
+
}], selectFeature: [{
|
|
401
|
+
type: Output
|
|
402
|
+
}], htmlDisplayEvent: [{
|
|
403
|
+
type: Output
|
|
404
|
+
}] }); })();
|
|
405
405
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZlYXR1cmUvZmVhdHVyZS1kZXRhaWxzL2ZlYXR1cmUtZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9mZWF0dXJlL2ZlYXR1cmUtZGV0YWlscy9mZWF0dXJlLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEVBRXZCLE1BQU0sRUFDTixZQUFZLEVBR2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUd4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQU83RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7O0lDcEJsQywwQkFBNkU7SUFDM0UsOEJBQXdEO0lBQzFELGlCQUFLOzs7SUFEdUIsZUFBa0I7SUFBbEIsZ0RBQWtCOzs7O0lBRzlDLDBCQUE2RSxXQUFBO0lBQ0gsWUFBbUQ7O0lBQUEsaUJBQUk7SUFDL0gsaUNBQTRGO0lBQTlDLHFPQUFTLGVBQUEsOENBQW1DLENBQUEsSUFBQztJQUN6RiwrQkFBNEM7SUFDOUMsaUJBQVMsRUFBQTs7OztJQUhOLGVBQXlCO0lBQXpCLHFFQUF5QjtJQUE0QyxlQUFtRDtJQUFuRCxnR0FBbUQ7OztJQU03SCw4QkFBa0U7SUFDaEUsWUFDRjtJQUFBLGlCQUFLOzs7SUFESCxlQUNGO0lBREUsZ0RBQ0Y7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QXRCLE1BQU07WUFDRyxnQkFBZ0I7a0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkluaXQsXG4gIE9uRGVzdHJveVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IHVzZXJBZ2VudCB9IGZyb20gJ0BpZ28yL3V0aWxzJztcbmltcG9ydCB7IE5ldHdvcmtTZXJ2aWNlLCBDb25uZWN0aW9uU3RhdGUsIE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZSc7XG5pbXBvcnQgeyBnZXRFbnRpdHlUaXRsZSwgZ2V0RW50aXR5SWNvbiB9IGZyb20gJ0BpZ28yL2NvbW1vbic7XG5pbXBvcnQgdHlwZSB7IFRvb2xib3ggfSBmcm9tICdAaWdvMi9jb21tb24nO1xuXG5pbXBvcnQgeyBGZWF0dXJlIH0gZnJvbSAnLi4vc2hhcmVkJztcbmltcG9ydCB7IFNlYXJjaFNvdXJjZSB9IGZyb20gJy4uLy4uL3NlYXJjaC9zaGFyZWQvc291cmNlcy9zb3VyY2UnO1xuaW1wb3J0IHsgSWdvTWFwIH0gZnJvbSAnLi4vLi4vbWFwL3NoYXJlZC9tYXAnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENsaXBib2FyZCB9IGZyb20gJ0BpZ28yL3V0aWxzJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1mZWF0dXJlLWRldGFpbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmVhdHVyZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmVhdHVyZS1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuXG5leHBvcnQgY2xhc3MgRmVhdHVyZURldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3RhdGU6IENvbm5lY3Rpb25TdGF0ZTtcbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICByZWFkeSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBzb3VyY2UoKTogU2VhcmNoU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5fc291cmNlO1xuICB9XG4gIHNldCBzb3VyY2UodmFsdWU6IFNlYXJjaFNvdXJjZSkge1xuICAgIHRoaXMuX3NvdXJjZSA9IHZhbHVlO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgQElucHV0KCkgbWFwOiBJZ29NYXA7XG5cbiAgQElucHV0KCkgdG9vbGJveDogVG9vbGJveDtcblxuICBASW5wdXQoKVxuICBnZXQgZmVhdHVyZSgpOiBGZWF0dXJlIHtcbiAgICByZXR1cm4gdGhpcy5fZmVhdHVyZTtcbiAgfVxuICBzZXQgZmVhdHVyZSh2YWx1ZTogRmVhdHVyZSkge1xuICAgIHRoaXMuX2ZlYXR1cmUgPSB2YWx1ZTtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnNlbGVjdEZlYXR1cmUuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmVhdHVyZTogRmVhdHVyZTtcbiAgcHJpdmF0ZSBfc291cmNlOiBTZWFyY2hTb3VyY2U7XG5cbiAgQE91dHB1dCgpIHJvdXRlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RGZWF0dXJlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgaHRtbERpc3BsYXlFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0RW50aXR5VGl0bGUodGhpcy5mZWF0dXJlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldCBpY29uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGdldEVudGl0eUljb24odGhpcy5mZWF0dXJlKSB8fCAnbGluayc7XG4gIH1cblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByaXZhdGUgbmV0d29ya1NlcnZpY2U6IE5ldHdvcmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZVxuICApIHtcbiAgICB0aGlzLm5ldHdvcmtTZXJ2aWNlLmN1cnJlbnRTdGF0ZSgpLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKChzdGF0ZTogQ29ubmVjdGlvblN0YXRlKSA9PiB7XG4gICAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlYWR5ID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgdXJsU2FuaXRpemVyKHZhbHVlKTogU2FmZVJlc291cmNlVXJsIHtcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHZhbHVlKTtcbiAgfVxuXG5cbiAgaXNIdG1sRGlzcGxheSgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5mZWF0dXJlICYmIHRoaXMuaXNPYmplY3QodGhpcy5mZWF0dXJlLnByb3BlcnRpZXMpICYmIHRoaXMuZmVhdHVyZS5wcm9wZXJ0aWVzLnRhcmdldCA9PT0gJ2lmcmFtZScpIHtcbiAgICAgIHRoaXMuaHRtbERpc3BsYXlFdmVudC5lbWl0KHRydWUpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaHRtbERpc3BsYXlFdmVudC5lbWl0KGZhbHNlKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBodG1sU2FuaXRpemVyKHZhbHVlKTogU2FmZVJlc291cmNlVXJsIHtcbiAgICBpZiAoIXZhbHVlLmJvZHkgfHwgdXNlckFnZW50LmdldEJyb3dzZXJOYW1lKCkgPT09ICdJbnRlcm5ldCBFeHBsb3JlcicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcmVnZXhCYXNlID0gLzxiYXNlIGhyZWY9XCJbXFx3OlxcL1xcLl0rXCI+LztcbiAgICBpZiAoIXJlZ2V4QmFzZS50ZXN0KHZhbHVlLmJvZHkpKSB7XG4gICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHZhbHVlLnVybCwgd2luZG93LmxvY2F0aW9uLm9yaWdpbik7XG4gICAgICB2YWx1ZS5ib2R5ID0gdmFsdWUuYm9keS5yZXBsYWNlKCc8aGVhZD4nLCBgPGhlYWQ+PGJhc2UgaHJlZj1cIiR7dXJsLm9yaWdpbn1cIj5gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodmFsdWUuYm9keSk7XG4gIH1cblxuICBpc09iamVjdCh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnO1xuICB9XG5cbiAgb3BlblNlY3VyZVVybCh2YWx1ZSkge1xuICAgIGxldCB1cmw6IHN0cmluZztcbiAgICBjb25zdCByZWdleERlcG90ID0gbmV3IFJlZ0V4cCh0aGlzLmNvbmZpZ1NlcnZpY2U/LmdldENvbmZpZygnZGVwb3QudXJsJykgKyAnLio/KD89XCJ8JCknKTtcblxuICAgIGlmIChyZWdleERlcG90LnRlc3QodmFsdWUpKSB7XG4gICAgICB1cmwgPSB2YWx1ZS5tYXRjaChyZWdleERlcG90KVswXTtcblxuICAgICAgdGhpcy5odHRwLmdldCh1cmwsIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYidcbiAgICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKChkb2NPckltYWdlKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGRvY09ySW1hZ2UpO1xuICAgICAgICB3aW5kb3cub3BlbihmaWxlVXJsLCAnX2JsYW5rJyk7XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICAgIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5lcnJvcignaWdvLmdlby50YXJnZXRIdG1sVXJsVW5hdXRob3JpemVkJywgJ2lnby5nZW8udGFyZ2V0SHRtbFVybFVuYXV0aG9yaXplZFRpdGxlJyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHVybCA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMuaXNFbWJlZGRlZExpbmsodmFsdWUpKSB7XG4gICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgZGl2LmlubmVySFRNTCA9IHZhbHVlO1xuICAgICAgICB1cmwgPSBkaXYuY2hpbGRyZW5bMF0uZ2V0QXR0cmlidXRlKCdocmVmJyk7XG4gICAgICB9XG4gICAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbiAgICB9XG4gIH1cblxuICBpc1VybCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCByZWdleCA9IC9eaHR0cHM/OlxcL1xcLy87XG4gICAgICByZXR1cm4gcmVnZXgudGVzdCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgaXNEb2ModmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHRoaXMuaXNVcmwodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gLyhwZGZ8ZG9jeD98eGxzeD8pJC87XG4gICAgICAgIHJldHVybiByZWdleC50ZXN0KHZhbHVlLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlzSW1nKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0nc3RyaW5nJykge1xuICAgICAgaWYgKHRoaXMuaXNVcmwodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gLyhqcGU/Z3xwbmd8Z2lmKSQvO1xuICAgICAgICByZXR1cm4gcmVnZXgudGVzdCh2YWx1ZS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpc0VtYmVkZGVkTGluayh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoUmVnZXggPSAvPGEvZztcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaChtYXRjaFJlZ2V4KSB8fCBbXTtcbiAgICAgICAgY29uc3QgY291bnQgPSBtYXRjaC5sZW5ndGg7XG4gICAgICAgIGlmIChjb3VudCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG4gIGdldEVtYmVkZGVkTGlua1RleHQodmFsdWUpIHtcbiAgICBjb25zdCByZWdleCA9IC8oPzo+KS4qPyg/PTx8JCkvO1xuICAgIGxldCB0ZXh0ID0gdmFsdWUubWF0Y2gocmVnZXgpWzBdIGFzIHN0cmluZztcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC8+L2csICcnKTtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIGZpbHRlckZlYXR1cmVQcm9wZXJ0aWVzKGZlYXR1cmUpIHtcbiAgICBjb25zdCBhbGxvd2VkRmllbGRzQW5kQWxpYXMgPSBmZWF0dXJlLm1ldGEgPyBmZWF0dXJlLm1ldGEuYWxpYXMgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcHJvcGVydGllcyA9IHt9O1xuICAgIGxldCBvZmZsaW5lQnV0dG9uU3RhdGU7XG5cbiAgICBpZiAodGhpcy5tYXApIHtcbiAgICAgIHRoaXMubWFwLm9mZmxpbmVCdXR0b25Ub2dnbGUkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgb2ZmbGluZUJ1dHRvblN0YXRlID0gc3RhdGU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoZmVhdHVyZS5wcm9wZXJ0aWVzICYmIGZlYXR1cmUucHJvcGVydGllcy5Sb3V0ZSAmJiB0aGlzLnRvb2xib3ggJiYgIXRoaXMudG9vbGJveC5nZXRUb29sKCdkaXJlY3Rpb25zJykpIHtcbiAgICAgIGRlbGV0ZSBmZWF0dXJlLnByb3BlcnRpZXMuUm91dGU7XG4gICAgfVxuXG4gICAgaWYgKGFsbG93ZWRGaWVsZHNBbmRBbGlhcykge1xuICAgICAgT2JqZWN0LmtleXMoYWxsb3dlZEZpZWxkc0FuZEFsaWFzKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgcHJvcGVydGllc1thbGxvd2VkRmllbGRzQW5kQWxpYXNbZmllbGRdXSA9IGZlYXR1cmUucHJvcGVydGllc1tmaWVsZF07XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICAgIH0gZWxzZSBpZiAob2ZmbGluZUJ1dHRvblN0YXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICghb2ZmbGluZUJ1dHRvblN0YXRlKSB7XG4gICAgICAgIGlmICh0aGlzLnN0YXRlLmNvbm5lY3Rpb24gJiYgZmVhdHVyZS5tZXRhICYmIGZlYXR1cmUubWV0YS5leGNsdWRlQXR0cmlidXRlKSB7XG4gICAgICAgICAgY29uc3QgZXhjbHVkZUF0dHJpYnV0ZSA9IGZlYXR1cmUubWV0YS5leGNsdWRlQXR0cmlidXRlO1xuICAgICAgICAgIGV4Y2x1ZGVBdHRyaWJ1dGUuZm9yRWFjaChhdHRyaWJ1dGUgPT4ge1xuICAgICAgICAgICAgZGVsZXRlIGZlYXR1cmUucHJvcGVydGllc1thdHRyaWJ1dGVdO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLnN0YXRlLmNvbm5lY3Rpb24gJiYgZmVhdHVyZS5tZXRhICYmIGZlYXR1cmUubWV0YS5leGNsdWRlQXR0cmlidXRlT2ZmbGluZSkge1xuICAgICAgICAgIGNvbnN0IGV4Y2x1ZGVBdHRyaWJ1dGVPZmZsaW5lID0gZmVhdHVyZS5tZXRhLmV4Y2x1ZGVBdHRyaWJ1dGVPZmZsaW5lO1xuICAgICAgICAgIGV4Y2x1ZGVBdHRyaWJ1dGVPZmZsaW5lLmZvckVhY2goYXR0cmlidXRlID0+IHtcbiAgICAgICAgICAgIGRlbGV0ZSBmZWF0dXJlLnByb3BlcnRpZXNbYXR0cmlidXRlXTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZlYXR1cmUubWV0YSAmJiBmZWF0dXJlLm1ldGEuZXhjbHVkZUF0dHJpYnV0ZU9mZmxpbmUpIHtcbiAgICAgICAgICBjb25zdCBleGNsdWRlQXR0cmlidXRlT2ZmbGluZSA9IGZlYXR1cmUubWV0YS5leGNsdWRlQXR0cmlidXRlT2ZmbGluZTtcbiAgICAgICAgICBleGNsdWRlQXR0cmlidXRlT2ZmbGluZS5mb3JFYWNoKGF0dHJpYnV0ZSA9PiB7XG4gICAgICAgICAgICBkZWxldGUgZmVhdHVyZS5wcm9wZXJ0aWVzW2F0dHJpYnV0ZV07XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc3RhdGUuY29ubmVjdGlvbiAmJiBmZWF0dXJlLm1ldGEgJiYgZmVhdHVyZS5tZXRhLmV4Y2x1ZGVBdHRyaWJ1dGUpIHtcbiAgICAgICAgY29uc3QgZXhjbHVkZUF0dHJpYnV0ZSA9IGZlYXR1cmUubWV0YS5leGNsdWRlQXR0cmlidXRlO1xuICAgICAgICBleGNsdWRlQXR0cmlidXRlLmZvckVhY2goYXR0cmlidXRlID0+IHtcbiAgICAgICAgICBkZWxldGUgZmVhdHVyZS5wcm9wZXJ0aWVzW2F0dHJpYnV0ZV07XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5zdGF0ZS5jb25uZWN0aW9uICYmIGZlYXR1cmUubWV0YSAmJiBmZWF0dXJlLm1ldGEuZXhjbHVkZUF0dHJpYnV0ZU9mZmxpbmUpIHtcbiAgICAgICAgY29uc3QgZXhjbHVkZUF0dHJpYnV0ZU9mZmxpbmUgPSBmZWF0dXJlLm1ldGEuZXhjbHVkZUF0dHJpYnV0ZU9mZmxpbmU7XG4gICAgICAgIGV4Y2x1ZGVBdHRyaWJ1dGVPZmZsaW5lLmZvckVhY2goYXR0cmlidXRlID0+IHtcbiAgICAgICAgICBkZWxldGUgZmVhdHVyZS5wcm9wZXJ0aWVzW2F0dHJpYnV0ZV07XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmVhdHVyZS5wcm9wZXJ0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIENvcHkgdGhlIHVybCB0byBhIGNsaXBib2FyZFxuICAgKi9cbiAgY29weVRleHRUb0NsaXBib2FyZCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc3VjY2Vzc2Z1bCA9IENsaXBib2FyZC5jb3B5KHZhbHVlKTtcbiAgICBpZiAoc3VjY2Vzc2Z1bCkge1xuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5zdWNjZXNzKCdpZ28uZ2VvLnF1ZXJ5LmxpbmsubWVzc2FnZScpO1xuICAgIH1cbiAgfVxufVxuIiwiPHRhYmxlIGNsYXNzPVwiaWdvLXN0cmlwZWQgbWF0LXR5cG9ncmFwaHlcIiAqbmdJZj1cInJlYWR5ICYmIGZlYXR1cmUgJiYgaXNPYmplY3QoZmVhdHVyZS5wcm9wZXJ0aWVzKSAmJiBmZWF0dXJlLnByb3BlcnRpZXMudGFyZ2V0ICE9PSAnaWZyYW1lJ1wiPlxuICA8dGJvZHk+XG4gICAgPHRyICpuZ0Zvcj1cImxldCBwcm9wZXJ0eSBvZiBmaWx0ZXJGZWF0dXJlUHJvcGVydGllcyhmZWF0dXJlKSB8IGtleXZhbHVlXCI+XG5cbiAgICAgIDx0ZCAqbmdJZj1cImZlYXR1cmUucHJvcGVydGllcy50YXJnZXQgPT09ICdfYmxhbmsnICYmIHByb3BlcnR5LmtleSA9PT0gJ3VybCdcIj5cbiAgICAgICAgPG1hdC1pY29uIG1hdC1saXN0LWF2YXRhciBzdmdJY29uPVwie3tpY29ufX1cIj48L21hdC1pY29uPlxuICAgICAgPC90ZD5cblxuICAgICAgPHRkICpuZ0lmPVwiZmVhdHVyZS5wcm9wZXJ0aWVzLnRhcmdldCA9PT0gJ19ibGFuaycgJiYgcHJvcGVydHkua2V5ID09PSAndXJsJ1wiPlxuICAgICAgICA8YSBocmVmPVwie3twcm9wZXJ0eS52YWx1ZX19XCIgdGFyZ2V0PSdfYmxhbmsnIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj4ge3sgJ2lnby5nZW8udGFyZ2V0SHRtbFVybCcgfCB0cmFuc2xhdGUgfX0ge3t0aXRsZX19PC9hPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29weUNsaXBib2FyZFwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY29weVRleHRUb0NsaXBib2FyZChwcm9wZXJ0eS52YWx1ZSlcIj5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImNvbnRlbnQtY29weVwiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC90ZD5cblxuICAgICAgPHRkIGlkPVwia2V5VmFsdWVcIiAqbmdJZj1cImZlYXR1cmUucHJvcGVydGllcy50YXJnZXQgPT09IHVuZGVmaW5lZFwiPlxuICAgICAgICB7e3Byb3BlcnR5LmtleX19XG4gICAgICA8L3RkPlxuXG4gICAgICA8dGQgKm5nSWY9XCJmZWF0dXJlLnByb3BlcnRpZXMudGFyZ2V0ID09PSB1bmRlZmluZWQgJiYgIWlzT2JqZWN0KHByb3BlcnR5LnZhbHVlKSAmJiAhaXNVcmwocHJvcGVydHkudmFsdWUpICYmICFpc0VtYmVkZGVkTGluayhwcm9wZXJ0eS52YWx1ZSlcIiBbaW5uZXJIVE1MXT1cInByb3BlcnR5LnZhbHVlXCI+XG4gICAgICA8L3RkPlxuXG4gICAgICA8dGQgKm5nSWY9XCJmZWF0dXJlLnByb3BlcnRpZXMudGFyZ2V0ID09PSB1bmRlZmluZWQgJiYgaXNFbWJlZGRlZExpbmsocHJvcGVydHkudmFsdWUpXCI+XG4gICAgICAgIDx1IFtuZ1N0eWxlXT1cInsnY3Vyc29yJzogJ3BvaW50ZXInLCAnY29sb3InOiAnYmx1ZSd9XCIgKGNsaWNrKT1cIm9wZW5TZWN1cmVVcmwocHJvcGVydHkudmFsdWUpXCI+e3sgZ2V0RW1iZWRkZWRMaW5rVGV4dChwcm9wZXJ0eS52YWx1ZSkgfX08L3U+XG4gICAgICA8L3RkPlxuXG4gICAgICA8dGQgKm5nSWY9XCJmZWF0dXJlLnByb3BlcnRpZXMudGFyZ2V0ID09PSB1bmRlZmluZWQgJiYgIWlzT2JqZWN0KHByb3BlcnR5LnZhbHVlKSAmJiAoaXNEb2MocHJvcGVydHkudmFsdWUpIHx8IGlzVXJsKHByb3BlcnR5LnZhbHVlKSkgJiYgIWlzSW1nKHByb3BlcnR5LnZhbHVlKVwiPlxuICAgICAgICA8dSBbbmdTdHlsZV09XCJ7J2N1cnNvcic6ICdwb2ludGVyJywgJ2NvbG9yJzogJ2JsdWUnfVwiIChjbGljayk9XCJvcGVuU2VjdXJlVXJsKHByb3BlcnR5LnZhbHVlKVwiPnt7ICdpZ28uZ2VvLnRhcmdldEh0bWxVcmwnIHwgdHJhbnNsYXRlIH19PC91PlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29weUNsaXBib2FyZFwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwiY29weVRleHRUb0NsaXBib2FyZChwcm9wZXJ0eS52YWx1ZSlcIj5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImNvbnRlbnQtY29weVwiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC90ZD5cblxuICAgICAgPHRkICpuZ0lmPVwiZmVhdHVyZS5wcm9wZXJ0aWVzLnRhcmdldCA9PT0gdW5kZWZpbmVkICYmICFpc09iamVjdChwcm9wZXJ0eS52YWx1ZSkgJiYgaXNVcmwocHJvcGVydHkudmFsdWUpICYmIGlzSW1nKHByb3BlcnR5LnZhbHVlKVwiPlxuICAgICAgICA8YSBocmVmPVwie3twcm9wZXJ0eS52YWx1ZX19XCIgdGFyZ2V0PSdfYmxhbmsnIChjbGljayk9XCJvcGVuU2VjdXJlVXJsKHByb3BlcnR5LnZhbHVlKVwiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgICA8aW1nIGlnb0ltYWdlRXJyb3Igc3JjPVwie3socHJvcGVydHkudmFsdWUgfCBzZWN1cmVJbWFnZSkgfMKgYXN5bmN9fVwiIHdpZHRoPVwiMjI1XCIgaGVpZ2h0PVwiYXV0b1wiPlxuICAgICAgICA8L2E+XG4gICAgICA8L3RkPlxuXG4gICAgICA8dGQgKm5nSWY9XCJmZWF0dXJlLnByb3BlcnRpZXMudGFyZ2V0ID09PSB1bmRlZmluZWQgJiYgaXNPYmplY3QocHJvcGVydHkudmFsdWUpXCIgW2lubmVySFRNTF09XCJwcm9wZXJ0eS52YWx1ZSB8IGpzb25cIj5cbiAgICAgIDwvdGQ+XG5cbiAgICA8L3RyPlxuICA8L3Rib2R5PlxuPC90YWJsZT5cblxuPGlmcmFtZSAqbmdJZj1cImlzSHRtbERpc3BsYXkoKVwiIFtzcmNkb2NdPVwiaHRtbFNhbml0aXplcihmZWF0dXJlLnByb3BlcnRpZXMpXCIgW3NyY109XCJ1cmxTYW5pdGl6ZXIoZmVhdHVyZS5wcm9wZXJ0aWVzLnVybClcIj48L2lmcmFtZT5cbiJdfQ==
|