@igo2/geo 18.0.0-next.8 → 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +4 -6
- package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +13 -10
- package/esm2022/lib/datasource/shared/capabilities.service.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +9 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +4 -1
- package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +8 -1
- package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
- package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
- package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +151 -102
- package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +177 -83
- package/esm2022/lib/directions/directions-results/directions-results.component.mjs +93 -44
- package/esm2022/lib/directions/directions-sources/directions-source.mjs +1 -1
- package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +1 -1
- package/esm2022/lib/directions/directions.component.mjs +55 -31
- package/esm2022/lib/directions/shared/directions.enum.mjs +51 -7
- package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
- package/esm2022/lib/directions/shared/directions.service.mjs +122 -96
- package/esm2022/lib/directions/shared/directions.utils.mjs +281 -318
- package/esm2022/lib/directions/shared/store.mjs +2 -2
- package/esm2022/lib/download/download-button/download-button.component.mjs +8 -20
- package/esm2022/lib/download/shared/download.service.mjs +1 -1
- package/esm2022/lib/draw/draw/draw-popup.component.mjs +1 -1
- package/esm2022/lib/draw/draw/draw.component.mjs +5 -12
- package/esm2022/lib/draw/shared/draw.utils.mjs +1 -1
- package/esm2022/lib/environment/environment.interface.mjs +1 -1
- package/esm2022/lib/feature/feature-details/feature-details.component.mjs +2 -2
- package/esm2022/lib/feature/shared/feature-store.utils.mjs +7 -6
- package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
- package/esm2022/lib/feature/shared/store.mjs +1 -1
- package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +3 -3
- package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +7 -4
- package/esm2022/lib/feature/shared/strategies/selection.mjs +5 -4
- package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +3 -3
- package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +2 -2
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +5 -3
- package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +1 -1
- package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +8 -1
- package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +1 -1
- package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +2 -8
- package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +2 -8
- package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +2 -2
- package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +13 -10
- package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +2 -2
- package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +4 -2
- package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +5 -16
- package/esm2022/lib/import-export/export-button/export-button.component.mjs +4 -17
- package/esm2022/lib/import-export/import-export/import-export.component.mjs +23 -12
- package/esm2022/lib/import-export/shared/export.service.mjs +7 -4
- package/esm2022/lib/import-export/shared/import.utils.mjs +3 -3
- package/esm2022/lib/layer/index.mjs +10 -5
- package/esm2022/lib/layer/layer-group/index.mjs +2 -0
- package/esm2022/lib/layer/layer-group/layer-group.component.mjs +103 -0
- package/esm2022/lib/layer/layer-item/layer-item.component.mjs +61 -128
- package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +5 -8
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +5 -6
- package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +14 -21
- package/esm2022/lib/layer/layer-list/index.mjs +1 -3
- package/esm2022/lib/layer/layer-list/layer-list.component.mjs +176 -775
- package/esm2022/lib/layer/layer-list-tool/index.mjs +1 -2
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +51 -84
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +7 -2
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +56 -16
- package/esm2022/lib/layer/layer-search/index.mjs +2 -0
- package/esm2022/lib/layer/layer-search/layer-search.component.mjs +65 -0
- package/esm2022/lib/layer/layer-unavailable/index.mjs +3 -0
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +25 -0
- package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +35 -0
- package/esm2022/lib/layer/layer-viewer/index.mjs +3 -0
- package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +226 -0
- package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +2 -0
- package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +2 -0
- package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +207 -0
- package/esm2022/lib/layer/layer-visibility-button/index.mjs +2 -0
- package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +83 -0
- package/esm2022/lib/layer/layer.module.mjs +51 -33
- package/esm2022/lib/layer/shared/index.mjs +2 -1
- package/esm2022/lib/layer/shared/layer-controller.mjs +316 -0
- package/esm2022/lib/layer/shared/layer-selection.mjs +38 -0
- package/esm2022/lib/layer/shared/layer.service.mjs +56 -14
- package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
- package/esm2022/lib/layer/shared/layers/image-layer.mjs +8 -3
- package/esm2022/lib/layer/shared/layers/index.mjs +6 -1
- package/esm2022/lib/layer/shared/layers/layer-base.mjs +199 -0
- package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +2 -0
- package/esm2022/lib/layer/shared/layers/layer-group.mjs +120 -0
- package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -11
- package/esm2022/lib/layer/shared/layers/layer.mjs +113 -113
- package/esm2022/lib/layer/shared/layers/linked/index.mjs +4 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +12 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +242 -0
- package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +70 -0
- package/esm2022/lib/layer/shared/layers/tile-layer.mjs +8 -3
- package/esm2022/lib/layer/shared/layers/vector-layer.mjs +9 -3
- package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +8 -3
- package/esm2022/lib/layer/utils/layer.utils.mjs +47 -1
- package/esm2022/lib/layer/utils/outputLegend.mjs +5 -1
- package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +3 -3
- package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +8 -6
- package/esm2022/lib/map/map-center/map-center.component.mjs +1 -2
- package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +1 -1
- package/esm2022/lib/map/shared/controllers/view.mjs +1 -1
- package/esm2022/lib/map/shared/hover-feature.directive.mjs +1 -9
- package/esm2022/lib/map/shared/linkedLayers.utils.mjs +113 -123
- package/esm2022/lib/map/shared/map.abstract.mjs +4 -3
- package/esm2022/lib/map/shared/map.mjs +7 -243
- package/esm2022/lib/map/shared/map.service.mjs +1 -1
- package/esm2022/lib/map/shared/map.utils.mjs +3 -3
- package/esm2022/lib/map/shared/mapOffline.directive.mjs +9 -5
- package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +1 -3
- package/esm2022/lib/map/utils/index.mjs +2 -0
- package/esm2022/lib/map/utils/layer-watcher.mjs +45 -13
- package/esm2022/lib/measure/measurer/measurer.component.mjs +7 -25
- package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +6 -18
- package/esm2022/lib/offline/offline.provider.mjs +10 -11
- package/esm2022/lib/print/shared/print.service.mjs +3 -3
- package/esm2022/lib/query/shared/query.directive.mjs +9 -5
- package/esm2022/lib/query/shared/query.service.mjs +7 -7
- package/esm2022/lib/query/shared/query.utils.mjs +5 -1
- package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +15 -9
- package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +1 -10
- package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
- package/esm2022/lib/search/shared/sources/workspace.mjs +1 -1
- package/esm2022/lib/workspace/shared/edition-workspace.mjs +6 -4
- package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +19 -17
- package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +17 -2
- package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +22 -4
- package/esm2022/lib/workspace/shared/workspace.utils.mjs +6 -3
- package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +2 -2
- package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +6 -2
- package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +4 -3
- package/fesm2022/igo2-geo.mjs +22502 -21440
- package/fesm2022/igo2-geo.mjs.map +1 -1
- package/lib/datasource/shared/capabilities.service.d.ts +7 -2
- package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +1 -0
- package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/carto-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/carto-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/cluster-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +0 -1
- package/lib/datasource/shared/datasources/datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/datasource.interface.d.ts +1 -2
- package/lib/datasource/shared/datasources/feature-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +0 -3
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/mvt-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/osm-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/wfs-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +3 -4
- package/lib/datasource/shared/datasources/wms-datasource.d.ts +1 -0
- package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +6 -6
- package/lib/datasource/shared/datasources/wmts-datasource.interface.d.ts +0 -2
- package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +0 -2
- package/lib/directions/directions-buttons/directions-buttons.component.d.ts +57 -20
- package/lib/directions/directions-inputs/directions-inputs.component.d.ts +115 -13
- package/lib/directions/directions-results/directions-results.component.d.ts +50 -16
- package/lib/directions/directions-sources/directions-source.d.ts +2 -2
- package/lib/directions/directions-sources/osrm-directions-source.d.ts +2 -2
- package/lib/directions/directions.component.d.ts +5 -5
- package/lib/directions/shared/directions.enum.d.ts +42 -1
- package/lib/directions/shared/directions.interface.d.ts +50 -25
- package/lib/directions/shared/directions.service.d.ts +46 -8
- package/lib/directions/shared/directions.utils.d.ts +102 -23
- package/lib/directions/shared/store.d.ts +3 -3
- package/lib/download/download-button/download-button.component.d.ts +4 -8
- package/lib/download/shared/download.service.d.ts +1 -1
- package/lib/draw/draw/draw.component.d.ts +2 -2
- package/lib/draw/shared/draw.utils.d.ts +2 -1
- package/lib/environment/environment.interface.d.ts +2 -0
- package/lib/feature/shared/feature-store.utils.d.ts +1 -1
- package/lib/feature/shared/feature.interfaces.d.ts +1 -1
- package/lib/feature/shared/store.d.ts +1 -1
- package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +1 -1
- package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +1 -1
- package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +1 -1
- package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +2 -2
- package/lib/filter/shared/filterable-datasource.pipe.d.ts +2 -2
- package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +3 -3
- package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +3 -5
- package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +3 -5
- package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
- package/lib/filter/time-filter-form/time-filter-form.component.d.ts +5 -5
- package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
- package/lib/filter/time-filter-list/time-filter-list.component.d.ts +2 -7
- package/lib/import-export/export-button/export-button.component.d.ts +3 -7
- package/lib/import-export/import-export/import-export.component.d.ts +1 -2
- package/lib/import-export/shared/export.service.d.ts +2 -2
- package/lib/layer/index.d.ts +9 -4
- package/lib/layer/layer-group/index.d.ts +1 -0
- package/lib/layer/layer-group/layer-group.component.d.ts +30 -0
- package/lib/layer/layer-item/layer-item.component.d.ts +19 -38
- package/lib/layer/layer-legend/layer-legend.component.d.ts +2 -5
- package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +6 -7
- package/lib/layer/layer-list/index.d.ts +0 -2
- package/lib/layer/layer-list/layer-list.component.d.ts +51 -123
- package/lib/layer/layer-list-tool/index.d.ts +0 -1
- package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +19 -26
- package/lib/layer/layer-list-tool/layer-list-tool.interface.d.ts +5 -1
- package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +9 -8
- package/lib/layer/layer-search/index.d.ts +1 -0
- package/lib/layer/layer-search/layer-search.component.d.ts +16 -0
- package/lib/layer/layer-unavailable/index.d.ts +2 -0
- package/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.d.ts +10 -0
- package/lib/layer/layer-unavailable/layer-unavailable.component.d.ts +11 -0
- package/lib/layer/layer-viewer/index.d.ts +2 -0
- package/lib/layer/layer-viewer/layer-viewer.component.d.ts +52 -0
- package/lib/layer/layer-viewer/layer-viewer.interface.d.ts +22 -0
- package/lib/layer/layer-viewer-bottom-actions/index.d.ts +1 -0
- package/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.d.ts +44 -0
- package/lib/layer/layer-visibility-button/index.d.ts +1 -0
- package/lib/layer/layer-visibility-button/layer-visibility-button.component.d.ts +22 -0
- package/lib/layer/layer.module.d.ts +18 -6
- package/lib/layer/shared/index.d.ts +1 -0
- package/lib/layer/shared/layer-controller.d.ts +81 -0
- package/lib/layer/shared/layer-selection.d.ts +14 -0
- package/lib/layer/shared/layer.service.d.ts +12 -3
- package/lib/layer/shared/layers/any-layer.d.ts +3 -6
- package/lib/layer/shared/layers/any-layer.interface.d.ts +8 -6
- package/lib/layer/shared/layers/image-layer.d.ts +5 -2
- package/lib/layer/shared/layers/image-layer.interface.d.ts +1 -4
- package/lib/layer/shared/layers/index.d.ts +5 -0
- package/lib/layer/shared/layers/layer-base.d.ts +75 -0
- package/lib/layer/shared/layers/layer-group.d.ts +32 -0
- package/lib/layer/shared/layers/layer-group.interface.d.ts +8 -0
- package/lib/layer/shared/layers/layer.d.ts +27 -44
- package/lib/layer/shared/layers/layer.interface.d.ts +23 -41
- package/lib/layer/shared/layers/linked/index.d.ts +3 -0
- package/lib/layer/shared/layers/linked/linked-layer.d.ts +35 -0
- package/lib/layer/shared/layers/linked/linked-layer.interface.d.ts +32 -0
- package/lib/layer/shared/layers/linked/linked-layer.utils.d.ts +9 -0
- package/lib/layer/shared/layers/tile-layer.d.ts +5 -2
- package/lib/layer/shared/layers/vector-layer.d.ts +7 -3
- package/lib/layer/shared/layers/vectortile-layer.d.ts +5 -2
- package/lib/layer/utils/layer.utils.d.ts +12 -2
- package/lib/layer/utils/outputLegend.d.ts +2 -2
- package/lib/map/shared/controllers/geolocation.interface.d.ts +2 -1
- package/lib/map/shared/hover-feature.directive.d.ts +0 -1
- package/lib/map/shared/linkedLayers.utils.d.ts +13 -17
- package/lib/map/shared/map.abstract.d.ts +12 -29
- package/lib/map/shared/map.d.ts +10 -85
- package/lib/map/shared/map.service.d.ts +1 -1
- package/lib/map/shared/map.utils.d.ts +5 -3
- package/lib/map/utils/index.d.ts +1 -0
- package/lib/map/utils/layer-watcher.d.ts +18 -8
- package/lib/measure/measurer/measurer.component.d.ts +0 -8
- package/lib/metadata/metadata-button/metadata-button.component.d.ts +3 -7
- package/lib/offline/offline.provider.d.ts +1 -1
- package/lib/query/shared/query.service.d.ts +1 -1
- package/lib/query/shared/query.utils.d.ts +2 -1
- package/lib/search/search-results/search-results-add-button.component.d.ts +1 -1
- package/lib/search/shared/search-pointer-summary.directive.d.ts +0 -1
- package/lib/search/shared/sources/cadastre.providers.d.ts +1 -1
- package/lib/search/shared/sources/coordinates.providers.d.ts +1 -1
- package/lib/search/shared/sources/icherche.providers.d.ts +1 -1
- package/lib/search/shared/sources/ilayer.interfaces.d.ts +1 -1
- package/lib/search/shared/sources/ilayer.providers.d.ts +1 -1
- package/lib/search/shared/sources/nominatim.providers.d.ts +1 -1
- package/lib/search/shared/sources/storedqueries.providers.d.ts +2 -2
- package/lib/search/shared/sources/workspace.interfaces.d.ts +1 -1
- package/lib/search/shared/sources/workspace.providers.d.ts +1 -1
- package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
- package/locale/en.geo.json +106 -89
- package/locale/fr.geo.json +105 -89
- package/package.json +5 -5
- package/src/geo-theme.scss +1 -1
- package/src/lib/directions/directions-inputs/directions-inputs.theming.scss +21 -0
- package/src/lib/directions/directions.theming.scss +2 -0
- package/src/lib/layer/layer-group/layer-group.theme.scss +28 -0
- package/src/lib/layer/layer-item/layer-item.theme.scss +12 -9
- package/src/lib/layer/layer-legend/layer-legend.theme.scss +30 -0
- package/src/lib/layer/layer-list/layer-list.theme.scss +50 -0
- package/src/lib/layer/layer-unavailable/layer-unavailable.theme.scss +19 -0
- package/src/lib/layer/layer-viewer/_layer-viewer.theme.scss +16 -0
- package/src/lib/layer/layer-visibility-button/layer-visibility-button.theme.scss +27 -0
- package/src/lib/layer/layer.theming.scss +14 -3
- package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +0 -70
- package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +0 -19
- package/esm2022/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +0 -7
- package/lib/layer/layer-list/layer-list-binding.directive.d.ts +0 -19
- package/lib/layer/layer-list/layer-list.enum.d.ts +0 -15
- package/lib/layer/layer-list-tool/layer-list-tool.enum.d.ts +0 -5
- package/src/lib/layer/layer-legend/layer-legend.theming.scss +0 -10
|
@@ -1,84 +1,28 @@
|
|
|
1
|
-
import { BehaviorSubject
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { BehaviorSubject } from 'rxjs';
|
|
2
|
+
import { isLayerLinked, isLinkMaster } from '../../shared/layers/linked/linked-layer.utils';
|
|
3
|
+
import { isLayerItem, isSaveableLayer } from '../../utils/layer.utils';
|
|
4
|
+
import { LayerBase } from './layer-base';
|
|
5
|
+
import { Linked } from './linked/linked-layer';
|
|
6
|
+
export class Layer extends LayerBase {
|
|
5
7
|
options;
|
|
6
8
|
messageService;
|
|
7
9
|
authInterceptor;
|
|
8
|
-
|
|
9
|
-
dataSource;
|
|
10
|
-
legend;
|
|
11
|
-
legendCollapsed = true;
|
|
12
|
-
firstLoadComponent = true;
|
|
13
|
-
map;
|
|
10
|
+
parent;
|
|
14
11
|
ol;
|
|
15
|
-
olLoadingProblem = false;
|
|
16
|
-
status$;
|
|
17
12
|
hasBeenVisible$ = new BehaviorSubject(undefined);
|
|
18
|
-
|
|
13
|
+
legend;
|
|
14
|
+
legendCollapsed = true;
|
|
15
|
+
link;
|
|
16
|
+
linkMaster;
|
|
19
17
|
resolution$$;
|
|
20
|
-
/**
|
|
21
|
-
* Define if a layer is generated by code OR defined by layer/context user layer.
|
|
22
|
-
* Useful for filtering layers list in mapOffline.directive or in the sharemap...
|
|
23
|
-
* return false by default.
|
|
24
|
-
*/
|
|
25
|
-
get isIgoInternalLayer() {
|
|
26
|
-
return this.options.isIgoInternalLayer || false;
|
|
27
|
-
}
|
|
28
18
|
get id() {
|
|
29
|
-
return this.options.id || this.dataSource.id;
|
|
30
|
-
}
|
|
31
|
-
get alias() {
|
|
32
|
-
return this.options.alias;
|
|
33
|
-
}
|
|
34
|
-
get title() {
|
|
35
|
-
return this.options.title;
|
|
36
|
-
}
|
|
37
|
-
set title(title) {
|
|
38
|
-
this.options.title = title;
|
|
39
|
-
}
|
|
40
|
-
get zIndex() {
|
|
41
|
-
return this.ol.getZIndex();
|
|
42
|
-
}
|
|
43
|
-
set zIndex(zIndex) {
|
|
44
|
-
this.ol.setZIndex(zIndex);
|
|
45
|
-
}
|
|
46
|
-
get baseLayer() {
|
|
47
|
-
return this.options.baseLayer;
|
|
48
|
-
}
|
|
49
|
-
set baseLayer(baseLayer) {
|
|
50
|
-
this.options.baseLayer = baseLayer;
|
|
51
|
-
}
|
|
52
|
-
get opacity() {
|
|
53
|
-
return this.ol.get('opacity');
|
|
54
|
-
}
|
|
55
|
-
set opacity(opacity) {
|
|
56
|
-
this.ol.setOpacity(opacity);
|
|
57
|
-
}
|
|
58
|
-
set isInResolutionsRange(value) {
|
|
59
|
-
this.isInResolutionsRange$.next(value);
|
|
19
|
+
return String(this.options.id || this.dataSource.id);
|
|
60
20
|
}
|
|
61
|
-
get
|
|
62
|
-
return
|
|
63
|
-
}
|
|
64
|
-
isInResolutionsRange$ = new BehaviorSubject(false);
|
|
65
|
-
set maxResolution(value) {
|
|
66
|
-
this.ol.setMaxResolution(value === 0 ? 0 : value || Infinity);
|
|
67
|
-
this.updateInResolutionsRange();
|
|
68
|
-
}
|
|
69
|
-
get maxResolution() {
|
|
70
|
-
return this.ol.getMaxResolution();
|
|
71
|
-
}
|
|
72
|
-
set minResolution(value) {
|
|
73
|
-
this.ol.setMinResolution(value || 0);
|
|
74
|
-
this.updateInResolutionsRange();
|
|
75
|
-
}
|
|
76
|
-
get minResolution() {
|
|
77
|
-
return this.ol.getMinResolution();
|
|
21
|
+
get visible() {
|
|
22
|
+
return super.visible;
|
|
78
23
|
}
|
|
79
24
|
set visible(value) {
|
|
80
|
-
|
|
81
|
-
this.visible$.next(value);
|
|
25
|
+
super.visible = value;
|
|
82
26
|
if (!this.hasBeenVisible$.value && value) {
|
|
83
27
|
this.hasBeenVisible$.next(value);
|
|
84
28
|
}
|
|
@@ -88,65 +32,121 @@ export class Layer {
|
|
|
88
32
|
.map((message) => this.showMessage(message));
|
|
89
33
|
}
|
|
90
34
|
}
|
|
91
|
-
get
|
|
92
|
-
return
|
|
35
|
+
get maxResolution() {
|
|
36
|
+
return super.maxResolution;
|
|
37
|
+
}
|
|
38
|
+
set maxResolution(value) {
|
|
39
|
+
super.maxResolution = value;
|
|
40
|
+
this.updateInResolutionsRange();
|
|
41
|
+
}
|
|
42
|
+
get minResolution() {
|
|
43
|
+
return super.minResolution;
|
|
93
44
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
45
|
+
set minResolution(value) {
|
|
46
|
+
super.minResolution = value;
|
|
47
|
+
this.updateInResolutionsRange();
|
|
97
48
|
}
|
|
98
|
-
|
|
99
|
-
this
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
49
|
+
get saveableOptions() {
|
|
50
|
+
if (!isSaveableLayer(this)) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
...super.saveableOptions,
|
|
55
|
+
sourceOptions: this.dataSource.saveableOptions
|
|
56
|
+
};
|
|
104
57
|
}
|
|
105
58
|
constructor(options, messageService, authInterceptor) {
|
|
59
|
+
super(options);
|
|
106
60
|
this.options = options;
|
|
107
61
|
this.messageService = messageService;
|
|
108
62
|
this.authInterceptor = authInterceptor;
|
|
109
63
|
this.dataSource = options.source;
|
|
110
|
-
this.ol = this.createOlLayer();
|
|
111
|
-
if (options.zIndex !== undefined) {
|
|
112
|
-
this.zIndex = options.zIndex;
|
|
113
|
-
}
|
|
114
|
-
if (options.baseLayer && options.visible === undefined) {
|
|
115
|
-
options.visible = false;
|
|
116
|
-
}
|
|
117
|
-
this.maxResolution =
|
|
118
|
-
options.maxResolution ||
|
|
119
|
-
getResolutionFromScale(Number(options.maxScaleDenom));
|
|
120
|
-
this.minResolution =
|
|
121
|
-
options.minResolution ||
|
|
122
|
-
getResolutionFromScale(Number(options.minScaleDenom));
|
|
123
|
-
this.visible = options.visible === undefined ? true : options.visible;
|
|
124
|
-
this.opacity = options.opacity === undefined ? 1 : options.opacity;
|
|
125
|
-
if (options.legendOptions &&
|
|
126
|
-
(options.legendOptions.url || options.legendOptions.html)) {
|
|
127
|
-
this.legend = this.dataSource.setLegend(options.legendOptions);
|
|
128
|
-
}
|
|
129
64
|
this.legendCollapsed = options.legendOptions
|
|
130
65
|
? options.legendOptions.collapsed
|
|
131
66
|
? options.legendOptions.collapsed
|
|
132
67
|
: true
|
|
133
68
|
: true;
|
|
69
|
+
if (options.legendOptions &&
|
|
70
|
+
(options.legendOptions.url || options.legendOptions.html)) {
|
|
71
|
+
this.legend = this.dataSource.setLegend(options.legendOptions);
|
|
72
|
+
}
|
|
73
|
+
this.ol = this.createOlLayer();
|
|
134
74
|
this.ol.set('_layer', this, true);
|
|
75
|
+
super.afterCreated();
|
|
76
|
+
}
|
|
77
|
+
init(map) {
|
|
78
|
+
super.init(map);
|
|
79
|
+
map.layerWatcher.watchLayer(this);
|
|
80
|
+
this.observeResolution();
|
|
81
|
+
this.hasBeenVisible$.subscribe(() => {
|
|
82
|
+
if (this.options.messages && this.visible) {
|
|
83
|
+
this.options.messages.map((message) => {
|
|
84
|
+
this.showMessage(message);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
this.createLink();
|
|
89
|
+
}
|
|
90
|
+
createLink() {
|
|
91
|
+
if (!isLinkMaster(this) || this.link) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
this.link = new Linked(this);
|
|
135
95
|
}
|
|
136
|
-
|
|
137
|
-
|
|
96
|
+
remove() {
|
|
97
|
+
super.remove();
|
|
138
98
|
this.unobserveResolution();
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
this.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
99
|
+
this.map.layerWatcher.unwatchLayer(this);
|
|
100
|
+
if (isLinkMaster(this)) {
|
|
101
|
+
this.link?.deleteChildren(this.map.layerController);
|
|
102
|
+
this.link?.destroy();
|
|
103
|
+
}
|
|
104
|
+
if (isLayerLinked(this)) {
|
|
105
|
+
if (!this.linkMaster) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const masterLayer = this.linkMaster.layer;
|
|
109
|
+
const hasSync = this.linkMaster.hasSyncDeletion(this);
|
|
110
|
+
this.linkMaster.remove(this);
|
|
111
|
+
if (hasSync && masterLayer) {
|
|
112
|
+
this.map.layerController.remove(masterLayer);
|
|
113
|
+
}
|
|
148
114
|
}
|
|
149
115
|
}
|
|
116
|
+
add(parent) {
|
|
117
|
+
super.add(parent);
|
|
118
|
+
if (isLayerLinked(this)) {
|
|
119
|
+
if (isLinkMaster(this)) {
|
|
120
|
+
this.link.init();
|
|
121
|
+
}
|
|
122
|
+
this.createLinkWithParent();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
moveTo(parent) {
|
|
126
|
+
super.moveTo(parent);
|
|
127
|
+
if (isLayerLinked(this)) {
|
|
128
|
+
this.link?.move(this, parent);
|
|
129
|
+
this.linkMaster?.move(this, parent);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
createLinkWithParent() {
|
|
133
|
+
const masterLayer = this.findParentByLinkId(this.map.layerController.all, this.options.linkedLayers.linkId);
|
|
134
|
+
if (masterLayer) {
|
|
135
|
+
this.linkMaster = masterLayer.link;
|
|
136
|
+
masterLayer?.link.add(this);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
findParentByLinkId(layers, id) {
|
|
140
|
+
return layers.find((layer) => {
|
|
141
|
+
if (!isLayerItem(layer)) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
if (layer.options.linkedLayers?.links) {
|
|
145
|
+
return layer.options.linkedLayers.links.some((l) => l.linkedIds.includes(id));
|
|
146
|
+
}
|
|
147
|
+
return false;
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
150
|
showMessage(message) {
|
|
151
151
|
if (!this.messageService) {
|
|
152
152
|
return;
|
|
@@ -175,4 +175,4 @@ export class Layer {
|
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9zaGFyZWQvbGF5ZXJzL2xheWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFDTCxlQUFlLEVBSWYsYUFBYSxFQUNkLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS3JDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR3ZFLE1BQU0sT0FBZ0IsS0FBSztJQXFIaEI7SUFDRztJQUNBO0lBdEhMLFNBQVMsQ0FBVTtJQUNuQixVQUFVLENBQWE7SUFDdkIsTUFBTSxDQUFXO0lBQ2pCLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDdkIsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO0lBQzFCLEdBQUcsQ0FBVTtJQUNiLEVBQUUsQ0FBb0I7SUFDdEIsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLE9BQU8sQ0FBeUI7SUFDaEMsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFVLFNBQVMsQ0FBQyxDQUFDO0lBQ3pELGdCQUFnQixDQUFlO0lBQy9CLFlBQVksQ0FBZTtJQUVuQzs7OztPQUlHO0lBQ0gsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixJQUFJLEtBQUssQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FB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LFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMzRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3pDLE1BQU0sYUFBYSxHQUNqQixJQUFJLENBQUMsYUFBYSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ25FLElBQUksQ0FBQyxvQkFBb0I7Z0JBQ3ZCLFVBQVUsSUFBSSxhQUFhLElBQUksVUFBVSxJQUFJLGFBQWEsQ0FBQztRQUMvRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF1dGhJbnRlcmNlcHRvciB9IGZyb20gJ0BpZ28yL2F1dGgnO1xuaW1wb3J0IHsgTWVzc2FnZSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL21lc3NhZ2UnO1xuaW1wb3J0IHsgU3ViamVjdFN0YXR1cyB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IG9sTGF5ZXIgZnJvbSAnb2wvbGF5ZXIvTGF5ZXInO1xuaW1wb3J0IG9sU291cmNlIGZyb20gJ29sL3NvdXJjZS9Tb3VyY2UnO1xuXG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvbixcbiAgY29tYmluZUxhdGVzdFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL2RhdGFzb3VyY2UnO1xuaW1wb3J0IHsgTGVnZW5kIH0gZnJvbSAnLi4vLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvZGF0YXNvdXJjZXMvZGF0YXNvdXJjZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBNYXBCYXNlIH0gZnJvbSAnLi4vLi4vLi4vbWFwL3NoYXJlZC9tYXAuYWJzdHJhY3QnO1xuaW1wb3J0IHsgZ2V0UmVzb2x1dGlvbkZyb21TY2FsZSB9IGZyb20gJy4uLy4uLy4uL21hcC9zaGFyZWQvbWFwLnV0aWxzJztcbmltcG9ydCB7IExheWVyT3B0aW9ucyB9IGZyb20gJy4vbGF5ZXIuaW50ZXJmYWNlJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExheWVyIHtcbiAgcHVibGljIGNvbGxhcHNlZDogYm9vbGVhbjtcbiAgcHVibGljIGRhdGFTb3VyY2U6IERhdGFTb3VyY2U7XG4gIHB1YmxpYyBsZWdlbmQ6IExlZ2VuZFtdO1xuICBwdWJsaWMgbGVnZW5kQ29sbGFwc2VkID0gdHJ1ZTtcbiAgcHVibGljIGZpcnN0TG9hZENvbXBvbmVudCA9IHRydWU7XG4gIHB1YmxpYyBtYXA6IE1hcEJhc2U7XG4gIHB1YmxpYyBvbDogb2xMYXllcjxvbFNvdXJjZT47XG4gIHB1YmxpYyBvbExvYWRpbmdQcm9ibGVtID0gZmFsc2U7XG4gIHB1YmxpYyBzdGF0dXMkOiBTdWJqZWN0PFN1YmplY3RTdGF0dXM+O1xuICBwdWJsaWMgaGFzQmVlblZpc2libGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih1bmRlZmluZWQpO1xuICBwcml2YXRlIGhhc0JlZW5WaXNpYmxlJCQ6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSByZXNvbHV0aW9uJCQ6IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogRGVmaW5lIGlmIGEgbGF5ZXIgaXMgZ2VuZXJhdGVkIGJ5IGNvZGUgT1IgZGVmaW5lZCBieSBsYXllci9jb250ZXh0IHVzZXIgbGF5ZXIuXG4gICAqIFVzZWZ1bCBmb3IgZmlsdGVyaW5nIGxheWVycyBsaXN0IGluIG1hcE9mZmxpbmUuZGlyZWN0aXZlIG9yIGluIHRoZSBzaGFyZW1hcC4uLlxuICAgKiByZXR1cm4gZmFsc2UgYnkgZGVmYXVsdC5cbiAgICovXG4gIGdldCBpc0lnb0ludGVybmFsTGF5ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pc0lnb0ludGVybmFsTGF5ZXIgfHwgZmFsc2U7XG4gIH1cblxuICBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmlkIHx8IHRoaXMuZGF0YVNvdXJjZS5pZDtcbiAgfVxuXG4gIGdldCBhbGlhcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYWxpYXM7XG4gIH1cblxuICBnZXQgdGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnRpdGxlO1xuICB9XG5cbiAgc2V0IHRpdGxlKHRpdGxlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm9wdGlvbnMudGl0bGUgPSB0aXRsZTtcbiAgfVxuXG4gIGdldCB6SW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vbC5nZXRaSW5kZXgoKTtcbiAgfVxuXG4gIHNldCB6SW5kZXgoekluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLm9sLnNldFpJbmRleCh6SW5kZXgpO1xuICB9XG5cbiAgZ2V0IGJhc2VMYXllcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmJhc2VMYXllcjtcbiAgfVxuXG4gIHNldCBiYXNlTGF5ZXIoYmFzZUxheWVyOiBib29sZWFuKSB7XG4gICAgdGhpcy5vcHRpb25zLmJhc2VMYXllciA9IGJhc2VMYXllcjtcbiAgfVxuXG4gIGdldCBvcGFjaXR5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMub2wuZ2V0KCdvcGFjaXR5Jyk7XG4gIH1cblxuICBzZXQgb3BhY2l0eShvcGFjaXR5OiBudW1iZXIpIHtcbiAgICB0aGlzLm9sLnNldE9wYWNpdHkob3BhY2l0eSk7XG4gIH1cblxuICBzZXQgaXNJblJlc29sdXRpb25zUmFuZ2UodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzSW5SZXNvbHV0aW9uc1JhbmdlJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBnZXQgaXNJblJlc29sdXRpb25zUmFuZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNJblJlc29sdXRpb25zUmFuZ2UkLnZhbHVlO1xuICB9XG4gIHJlYWRvbmx5IGlzSW5SZXNvbHV0aW9uc1JhbmdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHNldCBtYXhSZXNvbHV0aW9uKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLm9sLnNldE1heFJlc29sdXRpb24odmFsdWUgPT09IDAgPyAwIDogdmFsdWUgfHwgSW5maW5pdHkpO1xuICAgIHRoaXMudXBkYXRlSW5SZXNvbHV0aW9uc1JhbmdlKCk7XG4gIH1cbiAgZ2V0IG1heFJlc29sdXRpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vbC5nZXRNYXhSZXNvbHV0aW9uKCk7XG4gIH1cblxuICBzZXQgbWluUmVzb2x1dGlvbih2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5vbC5zZXRNaW5SZXNvbHV0aW9uKHZhbHVlIHx8IDApO1xuICAgIHRoaXMudXBkYXRlSW5SZXNvbHV0aW9uc1JhbmdlKCk7XG4gIH1cbiAgZ2V0IG1pblJlc29sdXRpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5vbC5nZXRNaW5SZXNvbHV0aW9uKCk7XG4gIH1cblxuICBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMub2wuc2V0VmlzaWJsZSh2YWx1ZSk7XG4gICAgdGhpcy52aXNpYmxlJC5uZXh0KHZhbHVlKTtcbiAgICBpZiAoIXRoaXMuaGFzQmVlblZpc2libGUkLnZhbHVlICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLmhhc0JlZW5WaXNpYmxlJC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucz8ubWVzc2FnZXMgJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9ucz8ubWVzc2FnZXNcbiAgICAgICAgLmZpbHRlcigobSkgPT4gbS5vcHRpb25zPy5zaG93T25FYWNoTGF5ZXJWaXNpYmlsaXR5KVxuICAgICAgICAubWFwKChtZXNzYWdlKSA9PiB0aGlzLnNob3dNZXNzYWdlKG1lc3NhZ2UpKTtcbiAgICB9XG4gIH1cbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZSQudmFsdWU7XG4gIH1cbiAgcmVhZG9ubHkgdmlzaWJsZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHVuZGVmaW5lZCk7XG5cbiAgZ2V0IGRpc3BsYXllZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlICYmIHRoaXMuaXNJblJlc29sdXRpb25zUmFuZ2U7XG4gIH1cbiAgcmVhZG9ubHkgZGlzcGxheWVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuaXNJblJlc29sdXRpb25zUmFuZ2UkLFxuICAgIHRoaXMudmlzaWJsZSRcbiAgXSkucGlwZShtYXAoKGJ1bmNoOiBbYm9vbGVhbiwgYm9vbGVhbl0pID0+IGJ1bmNoWzBdICYmIGJ1bmNoWzFdKSk7XG5cbiAgZ2V0IHNob3dJbkxheWVyTGlzdCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNob3dJbkxheWVyTGlzdCAhPT0gZmFsc2U7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgb3B0aW9uczogTGF5ZXJPcHRpb25zLFxuICAgIHByb3RlY3RlZCBtZXNzYWdlU2VydmljZT86IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBhdXRoSW50ZXJjZXB0b3I/OiBBdXRoSW50ZXJjZXB0b3JcbiAgKSB7XG4gICAgdGhpcy5kYXRhU291cmNlID0gb3B0aW9ucy5zb3VyY2U7XG5cbiAgICB0aGlzLm9sID0gdGhpcy5jcmVhdGVPbExheWVyKCk7XG4gICAgaWYgKG9wdGlvbnMuekluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuekluZGV4ID0gb3B0aW9ucy56SW5kZXg7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuYmFzZUxheWVyICYmIG9wdGlvbnMudmlzaWJsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBvcHRpb25zLnZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB0aGlzLm1heFJlc29sdXRpb24gPVxuICAgICAgb3B0aW9ucy5tYXhSZXNvbHV0aW9uIHx8XG4gICAgICBnZXRSZXNvbHV0aW9uRnJvbVNjYWxlKE51bWJlcihvcHRpb25zLm1heFNjYWxlRGVub20pKTtcbiAgICB0aGlzLm1pblJlc29sdXRpb24gPVxuICAgICAgb3B0aW9ucy5taW5SZXNvbHV0aW9uIHx8XG4gICAgICBnZXRSZXNvbHV0aW9uRnJvbVNjYWxlKE51bWJlcihvcHRpb25zLm1pblNjYWxlRGVub20pKTtcblxuICAgIHRoaXMudmlzaWJsZSA9IG9wdGlvbnMudmlzaWJsZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IG9wdGlvbnMudmlzaWJsZTtcbiAgICB0aGlzLm9wYWNpdHkgPSBvcHRpb25zLm9wYWNpdHkgPT09IHVuZGVmaW5lZCA/IDEgOiBvcHRpb25zLm9wYWNpdHk7XG5cbiAgICBpZiAoXG4gICAgICBvcHRpb25zLmxlZ2VuZE9wdGlvbnMgJiZcbiAgICAgIChvcHRpb25zLmxlZ2VuZE9wdGlvbnMudXJsIHx8IG9wdGlvbnMubGVnZW5kT3B0aW9ucy5odG1sKVxuICAgICkge1xuICAgICAgdGhpcy5sZWdlbmQgPSB0aGlzLmRhdGFTb3VyY2Uuc2V0TGVnZW5kKG9wdGlvbnMubGVnZW5kT3B0aW9ucyk7XG4gICAgfVxuXG4gICAgdGhpcy5sZWdlbmRDb2xsYXBzZWQgPSBvcHRpb25zLmxlZ2VuZE9wdGlvbnNcbiAgICAgID8gb3B0aW9ucy5sZWdlbmRPcHRpb25zLmNvbGxhcHNlZFxuICAgICAgICA/IG9wdGlvbnMubGVnZW5kT3B0aW9ucy5jb2xsYXBzZWRcbiAgICAgICAgOiB0cnVlXG4gICAgICA6IHRydWU7XG5cbiAgICB0aGlzLm9sLnNldCgnX2xheWVyJywgdGhpcywgdHJ1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlT2xMYXllcigpOiBvbExheWVyPG9sU291cmNlPjtcblxuICBzZXRNYXAobWFwOiBNYXBCYXNlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5tYXAgPSBtYXA7XG5cbiAgICB0aGlzLnVub2JzZXJ2ZVJlc29sdXRpb24oKTtcbiAgICBpZiAobWFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMub2JzZXJ2ZVJlc29sdXRpb24oKTtcbiAgICAgIHRoaXMuaGFzQmVlblZpc2libGUkJCA9IHRoaXMuaGFzQmVlblZpc2libGUkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMubWVzc2FnZXMgJiYgdGhpcy52aXNpYmxlKSB7XG4gICAgICAgICAgdGhpcy5vcHRpb25zLm1lc3NhZ2VzLm1hcCgobWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaG93TWVzc2FnZShtZXNzYWdlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93TWVzc2FnZShtZXNzYWdlOiBNZXNzYWdlKSB7XG4gICAgaWYgKCF0aGlzLm1lc3NhZ2VTZXJ2aWNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UubWVzc2FnZShtZXNzYWdlIGFzIE1lc3NhZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlUmVzb2x1dGlvbigpIHtcbiAgICB0aGlzLnJlc29sdXRpb24kJCA9IHRoaXMubWFwLnZpZXdDb250cm9sbGVyLnJlc29sdXRpb24kLnN1YnNjcmliZSgoKSA9PlxuICAgICAgdGhpcy51cGRhdGVJblJlc29sdXRpb25zUmFuZ2UoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVub2JzZXJ2ZVJlc29sdXRpb24oKSB7XG4gICAgaWYgKHRoaXMucmVzb2x1dGlvbiQkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucmVzb2x1dGlvbiQkLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLnJlc29sdXRpb24kJCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUluUmVzb2x1dGlvbnNSYW5nZSgpIHtcbiAgICBpZiAodGhpcy5tYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcmVzb2x1dGlvbiA9IHRoaXMubWFwLnZpZXdDb250cm9sbGVyLmdldFJlc29sdXRpb24oKTtcbiAgICAgIGNvbnN0IG1pblJlc29sdXRpb24gPSB0aGlzLm1pblJlc29sdXRpb247XG4gICAgICBjb25zdCBtYXhSZXNvbHV0aW9uID1cbiAgICAgICAgdGhpcy5tYXhSZXNvbHV0aW9uID09PSB1bmRlZmluZWQgPyBJbmZpbml0eSA6IHRoaXMubWF4UmVzb2x1dGlvbjtcbiAgICAgIHRoaXMuaXNJblJlc29sdXRpb25zUmFuZ2UgPVxuICAgICAgICByZXNvbHV0aW9uID49IG1pblJlc29sdXRpb24gJiYgcmVzb2x1dGlvbiA8PSBtYXhSZXNvbHV0aW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzSW5SZXNvbHV0aW9uc1JhbmdlID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9zaGFyZWQvbGF5ZXJzL2xheWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBSXJELE9BQU8sRUFDTCxhQUFhLEVBQ2IsWUFBWSxFQUNiLE1BQU0sK0NBQStDLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsU0FBUyxFQUFrQixNQUFNLGNBQWMsQ0FBQztBQUd6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFL0MsTUFBTSxPQUFnQixLQUFNLFNBQVEsU0FBUztJQTJEbEM7SUFDRztJQUNBO0lBM0RaLE1BQU0sQ0FBYTtJQUVuQixFQUFFLENBQWtCO0lBQ3BCLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxTQUFTLENBQUMsQ0FBQztJQUMxRCxNQUFNLENBQVc7SUFDakIsZUFBZSxHQUFHLElBQUksQ0FBQztJQUN2QixJQUFJLENBQVU7SUFDZCxVQUFVLENBQVU7SUFDWixZQUFZLENBQWU7SUFFbkMsSUFBSSxFQUFFO1FBQ0osT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFjO1FBQ3hCLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QyxJ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QztJQUNILENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDekMsTUFBTSxhQUFhLEdBQ2pCLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDbkUsSUFBSSxDQUFDLG9CQUFvQjtnQkFDdkIsVUFBVSxJQUFJLGFBQWEsSUFBSSxVQUFVLElBQUksYUFBYSxDQUFDO1FBQy9ELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXV0aEludGVyY2VwdG9yIH0gZnJvbSAnQGlnbzIvYXV0aCc7XG5pbXBvcnQgeyBNZXNzYWdlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ0BpZ28yL2NvcmUvbWVzc2FnZSc7XG5cbmltcG9ydCBPbExheWVyIGZyb20gJ29sL2xheWVyL0xheWVyJztcbmltcG9ydCB7IFNvdXJjZSB9IGZyb20gJ29sL3NvdXJjZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERhdGFTb3VyY2UsIExlZ2VuZCB9IGZyb20gJy4uLy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzJztcbmltcG9ydCB0eXBlIHsgTWFwQmFzZSB9IGZyb20gJy4uLy4uLy4uL21hcC9zaGFyZWQvbWFwLmFic3RyYWN0JztcbmltcG9ydCB7XG4gIGlzTGF5ZXJMaW5rZWQsXG4gIGlzTGlua01hc3RlclxufSBmcm9tICcuLi8uLi9zaGFyZWQvbGF5ZXJzL2xpbmtlZC9saW5rZWQtbGF5ZXIudXRpbHMnO1xuaW1wb3J0IHsgaXNMYXllckl0ZW0sIGlzU2F2ZWFibGVMYXllciB9IGZyb20gJy4uLy4uL3V0aWxzL2xheWVyLnV0aWxzJztcbmltcG9ydCB7IEFueUxheWVyIH0gZnJvbSAnLi9hbnktbGF5ZXInO1xuaW1wb3J0IHsgTGF5ZXJCYXNlLCBMYXllckdyb3VwQmFzZSB9IGZyb20gJy4vbGF5ZXItYmFzZSc7XG5pbXBvcnQgeyB0eXBlIExheWVyR3JvdXAgfSBmcm9tICcuL2xheWVyLWdyb3VwJztcbmltcG9ydCB7IHR5cGUgTGF5ZXJPcHRpb25zIH0gZnJvbSAnLi9sYXllci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGlua2VkIH0gZnJvbSAnLi9saW5rZWQvbGlua2VkLWxheWVyJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExheWVyIGV4dGVuZHMgTGF5ZXJCYXNlIHtcbiAgZGVjbGFyZSBkYXRhU291cmNlOiBEYXRhU291cmNlO1xuICBwYXJlbnQ6IExheWVyR3JvdXA7XG5cbiAgb2w6IE9sTGF5ZXI8U291cmNlPjtcbiAgaGFzQmVlblZpc2libGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih1bmRlZmluZWQpO1xuICBsZWdlbmQ6IExlZ2VuZFtdO1xuICBsZWdlbmRDb2xsYXBzZWQgPSB0cnVlO1xuICBsaW5rPzogTGlua2VkO1xuICBsaW5rTWFzdGVyPzogTGlua2VkO1xuICBwcml2YXRlIHJlc29sdXRpb24kJDogU3Vic2NyaXB0aW9uO1xuXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmcodGhpcy5vcHRpb25zLmlkIHx8IHRoaXMuZGF0YVNvdXJjZS5pZCk7XG4gIH1cblxuICBnZXQgdmlzaWJsZSgpIHtcbiAgICByZXR1cm4gc3VwZXIudmlzaWJsZTtcbiAgfVxuICBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHN1cGVyLnZpc2libGUgPSB2YWx1ZTtcbiAgICBpZiAoIXRoaXMuaGFzQmVlblZpc2libGUkLnZhbHVlICYmIHZhbHVlKSB7XG4gICAgICB0aGlzLmhhc0JlZW5WaXNpYmxlJC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucz8ubWVzc2FnZXMgJiYgdmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9ucz8ubWVzc2FnZXNcbiAgICAgICAgLmZpbHRlcigobSkgPT4gbS5vcHRpb25zPy5zaG93T25FYWNoTGF5ZXJWaXNpYmlsaXR5KVxuICAgICAgICAubWFwKChtZXNzYWdlKSA9PiB0aGlzLnNob3dNZXNzYWdlKG1lc3NhZ2UpKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbWF4UmVzb2x1dGlvbigpIHtcbiAgICByZXR1cm4gc3VwZXIubWF4UmVzb2x1dGlvbjtcbiAgfVxuICBzZXQgbWF4UmVzb2x1dGlvbih2YWx1ZTogbnVtYmVyKSB7XG4gICAgc3VwZXIubWF4UmVzb2x1dGlvbiA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlSW5SZXNvbHV0aW9uc1JhbmdlKCk7XG4gIH1cblxuICBnZXQgbWluUmVzb2x1dGlvbigpIHtcbiAgICByZXR1cm4gc3VwZXIubWluUmVzb2x1dGlvbjtcbiAgfVxuICBzZXQgbWluUmVzb2x1dGlvbih2YWx1ZTogbnVtYmVyKSB7XG4gICAgc3VwZXIubWluUmVzb2x1dGlvbiA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlSW5SZXNvbHV0aW9uc1JhbmdlKCk7XG4gIH1cblxuICBnZXQgc2F2ZWFibGVPcHRpb25zKCk6IFBhcnRpYWw8TGF5ZXJPcHRpb25zPiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFpc1NhdmVhYmxlTGF5ZXIodGhpcykpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLnNhdmVhYmxlT3B0aW9ucyxcbiAgICAgIHNvdXJjZU9wdGlvbnM6IHRoaXMuZGF0YVNvdXJjZS5zYXZlYWJsZU9wdGlvbnNcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG9wdGlvbnM6IExheWVyT3B0aW9ucyxcbiAgICBwcm90ZWN0ZWQgbWVzc2FnZVNlcnZpY2U/OiBNZXNzYWdlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYXV0aEludGVyY2VwdG9yPzogQXV0aEludGVyY2VwdG9yXG4gICkge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5kYXRhU291cmNlID0gb3B0aW9ucy5zb3VyY2U7XG5cbiAgICB0aGlzLmxlZ2VuZENvbGxhcHNlZCA9IG9wdGlvbnMubGVnZW5kT3B0aW9uc1xuICAgICAgPyBvcHRpb25zLmxlZ2VuZE9wdGlvbnMuY29sbGFwc2VkXG4gICAgICAgID8gb3B0aW9ucy5sZWdlbmRPcHRpb25zLmNvbGxhcHNlZFxuICAgICAgICA6IHRydWVcbiAgICAgIDogdHJ1ZTtcblxuICAgIGlmIChcbiAgICAgIG9wdGlvbnMubGVnZW5kT3B0aW9ucyAmJlxuICAgICAgKG9wdGlvbnMubGVnZW5kT3B0aW9ucy51cmwgfHwgb3B0aW9ucy5sZWdlbmRPcHRpb25zLmh0bWwpXG4gICAgKSB7XG4gICAgICB0aGlzLmxlZ2VuZCA9IHRoaXMuZGF0YVNvdXJjZS5zZXRMZWdlbmQob3B0aW9ucy5sZWdlbmRPcHRpb25zKTtcbiAgICB9XG5cbiAgICB0aGlzLm9sID0gdGhpcy5jcmVhdGVPbExheWVyKCk7XG4gICAgdGhpcy5vbC5zZXQoJ19sYXllcicsIHRoaXMsIHRydWUpO1xuXG4gICAgc3VwZXIuYWZ0ZXJDcmVhdGVkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlT2xMYXllcigpOiBPbExheWVyPFNvdXJjZT47XG5cbiAgaW5pdChtYXA6IE1hcEJhc2UpOiB2b2lkIHtcbiAgICBzdXBlci5pbml0KG1hcCk7XG5cbiAgICBtYXAubGF5ZXJXYXRjaGVyLndhdGNoTGF5ZXIodGhpcyk7XG5cbiAgICB0aGlzLm9ic2VydmVSZXNvbHV0aW9uKCk7XG4gICAgdGhpcy5oYXNCZWVuVmlzaWJsZSQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubWVzc2FnZXMgJiYgdGhpcy52aXNpYmxlKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5tZXNzYWdlcy5tYXAoKG1lc3NhZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLnNob3dNZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY3JlYXRlTGluaygpO1xuICB9XG5cbiAgY3JlYXRlTGluaygpOiB2b2lkIHtcbiAgICBpZiAoIWlzTGlua01hc3Rlcih0aGlzKSB8fCB0aGlzLmxpbmspIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5saW5rID0gbmV3IExpbmtlZCh0aGlzKTtcbiAgfVxuXG4gIHJlbW92ZSgpOiB2b2lkIHtcbiAgICBzdXBlci5yZW1vdmUoKTtcblxuICAgIHRoaXMudW5vYnNlcnZlUmVzb2x1dGlvbigpO1xuXG4gICAgdGhpcy5tYXAubGF5ZXJXYXRjaGVyLnVud2F0Y2hMYXllcih0aGlzKTtcblxuICAgIGlmIChpc0xpbmtNYXN0ZXIodGhpcykpIHtcbiAgICAgIHRoaXMubGluaz8uZGVsZXRlQ2hpbGRyZW4odGhpcy5tYXAubGF5ZXJDb250cm9sbGVyKTtcbiAgICAgIHRoaXMubGluaz8uZGVzdHJveSgpO1xuICAgIH1cblxuICAgIGlmIChpc0xheWVyTGlua2VkKHRoaXMpKSB7XG4gICAgICBpZiAoIXRoaXMubGlua01hc3Rlcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBtYXN0ZXJMYXllciA9IHRoaXMubGlua01hc3Rlci5sYXllcjtcbiAgICAgIGNvbnN0IGhhc1N5bmMgPSB0aGlzLmxpbmtNYXN0ZXIuaGFzU3luY0RlbGV0aW9uKHRoaXMpO1xuXG4gICAgICB0aGlzLmxpbmtNYXN0ZXIucmVtb3ZlKHRoaXMpO1xuXG4gICAgICBpZiAoaGFzU3luYyAmJiBtYXN0ZXJMYXllcikge1xuICAgICAgICB0aGlzLm1hcC5sYXllckNvbnRyb2xsZXIucmVtb3ZlKG1hc3RlckxheWVyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGQocGFyZW50PzogTGF5ZXJHcm91cEJhc2UpOiB2b2lkIHtcbiAgICBzdXBlci5hZGQocGFyZW50KTtcblxuICAgIGlmIChpc0xheWVyTGlua2VkKHRoaXMpKSB7XG4gICAgICBpZiAoaXNMaW5rTWFzdGVyKHRoaXMpKSB7XG4gICAgICAgIHRoaXMubGluay5pbml0KCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY3JlYXRlTGlua1dpdGhQYXJlbnQoKTtcbiAgICB9XG4gIH1cblxuICBtb3ZlVG8ocGFyZW50PzogTGF5ZXJHcm91cCk6IHZvaWQge1xuICAgIHN1cGVyLm1vdmVUbyhwYXJlbnQpO1xuXG4gICAgaWYgKGlzTGF5ZXJMaW5rZWQodGhpcykpIHtcbiAgICAgIHRoaXMubGluaz8ubW92ZSh0aGlzLCBwYXJlbnQpO1xuICAgICAgdGhpcy5saW5rTWFzdGVyPy5tb3ZlKHRoaXMsIHBhcmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVMaW5rV2l0aFBhcmVudCgpIHtcbiAgICBjb25zdCBtYXN0ZXJMYXllciA9IHRoaXMuZmluZFBhcmVudEJ5TGlua0lkKFxuICAgICAgdGhpcy5tYXAubGF5ZXJDb250cm9sbGVyLmFsbCxcbiAgICAgIHRoaXMub3B0aW9ucy5saW5rZWRMYXllcnMubGlua0lkXG4gICAgKTtcbiAgICBpZiAobWFzdGVyTGF5ZXIpIHtcbiAgICAgIHRoaXMubGlua01hc3RlciA9IG1hc3RlckxheWVyLmxpbms7XG4gICAgICBtYXN0ZXJMYXllcj8ubGluay5hZGQodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUGFyZW50QnlMaW5rSWQobGF5ZXJzOiBBbnlMYXllcltdLCBpZDogc3RyaW5nKTogTGF5ZXIge1xuICAgIHJldHVybiBsYXllcnMuZmluZCgobGF5ZXIpID0+IHtcbiAgICAgIGlmICghaXNMYXllckl0ZW0obGF5ZXIpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChsYXllci5vcHRpb25zLmxpbmtlZExheWVycz8ubGlua3MpIHtcbiAgICAgICAgcmV0dXJuIGxheWVyLm9wdGlvbnMubGlua2VkTGF5ZXJzLmxpbmtzLnNvbWUoKGwpID0+XG4gICAgICAgICAgbC5saW5rZWRJZHMuaW5jbHVkZXMoaWQpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSkgYXMgTGF5ZXI7XG4gIH1cblxuICBwcml2YXRlIHNob3dNZXNzYWdlKG1lc3NhZ2U6IE1lc3NhZ2UpIHtcbiAgICBpZiAoIXRoaXMubWVzc2FnZVNlcnZpY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5tZXNzYWdlKG1lc3NhZ2UgYXMgTWVzc2FnZSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVSZXNvbHV0aW9uKCkge1xuICAgIHRoaXMucmVzb2x1dGlvbiQkID0gdGhpcy5tYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiQuc3Vic2NyaWJlKCgpID0+XG4gICAgICB0aGlzLnVwZGF0ZUluUmVzb2x1dGlvbnNSYW5nZSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5vYnNlcnZlUmVzb2x1dGlvbigpIHtcbiAgICBpZiAodGhpcy5yZXNvbHV0aW9uJCQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yZXNvbHV0aW9uJCQudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMucmVzb2x1dGlvbiQkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSW5SZXNvbHV0aW9uc1JhbmdlKCkge1xuICAgIGlmICh0aGlzLm1hcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCByZXNvbHV0aW9uID0gdGhpcy5tYXAudmlld0NvbnRyb2xsZXIuZ2V0UmVzb2x1dGlvbigpO1xuICAgICAgY29uc3QgbWluUmVzb2x1dGlvbiA9IHRoaXMubWluUmVzb2x1dGlvbjtcbiAgICAgIGNvbnN0IG1heFJlc29sdXRpb24gPVxuICAgICAgICB0aGlzLm1heFJlc29sdXRpb24gPT09IHVuZGVmaW5lZCA/IEluZmluaXR5IDogdGhpcy5tYXhSZXNvbHV0aW9uO1xuICAgICAgdGhpcy5pc0luUmVzb2x1dGlvbnNSYW5nZSA9XG4gICAgICAgIHJlc29sdXRpb24gPj0gbWluUmVzb2x1dGlvbiAmJiByZXNvbHV0aW9uIDw9IG1heFJlc29sdXRpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNJblJlc29sdXRpb25zUmFuZ2UgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './linked-layer';
|
|
2
|
+
export * from './linked-layer.interface';
|
|
3
|
+
export * from './linked-layer.utils';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9zaGFyZWQvbGF5ZXJzL2xpbmtlZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGlua2VkLWxheWVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGlua2VkLWxheWVyLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpbmtlZC1sYXllci51dGlscyc7XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export var LinkedProperties;
|
|
2
|
+
(function (LinkedProperties) {
|
|
3
|
+
LinkedProperties["OPACITY"] = "opacity";
|
|
4
|
+
LinkedProperties["VISIBLE"] = "visible";
|
|
5
|
+
LinkedProperties["DISPLAYED"] = "displayed";
|
|
6
|
+
LinkedProperties["OGCFILTERS"] = "ogcFilters";
|
|
7
|
+
LinkedProperties["MINRESOLUTION"] = "minResolution";
|
|
8
|
+
LinkedProperties["MAXRESOLUTION"] = "maxResolution";
|
|
9
|
+
LinkedProperties["ZINDEX"] = "zIndex";
|
|
10
|
+
LinkedProperties["TIMEFILTER"] = "timeFilter";
|
|
11
|
+
})(LinkedProperties || (LinkedProperties = {}));
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkLWxheWVyLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2xheWVyL3NoYXJlZC9sYXllcnMvbGlua2VkL2xpbmtlZC1sYXllci5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMEJBLE1BQU0sQ0FBTixJQUFZLGdCQVNYO0FBVEQsV0FBWSxnQkFBZ0I7SUFDMUIsdUNBQW1CLENBQUE7SUFDbkIsdUNBQW1CLENBQUE7SUFDbkIsMkNBQXVCLENBQUE7SUFDdkIsNkNBQXlCLENBQUE7SUFDekIsbURBQStCLENBQUE7SUFDL0IsbURBQStCLENBQUE7SUFDL0IscUNBQWlCLENBQUE7SUFDakIsNkNBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQVRXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFTM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFueUxheWVyIH0gZnJvbSAnLi4vYW55LWxheWVyJztcbmltcG9ydCB0eXBlIHsgTGF5ZXIgfSBmcm9tICcuLi9sYXllcic7XG5cbmV4cG9ydCB0eXBlIEFueVByb3BlcnR5T3B0aW9ucyA9IFppbmRleFByb3BlcnR5T3B0aW9ucyB8IEJhc2VQcm9wZXJ0eU9wdGlvbnM7XG5cbmV4cG9ydCBpbnRlcmZhY2UgWmluZGV4UHJvcGVydHlPcHRpb25zIGV4dGVuZHMgQmFzZVByb3BlcnR5T3B0aW9ucyB7XG4gIGluaXRpYWxPcmRlcjogQW55TGF5ZXJbXTtcbn1cblxuaW50ZXJmYWNlIEJhc2VQcm9wZXJ0eU9wdGlvbnMge1xuICBsYXllcnM6IExheWVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF5ZXJzTGluayB7XG4gIGxpbmtJZDogc3RyaW5nO1xuICAvKiogRGVmYXVsdCB2YWx1ZSBpcyB0cnVlICovXG4gIHNob3dJbk1pbmlCYXNlTWFwPzogYm9vbGVhbjtcbiAgbGlua3M/OiBMYXllcnNMaW5rUHJvcGVydGllc1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBMYXllcnNMaW5rUHJvcGVydGllcyB7XG4gIGJpZGlyZWN0aW9ubmFsPzogYm9vbGVhbjtcbiAgbGlua2VkSWRzOiBzdHJpbmdbXTtcbiAgc3luY2VkRGVsZXRlOiBib29sZWFuO1xuICBwcm9wZXJ0aWVzOiBMaW5rZWRQcm9wZXJ0aWVzW107XG59XG5cbmV4cG9ydCBlbnVtIExpbmtlZFByb3BlcnRpZXMge1xuICBPUEFDSVRZID0gJ29wYWNpdHknLFxuICBWSVNJQkxFID0gJ3Zpc2libGUnLFxuICBESVNQTEFZRUQgPSAnZGlzcGxheWVkJyxcbiAgT0dDRklMVEVSUyA9ICdvZ2NGaWx0ZXJzJyxcbiAgTUlOUkVTT0xVVElPTiA9ICdtaW5SZXNvbHV0aW9uJyxcbiAgTUFYUkVTT0xVVElPTiA9ICdtYXhSZXNvbHV0aW9uJyxcbiAgWklOREVYID0gJ3pJbmRleCcsXG4gIFRJTUVGSUxURVIgPSAndGltZUZpbHRlcidcbn1cbiJdfQ==
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { findLayerByLinkId, getLayersByDeletion, handleLayerPropertyChange } from '../../../../map/shared/linkedLayers.utils';
|
|
2
|
+
import { LayerWatcher } from '../../../../map/utils/layer-watcher';
|
|
3
|
+
import { isLayerItem, sortLayersByZindex } from '../../../utils/layer.utils';
|
|
4
|
+
import { LinkedProperties } from './linked-layer.interface';
|
|
5
|
+
export class Linked {
|
|
6
|
+
layer;
|
|
7
|
+
children = [];
|
|
8
|
+
watcher = new LayerWatcher();
|
|
9
|
+
bidirectionnalChildren = [];
|
|
10
|
+
childrenByProperty = new Map();
|
|
11
|
+
disabledProperties = [];
|
|
12
|
+
constructor(layer) {
|
|
13
|
+
this.layer = layer;
|
|
14
|
+
this.init();
|
|
15
|
+
this.watcher.watchLayer(layer);
|
|
16
|
+
this.watcher.propertyChange$.subscribe((change) => {
|
|
17
|
+
if (!change) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
this.handleChange(change);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
get options() {
|
|
24
|
+
return this.layer.options;
|
|
25
|
+
}
|
|
26
|
+
get links() {
|
|
27
|
+
return this.layer.options.linkedLayers.links;
|
|
28
|
+
}
|
|
29
|
+
get map() {
|
|
30
|
+
return this.layer.map;
|
|
31
|
+
}
|
|
32
|
+
init() {
|
|
33
|
+
const children = this.findChildren(this.map.layerController.all, this.links);
|
|
34
|
+
this.links.forEach((link) => {
|
|
35
|
+
link.properties.forEach((property) => {
|
|
36
|
+
let options = this.getByProperty(property);
|
|
37
|
+
if (property === LinkedProperties.ZINDEX) {
|
|
38
|
+
const layers = [this.layer, ...children];
|
|
39
|
+
options = this.initZIndexLinkOptions(options, layers);
|
|
40
|
+
}
|
|
41
|
+
this.childrenByProperty.set(property, options);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
children.forEach((child) => this.add(child));
|
|
45
|
+
}
|
|
46
|
+
initZIndexLinkOptions(options, layers) {
|
|
47
|
+
options.initialOrder = sortLayersByZindex(layers, 'desc');
|
|
48
|
+
return options;
|
|
49
|
+
}
|
|
50
|
+
destroy() {
|
|
51
|
+
this.children.forEach((child) => {
|
|
52
|
+
this.remove(child);
|
|
53
|
+
});
|
|
54
|
+
this.unwatch();
|
|
55
|
+
}
|
|
56
|
+
add(layer) {
|
|
57
|
+
if (!this.children.includes(layer)) {
|
|
58
|
+
this.children.push(layer);
|
|
59
|
+
}
|
|
60
|
+
this.getLayerLinks(layer).forEach((link) => {
|
|
61
|
+
if (link.bidirectionnal) {
|
|
62
|
+
if (this.bidirectionnalChildren.includes(layer)) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
this.bidirectionnalChildren.push(layer);
|
|
66
|
+
this.watcher.watchLayer(layer);
|
|
67
|
+
}
|
|
68
|
+
link.properties.forEach((property) => {
|
|
69
|
+
const options = this.getByProperty(property);
|
|
70
|
+
if (options.layers.includes(layer)) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// We have a property displayed for layer out of resolution or in a group
|
|
74
|
+
// If the visiblity is linked, we need to reflect the displayed value
|
|
75
|
+
if (property === LinkedProperties.VISIBLE && !layer.showInLayerList) {
|
|
76
|
+
const displayedOptions = this.getByProperty(LinkedProperties.DISPLAYED);
|
|
77
|
+
displayedOptions.layers.push(layer);
|
|
78
|
+
this.childrenByProperty.set(LinkedProperties.DISPLAYED, displayedOptions);
|
|
79
|
+
}
|
|
80
|
+
if (property === LinkedProperties.ZINDEX) {
|
|
81
|
+
const zIndexOptions = options;
|
|
82
|
+
if (!zIndexOptions.initialOrder.includes(layer)) {
|
|
83
|
+
zIndexOptions.initialOrder = sortLayersByZindex([...zIndexOptions.initialOrder, layer], 'desc');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
options.layers.push(layer);
|
|
87
|
+
this.childrenByProperty.set(property, options);
|
|
88
|
+
if (layer[property] !== this.layer[property]) {
|
|
89
|
+
this.handleChange({
|
|
90
|
+
event: {
|
|
91
|
+
key: property,
|
|
92
|
+
oldValue: layer[property],
|
|
93
|
+
value: this.layer[property]
|
|
94
|
+
},
|
|
95
|
+
layer: this.layer
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
hasSyncDeletion(layer) {
|
|
102
|
+
return this.getLayerLinks(layer).some((link) => link.syncedDelete);
|
|
103
|
+
}
|
|
104
|
+
remove(layer) {
|
|
105
|
+
layer.linkMaster = undefined;
|
|
106
|
+
this.removeArrayItem(layer, this.children, 'id');
|
|
107
|
+
this.getLayerLinks(layer).forEach((link) => {
|
|
108
|
+
if (link.bidirectionnal) {
|
|
109
|
+
this.watcher.unwatchLayer(layer);
|
|
110
|
+
}
|
|
111
|
+
link.properties.forEach((property) => {
|
|
112
|
+
const options = this.getByProperty(property);
|
|
113
|
+
this.removeArrayItem(layer, options.layers, 'id');
|
|
114
|
+
this.childrenByProperty.set(property, options);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
deleteChildren(controller) {
|
|
119
|
+
const layers = getLayersByDeletion(this.children, this.links);
|
|
120
|
+
layers?.forEach((layer) => {
|
|
121
|
+
this.remove(layer);
|
|
122
|
+
controller.remove(layer);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
move(layer, parent) {
|
|
126
|
+
if (this.propertyIsDisabled(LinkedProperties.ZINDEX)) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const options = this.getByProperty(LinkedProperties.ZINDEX);
|
|
130
|
+
if (!options.layers.length) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const linkedLayers = this.getLinkedLayersOnZindex(layer.id);
|
|
134
|
+
this.disable(LinkedProperties.ZINDEX);
|
|
135
|
+
const index = options.initialOrder.findIndex((l) => l.id === layer.id);
|
|
136
|
+
linkedLayers?.forEach((linkLayer) => {
|
|
137
|
+
if (!linkLayer.showInLayerList) {
|
|
138
|
+
linkLayer.zIndex = layer.zIndex;
|
|
139
|
+
if (parent !== linkLayer.parent) {
|
|
140
|
+
linkLayer.reset(parent);
|
|
141
|
+
}
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const linkedIndex = options.initialOrder.findIndex((l) => l.id === linkLayer.id);
|
|
145
|
+
linkedIndex < index
|
|
146
|
+
? this.map.layerController.moveAbove(layer, linkLayer)
|
|
147
|
+
: this.map.layerController.moveBelow(layer, linkLayer);
|
|
148
|
+
});
|
|
149
|
+
this.enable(LinkedProperties.ZINDEX);
|
|
150
|
+
}
|
|
151
|
+
disable(...properties) {
|
|
152
|
+
properties.forEach((property) => {
|
|
153
|
+
if (this.disabledProperties.includes(property)) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
this.disabledProperties.push(property);
|
|
157
|
+
});
|
|
158
|
+
this.bidirectionnalChildren.forEach((layer) => {
|
|
159
|
+
this.watcher.unwatchLayer(layer);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
enable(...properties) {
|
|
163
|
+
properties.forEach((property) => {
|
|
164
|
+
const index = this.disabledProperties.findIndex((disableProperty) => disableProperty === property);
|
|
165
|
+
if (index > -1) {
|
|
166
|
+
this.disabledProperties.splice(index, 1);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
this.bidirectionnalChildren.forEach((layer) => {
|
|
170
|
+
this.watcher.watchLayer(layer);
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
getByProperty(property) {
|
|
174
|
+
return this.childrenByProperty.get(property) ?? { layers: [] };
|
|
175
|
+
}
|
|
176
|
+
propertyIsDisabled(property) {
|
|
177
|
+
return this.disabledProperties.includes(property);
|
|
178
|
+
}
|
|
179
|
+
getLayerLinks(layer) {
|
|
180
|
+
const linkId = layer.options.linkedLayers.linkId;
|
|
181
|
+
return this.links.filter((link) => link.linkedIds.includes(linkId));
|
|
182
|
+
}
|
|
183
|
+
removeArrayItem(item, array, key = 'id') {
|
|
184
|
+
const index = array.findIndex((n) => n[key] === item[key]);
|
|
185
|
+
if (index !== -1) {
|
|
186
|
+
array.splice(index, 1);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
getLinkedLayersOnZindex(id) {
|
|
190
|
+
return [...this.getByProperty(LinkedProperties.ZINDEX).layers]
|
|
191
|
+
?.concat(this.layer)
|
|
192
|
+
.filter((layer) => layer.id !== id);
|
|
193
|
+
}
|
|
194
|
+
unwatch() {
|
|
195
|
+
this.watcher.unwatch();
|
|
196
|
+
}
|
|
197
|
+
handleChange = (change) => {
|
|
198
|
+
const isMasterChage = change.layer.id === this.layer.id;
|
|
199
|
+
const property = change.event.key;
|
|
200
|
+
if (this.propertyIsDisabled(property)) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
const options = this.getByProperty(property);
|
|
204
|
+
let layers = [...options.layers];
|
|
205
|
+
if (!layers?.length && isMasterChage) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
if (!isMasterChage) {
|
|
209
|
+
layers = layers.filter((n) => n.id !== change.layer.id);
|
|
210
|
+
layers.push(this.layer);
|
|
211
|
+
}
|
|
212
|
+
if (property === LinkedProperties.DISPLAYED && isMasterChage) {
|
|
213
|
+
return this.handleDisplayChange(change, layers);
|
|
214
|
+
}
|
|
215
|
+
handleLayerPropertyChange(layers, change, this.map.viewController);
|
|
216
|
+
};
|
|
217
|
+
handleDisplayChange(change, children) {
|
|
218
|
+
const affectedProperties = [
|
|
219
|
+
LinkedProperties.DISPLAYED,
|
|
220
|
+
LinkedProperties.VISIBLE
|
|
221
|
+
];
|
|
222
|
+
this.disable(...affectedProperties);
|
|
223
|
+
children.forEach((child) => {
|
|
224
|
+
if (!child.showInLayerList) {
|
|
225
|
+
child.visible = !!change.event.value;
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
this.enable(...affectedProperties);
|
|
229
|
+
}
|
|
230
|
+
findChildren(layers, links) {
|
|
231
|
+
const layersFiltered = layers.filter((n) => isLayerItem(n));
|
|
232
|
+
return links.reduce((linked, link) => {
|
|
233
|
+
const layerFromLink = link.linkedIds
|
|
234
|
+
.map((id) => {
|
|
235
|
+
return findLayerByLinkId(layersFiltered, id);
|
|
236
|
+
})
|
|
237
|
+
.filter(Boolean);
|
|
238
|
+
return linked.concat(layerFromLink);
|
|
239
|
+
}, []);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua2VkLWxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvc2hhcmVkL2xheWVycy9saW5rZWQvbGlua2VkLWxheWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUMxQixNQUFNLDJDQUEyQyxDQUFDO0FBQ25ELE9BQU8sRUFDTCxZQUFZLEVBRWIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFLN0UsT0FBTyxFQUdMLGdCQUFnQixFQUVqQixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE1BQU0sT0FBTyxNQUFNO0lBT0U7SUFOWCxRQUFRLEdBQVksRUFBRSxDQUFDO0lBQ3ZCLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBQzdCLHNCQUFzQixHQUFZLEVBQUUsQ0FBQztJQUNyQyxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBd0MsQ0FBQztJQUNyRSxrQkFBa0IsR0FBdUIsRUFBRSxDQUFDO0lBRXBELFlBQW1CLEtBQVk7UUFBWixVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQzdCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVaLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9CLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDWixPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxP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QUNsQixLQUE2QjtRQUU3QixNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQVksQ0FBQztRQUV2RSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFlLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDNUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVM7aUJBQ2pDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO2dCQUNWLE9BQU8saUJBQWlCLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLENBQUMsQ0FBQztpQkFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFbkIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGZpbmRMYXllckJ5TGlua0lkLFxuICBnZXRMYXllcnNCeURlbGV0aW9uLFxuICBoYW5kbGVMYXllclByb3BlcnR5Q2hhbmdlXG59IGZyb20gJy4uLy4uLy4uLy4uL21hcC9zaGFyZWQvbGlua2VkTGF5ZXJzLnV0aWxzJztcbmltcG9ydCB7XG4gIExheWVyV2F0Y2hlcixcbiAgTGF5ZXJXYXRjaGVyQ2hhbmdlXG59IGZyb20gJy4uLy4uLy4uLy4uL21hcC91dGlscy9sYXllci13YXRjaGVyJztcbmltcG9ydCB7IGlzTGF5ZXJJdGVtLCBzb3J0TGF5ZXJzQnlaaW5kZXggfSBmcm9tICcuLi8uLi8uLi91dGlscy9sYXllci51dGlscyc7XG5pbXBvcnQgdHlwZSB7IExheWVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2xheWVyLWNvbnRyb2xsZXInO1xuaW1wb3J0IHR5cGUgeyBBbnlMYXllciB9IGZyb20gJy4uL2FueS1sYXllcic7XG5pbXBvcnQgdHlwZSB7IExheWVyIH0gZnJvbSAnLi4vbGF5ZXInO1xuaW1wb3J0IHR5cGUgeyBMYXllckdyb3VwIH0gZnJvbSAnLi4vbGF5ZXItZ3JvdXAnO1xuaW1wb3J0IHtcbiAgQW55UHJvcGVydHlPcHRpb25zLFxuICBMYXllcnNMaW5rUHJvcGVydGllcyxcbiAgTGlua2VkUHJvcGVydGllcyxcbiAgWmluZGV4UHJvcGVydHlPcHRpb25zXG59IGZyb20gJy4vbGlua2VkLWxheWVyLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBMaW5rZWQge1xuICBwcml2YXRlIGNoaWxkcmVuOiBMYXllcltdID0gW107XG4gIHByaXZhdGUgd2F0Y2hlciA9IG5ldyBMYXllcldhdGNoZXIoKTtcbiAgcHJpdmF0ZSBiaWRpcmVjdGlvbm5hbENoaWxkcmVuOiBMYXllcltdID0gW107XG4gIHByaXZhdGUgY2hpbGRyZW5CeVByb3BlcnR5ID0gbmV3IE1hcDxMaW5rZWRQcm9wZXJ0aWVzLCBBbnlQcm9wZXJ0eU9wdGlvbnM+KCk7XG4gIHByaXZhdGUgZGlzYWJsZWRQcm9wZXJ0aWVzOiBMaW5rZWRQcm9wZXJ0aWVzW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbGF5ZXI6IExheWVyKSB7XG4gICAgdGhpcy5pbml0KCk7XG5cbiAgICB0aGlzLndhdGNoZXIud2F0Y2hMYXllcihsYXllcik7XG5cbiAgICB0aGlzLndhdGNoZXIucHJvcGVydHlDaGFuZ2UkLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICBpZiAoIWNoYW5nZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmhhbmRsZUNoYW5nZShjaGFuZ2UpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGF5ZXIub3B0aW9ucztcbiAgfVxuXG4gIGdldCBsaW5rcygpIHtcbiAgICByZXR1cm4gdGhpcy5sYXllci5vcHRpb25zLmxpbmtlZExheWVycy5saW5rcyE7XG4gIH1cblxuICBnZXQgbWFwKCkge1xuICAgIHJldHVybiB0aGlzLmxheWVyLm1hcDtcbiAgfVxuXG4gIGluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmZpbmRDaGlsZHJlbihcbiAgICAgIHRoaXMubWFwLmxheWVyQ29udHJvbGxlci5hbGwsXG4gICAgICB0aGlzLmxpbmtzXG4gICAgKTtcblxuICAgIHRoaXMubGlua3MuZm9yRWFjaCgobGluaykgPT4ge1xuICAgICAgbGluay5wcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgICAgIGxldCBvcHRpb25zID0gdGhpcy5nZXRCeVByb3BlcnR5KHByb3BlcnR5KTtcblxuICAgICAgICBpZiAocHJvcGVydHkgPT09IExpbmtlZFByb3BlcnRpZXMuWklOREVYKSB7XG4gICAgICAgICAgY29uc3QgbGF5ZXJzID0gW3RoaXMubGF5ZXIsIC4uLmNoaWxkcmVuXTtcbiAgICAgICAgICBvcHRpb25zID0gdGhpcy5pbml0WkluZGV4TGlua09wdGlvbnMoXG4gICAgICAgICAgICBvcHRpb25zIGFzIFppbmRleFByb3BlcnR5T3B0aW9ucyxcbiAgICAgICAgICAgIGxheWVyc1xuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoaWxkcmVuQnlQcm9wZXJ0eS5zZXQocHJvcGVydHksIG9wdGlvbnMpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4gdGhpcy5hZGQoY2hpbGQpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFpJbmRleExpbmtPcHRpb25zKFxuICAgIG9wdGlvbnM6IFppbmRleFByb3BlcnR5T3B0aW9ucyxcbiAgICBsYXllcnM6IExheWVyW11cbiAgKSB7XG4gICAgb3B0aW9ucy5pbml0aWFsT3JkZXIgPSBzb3J0TGF5ZXJzQnlaaW5kZXgobGF5ZXJzLCAnZGVzYycpO1xuXG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHtcbiAgICAgIHRoaXMucmVtb3ZlKGNoaWxkKTtcbiAgICB9KTtcbiAgICB0aGlzLnVud2F0Y2goKTtcbiAgfVxuXG4gIGFkZChsYXllcjogTGF5ZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2hpbGRyZW4uaW5jbHVkZXMobGF5ZXIpKSB7XG4gICAgICB0aGlzLmNoaWxkcmVuLnB1c2gobGF5ZXIpO1xuICAgIH1cblxuICAgIHRoaXMuZ2V0TGF5ZXJMaW5rcyhsYXllcikuZm9yRWFjaCgobGluaykgPT4ge1xuICAgICAgaWYgKGxpbmsuYmlkaXJlY3Rpb25uYWwpIHtcbiAgICAgICAgaWYgKHRoaXMuYmlkaXJlY3Rpb25uYWxDaGlsZHJlbi5pbmNsdWRlcyhsYXllcikpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iaWRpcmVjdGlvbm5hbENoaWxkcmVuLnB1c2gobGF5ZXIpO1xuICAgICAgICB0aGlzLndhdGNoZXIud2F0Y2hMYXllcihsYXllcik7XG4gICAgICB9XG5cbiAgICAgIGxpbmsucHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRCeVByb3BlcnR5KHByb3BlcnR5KTtcbiAgICAgICAgaWYgKG9wdGlvbnMubGF5ZXJzLmluY2x1ZGVzKGxheWVyKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFdlIGhhdmUgYSBwcm9wZXJ0eSBkaXNwbGF5ZWQgZm9yIGxheWVyIG91dCBvZiByZXNvbHV0aW9uIG9yIGluIGEgZ3JvdXBcbiAgICAgICAgLy8gSWYgdGhlIHZpc2libGl0eSBpcyBsaW5rZWQsIHdlIG5lZWQgdG8gcmVmbGVjdCB0aGUgZGlzcGxheWVkIHZhbHVlXG4gICAgICAgIGlmIChwcm9wZXJ0eSA9PT0gTGlua2VkUHJvcGVydGllcy5WSVNJQkxFICYmICFsYXllci5zaG93SW5MYXllckxpc3QpIHtcbiAgICAgICAgICBjb25zdCBkaXNwbGF5ZWRPcHRpb25zID0gdGhpcy5nZXRCeVByb3BlcnR5KFxuICAgICAgICAgICAgTGlua2VkUHJvcGVydGllcy5ESVNQTEFZRURcbiAgICAgICAgICApO1xuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubGF5ZXJzLnB1c2gobGF5ZXIpO1xuICAgICAgICAgIHRoaXMuY2hpbGRyZW5CeVByb3BlcnR5LnNldChcbiAgICAgICAgICAgIExpbmtlZFByb3BlcnRpZXMuRElTUExBWUVELFxuICAgICAgICAgICAgZGlzcGxheWVkT3B0aW9uc1xuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcGVydHkgPT09IExpbmtlZFByb3BlcnRpZXMuWklOREVYKSB7XG4gICAgICAgICAgY29uc3QgekluZGV4T3B0aW9ucyA9IG9wdGlvbnMgYXMgWmluZGV4UHJvcGVydHlPcHRpb25zO1xuICAgICAgICAgIGlmICghekluZGV4T3B0aW9ucy5pbml0aWFsT3JkZXIuaW5jbHVkZXMobGF5ZXIpKSB7XG4gICAgICAgICAgICB6SW5kZXhPcHRpb25zLmluaXRpYWxPcmRlciA9IHNvcnRMYXllcnNCeVppbmRleChcbiAgICAgICAgICAgICAgWy4uLnpJbmRleE9wdGlvbnMuaW5pdGlhbE9yZGVyLCBsYXllcl0sXG4gICAgICAgICAgICAgICdkZXNjJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBvcHRpb25zLmxheWVycy5wdXNoKGxheWVyKTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbkJ5UHJvcGVydHkuc2V0KHByb3BlcnR5LCBvcHRpb25zKTtcblxuICAgICAgICBpZiAobGF5ZXJbcHJvcGVydHldICE9PSB0aGlzLmxheWVyW3Byb3BlcnR5XSkge1xuICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKHtcbiAgICAgICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgICAgIGtleTogcHJvcGVydHksXG4gICAgICAgICAgICAgIG9sZFZhbHVlOiBsYXllcltwcm9wZXJ0eV0sXG4gICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmxheWVyW3Byb3BlcnR5XVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxheWVyOiB0aGlzLmxheWVyXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgaGFzU3luY0RlbGV0aW9uKGxheWVyOiBMYXllcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldExheWVyTGlua3MobGF5ZXIpLnNvbWUoKGxpbmspID0+IGxpbmsuc3luY2VkRGVsZXRlKTtcbiAgfVxuXG4gIHJlbW92ZShsYXllcjogTGF5ZXIpOiB2b2lkIHtcbiAgICBsYXllci5saW5rTWFzdGVyID0gdW5kZWZpbmVkO1xuICAgIHRoaXMucmVtb3ZlQXJyYXlJdGVtKGxheWVyLCB0aGlzLmNoaWxkcmVuLCAnaWQnKTtcblxuICAgIHRoaXMuZ2V0TGF5ZXJMaW5rcyhsYXllcikuZm9yRWFjaCgobGluaykgPT4ge1xuICAgICAgaWYgKGxpbmsuYmlkaXJlY3Rpb25uYWwpIHtcbiAgICAgICAgdGhpcy53YXRjaGVyLnVud2F0Y2hMYXllcihsYXllcik7XG4gICAgICB9XG5cbiAgICAgIGxpbmsucHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRCeVByb3BlcnR5KHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5yZW1vdmVBcnJheUl0ZW0obGF5ZXIsIG9wdGlvbnMubGF5ZXJzLCAnaWQnKTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbkJ5UHJvcGVydHkuc2V0KHByb3BlcnR5LCBvcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlQ2hpbGRyZW4oY29udHJvbGxlcjogTGF5ZXJDb250cm9sbGVyKTogdm9pZCB7XG4gICAgY29uc3QgbGF5ZXJzID0gZ2V0TGF5ZXJzQnlEZWxldGlvbih0aGlzLmNoaWxkcmVuLCB0aGlzLmxpbmtzKTtcbiAgICBsYXllcnM/LmZvckVhY2goKGxheWVyKSA9PiB7XG4gICAgICB0aGlzLnJlbW92ZShsYXllcik7XG4gICAgICBjb250cm9sbGVyLnJlbW92ZShsYXllcik7XG4gICAgfSk7XG4gIH1cblxuICBtb3ZlKGxheWVyOiBMYXllciwgcGFyZW50PzogTGF5ZXJHcm91cCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BlcnR5SXNEaXNhYmxlZChMaW5rZWRQcm9wZXJ0aWVzLlpJTkRFWCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5nZXRCeVByb3BlcnR5KFxuICAgICAgTGlua2VkUHJvcGVydGllcy5aSU5ERVhcbiAgICApIGFzIFppbmRleFByb3BlcnR5T3B0aW9ucztcbiAgICBpZiAoIW9wdGlvbnMubGF5ZXJzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmtlZExheWVycyA9IHRoaXMuZ2V0TGlua2VkTGF5ZXJzT25aaW5kZXgobGF5ZXIuaWQpO1xuXG4gICAgdGhpcy5kaXNhYmxlKExpbmtlZFByb3BlcnRpZXMuWklOREVYKTtcblxuICAgIGNvbnN0IGluZGV4ID0gb3B0aW9ucy5pbml0aWFsT3JkZXIuZmluZEluZGV4KChsKSA9PiBsLmlkID09PSBsYXllci5pZCk7XG4gICAgbGlua2VkTGF5ZXJzPy5mb3JFYWNoKChsaW5rTGF5ZXIpID0+IHtcbiAgICAgIGlmICghbGlua0xheWVyLnNob3dJbkxheWVyTGlzdCkge1xuICAgICAgICBsaW5rTGF5ZXIuekluZGV4ID0gbGF5ZXIuekluZGV4O1xuICAgICAgICBpZiAocGFyZW50ICE9PSBsaW5rTGF5ZXIucGFyZW50KSB7XG4gICAgICAgICAgbGlua0xheWVyLnJlc2V0KHBhcmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsaW5rZWRJbmRleCA9IG9wdGlvbnMuaW5pdGlhbE9yZGVyLmZpbmRJbmRleChcbiAgICAgICAgKGwpID0+IGwuaWQgPT09IGxpbmtMYXllci5pZFxuICAgICAgKTtcbiAgICAgIGxpbmtlZEluZGV4IDwgaW5kZXhcbiAgICAgICAgPyB0aGlzLm1hcC5sYXllckNvbnRyb2xsZXIubW92ZUFib3ZlKGxheWVyLCBsaW5rTGF5ZXIpXG4gICAgICAgIDogdGhpcy5tYXAubGF5ZXJDb250cm9sbGVyLm1vdmVCZWxvdyhsYXllciwgbGlua0xheWVyKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZW5hYmxlKExpbmtlZFByb3BlcnRpZXMuWklOREVYKTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZSguLi5wcm9wZXJ0aWVzOiBMaW5rZWRQcm9wZXJ0aWVzW10pOiB2b2lkIHtcbiAgICBwcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZFByb3BlcnRpZXMuaW5jbHVkZXMocHJvcGVydHkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGlzYWJsZWRQcm9wZXJ0aWVzLnB1c2gocHJvcGVydHkpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5iaWRpcmVjdGlvbm5hbENoaWxkcmVuLmZvckVhY2goKGxheWVyKSA9PiB7XG4gICAgICB0aGlzLndhdGNoZXIudW53YXRjaExheWVyKGxheWVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlKC4uLnByb3BlcnRpZXM6IExpbmtlZFByb3BlcnRpZXNbXSk6IHZvaWQge1xuICAgIHByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kaXNhYmxlZFByb3BlcnRpZXMuZmluZEluZGV4KFxuICAgICAgICAoZGlzYWJsZVByb3BlcnR5KSA9PiBkaXNhYmxlUHJvcGVydHkgPT09IHByb3BlcnR5XG4gICAgICApO1xuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZFByb3BlcnRpZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuYmlkaXJlY3Rpb25uYWxDaGlsZHJlbi5mb3JFYWNoKChsYXllcikgPT4ge1xuICAgICAgdGhpcy53YXRjaGVyLndhdGNoTGF5ZXIobGF5ZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCeVByb3BlcnR5KHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzKTogQW55UHJvcGVydHlPcHRpb25zIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZHJlbkJ5UHJvcGVydHkuZ2V0KHByb3BlcnR5KSA/PyB7IGxheWVyczogW10gfTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvcGVydHlJc0Rpc2FibGVkKHByb3BlcnR5OiBMaW5rZWRQcm9wZXJ0aWVzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWRQcm9wZXJ0aWVzLmluY2x1ZGVzKHByb3BlcnR5KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGF5ZXJMaW5rcyhsYXllcjogTGF5ZXIpOiBMYXllcnNMaW5rUHJvcGVydGllc1tdIHtcbiAgICBjb25zdCBsaW5rSWQgPSBsYXllci5vcHRpb25zLmxpbmtlZExheWVycyEubGlua0lkO1xuICAgIHJldHVybiB0aGlzLmxpbmtzLmZpbHRlcigobGluaykgPT4gbGluay5saW5rZWRJZHMuaW5jbHVkZXMobGlua0lkKSk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUFycmF5SXRlbTxUIGV4dGVuZHMgeyBpZDogc3RyaW5nIH0+KFxuICAgIGl0ZW06IFQsXG4gICAgYXJyYXk6IFRbXSxcbiAgICBrZXk6IGtleW9mIFQgPSAnaWQnXG4gICkge1xuICAgIGNvbnN0IGluZGV4ID0gYXJyYXkuZmluZEluZGV4KChuKSA9PiBuW2tleV0gPT09IGl0ZW1ba2V5XSk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgYXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldExpbmtlZExheWVyc09uWmluZGV4KGlkOiBzdHJpbmcpOiBMYXllcltdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuZ2V0QnlQcm9wZXJ0eShMaW5rZWRQcm9wZXJ0aWVzLlpJTkRFWCkubGF5ZXJzXVxuICAgICAgPy5jb25jYXQodGhpcy5sYXllcilcbiAgICAgIC5maWx0ZXIoKGxheWVyKSA9PiBsYXllci5pZCAhPT0gaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bndhdGNoKCk6IHZvaWQge1xuICAgIHRoaXMud2F0Y2hlci51bndhdGNoKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNoYW5nZSA9IChjaGFuZ2U6IExheWVyV2F0Y2hlckNoYW5nZSkgPT4ge1xuICAgIGNvbnN0IGlzTWFzdGVyQ2hhZ2UgPSBjaGFuZ2UubGF5ZXIuaWQgPT09IHRoaXMubGF5ZXIuaWQ7XG5cbiAgICBjb25zdCBwcm9wZXJ0eSA9IGNoYW5nZS5ldmVudC5rZXkgYXMgTGlua2VkUHJvcGVydGllcztcbiAgICBpZiAodGhpcy5wcm9wZXJ0eUlzRGlzYWJsZWQocHJvcGVydHkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZ2V0QnlQcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgbGV0IGxheWVycyA9IFsuLi5vcHRpb25zLmxheWVyc107XG4gICAgaWYgKCFsYXllcnM/Lmxlbmd0aCAmJiBpc01hc3RlckNoYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFpc01hc3RlckNoYWdlKSB7XG4gICAgICBsYXllcnMgPSBsYXllcnMuZmlsdGVyKChuKSA9PiBuLmlkICE9PSBjaGFuZ2UubGF5ZXIuaWQpO1xuICAgICAgbGF5ZXJzLnB1c2godGhpcy5sYXllcik7XG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnR5ID09PSBMaW5rZWRQcm9wZXJ0aWVzLkRJU1BMQVlFRCAmJiBpc01hc3RlckNoYWdlKSB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVEaXNwbGF5Q2hhbmdlKGNoYW5nZSwgbGF5ZXJzKTtcbiAgICB9XG5cbiAgICBoYW5kbGVMYXllclByb3BlcnR5Q2hhbmdlKGxheWVycywgY2hhbmdlLCB0aGlzLm1hcC52aWV3Q29udHJvbGxlcik7XG4gIH07XG5cbiAgcHJpdmF0ZSBoYW5kbGVEaXNwbGF5Q2hhbmdlKGNoYW5nZTogTGF5ZXJXYXRjaGVyQ2hhbmdlLCBjaGlsZHJlbjogTGF5ZXJbXSkge1xuICAgIGNvbnN0IGFmZmVjdGVkUHJvcGVydGllcyA9IFtcbiAgICAgIExpbmtlZFByb3BlcnRpZXMuRElTUExBWUVELFxuICAgICAgTGlua2VkUHJvcGVydGllcy5WSVNJQkxFXG4gICAgXTtcbiAgICB0aGlzLmRpc2FibGUoLi4uYWZmZWN0ZWRQcm9wZXJ0aWVzKTtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgaWYgKCFjaGlsZC5zaG93SW5MYXllckxpc3QpIHtcbiAgICAgICAgY2hpbGQudmlzaWJsZSA9ICEhY2hhbmdlLmV2ZW50LnZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZW5hYmxlKC4uLmFmZmVjdGVkUHJvcGVydGllcyk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRDaGlsZHJlbihcbiAgICBsYXllcnM6IEFueUxheWVyW10sXG4gICAgbGlua3M6IExheWVyc0xpbmtQcm9wZXJ0aWVzW11cbiAgKTogTGF5ZXJbXSB7XG4gICAgY29uc3QgbGF5ZXJzRmlsdGVyZWQgPSBsYXllcnMuZmlsdGVyKChuKSA9PiBpc0xheWVySXRlbShuKSkgYXMgTGF5ZXJbXTtcblxuICAgIHJldHVybiBsaW5rcy5yZWR1Y2UoKGxpbmtlZDogTGF5ZXJbXSwgbGluaykgPT4ge1xuICAgICAgY29uc3QgbGF5ZXJGcm9tTGluayA9IGxpbmsubGlua2VkSWRzXG4gICAgICAgIC5tYXAoKGlkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZpbmRMYXllckJ5TGlua0lkKGxheWVyc0ZpbHRlcmVkLCBpZCk7XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgIHJldHVybiBsaW5rZWQuY29uY2F0KGxheWVyRnJvbUxpbmspO1xuICAgIH0sIFtdKTtcbiAgfVxufVxuIl19
|