@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.
Files changed (308) hide show
  1. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +4 -6
  2. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +13 -10
  3. package/esm2022/lib/datasource/shared/capabilities.service.mjs +1 -1
  4. package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
  5. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +9 -1
  6. package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
  7. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +8 -1
  8. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  9. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +8 -1
  10. package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
  11. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +8 -1
  12. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  13. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +8 -1
  14. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
  15. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +8 -1
  16. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
  17. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +4 -1
  18. package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
  19. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
  20. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +8 -1
  21. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
  22. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
  23. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +8 -1
  24. package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
  25. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +8 -1
  26. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
  27. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  28. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +151 -102
  29. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +177 -83
  30. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +93 -44
  31. package/esm2022/lib/directions/directions-sources/directions-source.mjs +1 -1
  32. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +1 -1
  33. package/esm2022/lib/directions/directions.component.mjs +55 -31
  34. package/esm2022/lib/directions/shared/directions.enum.mjs +51 -7
  35. package/esm2022/lib/directions/shared/directions.interface.mjs +1 -1
  36. package/esm2022/lib/directions/shared/directions.service.mjs +122 -96
  37. package/esm2022/lib/directions/shared/directions.utils.mjs +281 -318
  38. package/esm2022/lib/directions/shared/store.mjs +2 -2
  39. package/esm2022/lib/download/download-button/download-button.component.mjs +8 -20
  40. package/esm2022/lib/download/shared/download.service.mjs +1 -1
  41. package/esm2022/lib/draw/draw/draw-popup.component.mjs +1 -1
  42. package/esm2022/lib/draw/draw/draw.component.mjs +5 -12
  43. package/esm2022/lib/draw/shared/draw.utils.mjs +1 -1
  44. package/esm2022/lib/environment/environment.interface.mjs +1 -1
  45. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +2 -2
  46. package/esm2022/lib/feature/shared/feature-store.utils.mjs +7 -6
  47. package/esm2022/lib/feature/shared/feature.interfaces.mjs +1 -1
  48. package/esm2022/lib/feature/shared/store.mjs +1 -1
  49. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +3 -3
  50. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +7 -4
  51. package/esm2022/lib/feature/shared/strategies/selection.mjs +5 -4
  52. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +3 -3
  53. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +2 -2
  54. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +5 -3
  55. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +1 -1
  56. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +8 -1
  57. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +1 -1
  58. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +2 -8
  59. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +2 -8
  60. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +2 -2
  61. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +13 -10
  62. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +2 -2
  63. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +4 -2
  64. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +5 -16
  65. package/esm2022/lib/import-export/export-button/export-button.component.mjs +4 -17
  66. package/esm2022/lib/import-export/import-export/import-export.component.mjs +23 -12
  67. package/esm2022/lib/import-export/shared/export.service.mjs +7 -4
  68. package/esm2022/lib/import-export/shared/import.utils.mjs +3 -3
  69. package/esm2022/lib/layer/index.mjs +10 -5
  70. package/esm2022/lib/layer/layer-group/index.mjs +2 -0
  71. package/esm2022/lib/layer/layer-group/layer-group.component.mjs +103 -0
  72. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +61 -128
  73. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +5 -8
  74. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +5 -6
  75. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +14 -21
  76. package/esm2022/lib/layer/layer-list/index.mjs +1 -3
  77. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +176 -775
  78. package/esm2022/lib/layer/layer-list-tool/index.mjs +1 -2
  79. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +51 -84
  80. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +7 -2
  81. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +56 -16
  82. package/esm2022/lib/layer/layer-search/index.mjs +2 -0
  83. package/esm2022/lib/layer/layer-search/layer-search.component.mjs +65 -0
  84. package/esm2022/lib/layer/layer-unavailable/index.mjs +3 -0
  85. package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +25 -0
  86. package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +35 -0
  87. package/esm2022/lib/layer/layer-viewer/index.mjs +3 -0
  88. package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +226 -0
  89. package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +2 -0
  90. package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +2 -0
  91. package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +207 -0
  92. package/esm2022/lib/layer/layer-visibility-button/index.mjs +2 -0
  93. package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +83 -0
  94. package/esm2022/lib/layer/layer.module.mjs +51 -33
  95. package/esm2022/lib/layer/shared/index.mjs +2 -1
  96. package/esm2022/lib/layer/shared/layer-controller.mjs +316 -0
  97. package/esm2022/lib/layer/shared/layer-selection.mjs +38 -0
  98. package/esm2022/lib/layer/shared/layer.service.mjs +56 -14
  99. package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
  100. package/esm2022/lib/layer/shared/layers/any-layer.mjs +1 -1
  101. package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
  102. package/esm2022/lib/layer/shared/layers/image-layer.mjs +8 -3
  103. package/esm2022/lib/layer/shared/layers/index.mjs +6 -1
  104. package/esm2022/lib/layer/shared/layers/layer-base.mjs +199 -0
  105. package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +2 -0
  106. package/esm2022/lib/layer/shared/layers/layer-group.mjs +120 -0
  107. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +1 -11
  108. package/esm2022/lib/layer/shared/layers/layer.mjs +113 -113
  109. package/esm2022/lib/layer/shared/layers/linked/index.mjs +4 -0
  110. package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +12 -0
  111. package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +242 -0
  112. package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +70 -0
  113. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +8 -3
  114. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +9 -3
  115. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +8 -3
  116. package/esm2022/lib/layer/utils/layer.utils.mjs +47 -1
  117. package/esm2022/lib/layer/utils/outputLegend.mjs +5 -1
  118. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +3 -3
  119. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +8 -6
  120. package/esm2022/lib/map/map-center/map-center.component.mjs +1 -2
  121. package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +1 -1
  122. package/esm2022/lib/map/shared/controllers/view.mjs +1 -1
  123. package/esm2022/lib/map/shared/hover-feature.directive.mjs +1 -9
  124. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +113 -123
  125. package/esm2022/lib/map/shared/map.abstract.mjs +4 -3
  126. package/esm2022/lib/map/shared/map.mjs +7 -243
  127. package/esm2022/lib/map/shared/map.service.mjs +1 -1
  128. package/esm2022/lib/map/shared/map.utils.mjs +3 -3
  129. package/esm2022/lib/map/shared/mapOffline.directive.mjs +9 -5
  130. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +1 -3
  131. package/esm2022/lib/map/utils/index.mjs +2 -0
  132. package/esm2022/lib/map/utils/layer-watcher.mjs +45 -13
  133. package/esm2022/lib/measure/measurer/measurer.component.mjs +7 -25
  134. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +6 -18
  135. package/esm2022/lib/offline/offline.provider.mjs +10 -11
  136. package/esm2022/lib/print/shared/print.service.mjs +3 -3
  137. package/esm2022/lib/query/shared/query.directive.mjs +9 -5
  138. package/esm2022/lib/query/shared/query.service.mjs +7 -7
  139. package/esm2022/lib/query/shared/query.utils.mjs +5 -1
  140. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +15 -9
  141. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +1 -10
  142. package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
  143. package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +1 -1
  144. package/esm2022/lib/search/shared/sources/workspace.mjs +1 -1
  145. package/esm2022/lib/workspace/shared/edition-workspace.mjs +6 -4
  146. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +19 -17
  147. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +17 -2
  148. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +22 -4
  149. package/esm2022/lib/workspace/shared/workspace.utils.mjs +6 -3
  150. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +2 -2
  151. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +6 -2
  152. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +4 -3
  153. package/fesm2022/igo2-geo.mjs +22502 -21440
  154. package/fesm2022/igo2-geo.mjs.map +1 -1
  155. package/lib/datasource/shared/capabilities.service.d.ts +7 -2
  156. package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +1 -0
  157. package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +1 -0
  158. package/lib/datasource/shared/datasources/carto-datasource.d.ts +1 -0
  159. package/lib/datasource/shared/datasources/carto-datasource.interface.d.ts +0 -2
  160. package/lib/datasource/shared/datasources/cluster-datasource.d.ts +1 -0
  161. package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +0 -1
  162. package/lib/datasource/shared/datasources/datasource.d.ts +1 -0
  163. package/lib/datasource/shared/datasources/datasource.interface.d.ts +1 -2
  164. package/lib/datasource/shared/datasources/feature-datasource.d.ts +1 -0
  165. package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +0 -3
  166. package/lib/datasource/shared/datasources/imagearcgisrest-datasource.d.ts +1 -0
  167. package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +0 -2
  168. package/lib/datasource/shared/datasources/mvt-datasource.d.ts +1 -0
  169. package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +0 -2
  170. package/lib/datasource/shared/datasources/osm-datasource.interface.d.ts +0 -2
  171. package/lib/datasource/shared/datasources/tilearcgisrest-datasource.d.ts +1 -0
  172. package/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.d.ts +0 -2
  173. package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +0 -2
  174. package/lib/datasource/shared/datasources/wfs-datasource.d.ts +1 -0
  175. package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +3 -4
  176. package/lib/datasource/shared/datasources/wms-datasource.d.ts +1 -0
  177. package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +6 -6
  178. package/lib/datasource/shared/datasources/wmts-datasource.interface.d.ts +0 -2
  179. package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +0 -2
  180. package/lib/directions/directions-buttons/directions-buttons.component.d.ts +57 -20
  181. package/lib/directions/directions-inputs/directions-inputs.component.d.ts +115 -13
  182. package/lib/directions/directions-results/directions-results.component.d.ts +50 -16
  183. package/lib/directions/directions-sources/directions-source.d.ts +2 -2
  184. package/lib/directions/directions-sources/osrm-directions-source.d.ts +2 -2
  185. package/lib/directions/directions.component.d.ts +5 -5
  186. package/lib/directions/shared/directions.enum.d.ts +42 -1
  187. package/lib/directions/shared/directions.interface.d.ts +50 -25
  188. package/lib/directions/shared/directions.service.d.ts +46 -8
  189. package/lib/directions/shared/directions.utils.d.ts +102 -23
  190. package/lib/directions/shared/store.d.ts +3 -3
  191. package/lib/download/download-button/download-button.component.d.ts +4 -8
  192. package/lib/download/shared/download.service.d.ts +1 -1
  193. package/lib/draw/draw/draw.component.d.ts +2 -2
  194. package/lib/draw/shared/draw.utils.d.ts +2 -1
  195. package/lib/environment/environment.interface.d.ts +2 -0
  196. package/lib/feature/shared/feature-store.utils.d.ts +1 -1
  197. package/lib/feature/shared/feature.interfaces.d.ts +1 -1
  198. package/lib/feature/shared/store.d.ts +1 -1
  199. package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +1 -1
  200. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +1 -1
  201. package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +1 -1
  202. package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +2 -2
  203. package/lib/filter/shared/filterable-datasource.pipe.d.ts +2 -2
  204. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +3 -3
  205. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +3 -5
  206. package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +3 -5
  207. package/lib/filter/time-filter-button/time-filter-button.component.d.ts +1 -1
  208. package/lib/filter/time-filter-form/time-filter-form.component.d.ts +5 -5
  209. package/lib/filter/time-filter-item/time-filter-item.component.d.ts +1 -1
  210. package/lib/filter/time-filter-list/time-filter-list.component.d.ts +2 -7
  211. package/lib/import-export/export-button/export-button.component.d.ts +3 -7
  212. package/lib/import-export/import-export/import-export.component.d.ts +1 -2
  213. package/lib/import-export/shared/export.service.d.ts +2 -2
  214. package/lib/layer/index.d.ts +9 -4
  215. package/lib/layer/layer-group/index.d.ts +1 -0
  216. package/lib/layer/layer-group/layer-group.component.d.ts +30 -0
  217. package/lib/layer/layer-item/layer-item.component.d.ts +19 -38
  218. package/lib/layer/layer-legend/layer-legend.component.d.ts +2 -5
  219. package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +6 -7
  220. package/lib/layer/layer-list/index.d.ts +0 -2
  221. package/lib/layer/layer-list/layer-list.component.d.ts +51 -123
  222. package/lib/layer/layer-list-tool/index.d.ts +0 -1
  223. package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +19 -26
  224. package/lib/layer/layer-list-tool/layer-list-tool.interface.d.ts +5 -1
  225. package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +9 -8
  226. package/lib/layer/layer-search/index.d.ts +1 -0
  227. package/lib/layer/layer-search/layer-search.component.d.ts +16 -0
  228. package/lib/layer/layer-unavailable/index.d.ts +2 -0
  229. package/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.d.ts +10 -0
  230. package/lib/layer/layer-unavailable/layer-unavailable.component.d.ts +11 -0
  231. package/lib/layer/layer-viewer/index.d.ts +2 -0
  232. package/lib/layer/layer-viewer/layer-viewer.component.d.ts +52 -0
  233. package/lib/layer/layer-viewer/layer-viewer.interface.d.ts +22 -0
  234. package/lib/layer/layer-viewer-bottom-actions/index.d.ts +1 -0
  235. package/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.d.ts +44 -0
  236. package/lib/layer/layer-visibility-button/index.d.ts +1 -0
  237. package/lib/layer/layer-visibility-button/layer-visibility-button.component.d.ts +22 -0
  238. package/lib/layer/layer.module.d.ts +18 -6
  239. package/lib/layer/shared/index.d.ts +1 -0
  240. package/lib/layer/shared/layer-controller.d.ts +81 -0
  241. package/lib/layer/shared/layer-selection.d.ts +14 -0
  242. package/lib/layer/shared/layer.service.d.ts +12 -3
  243. package/lib/layer/shared/layers/any-layer.d.ts +3 -6
  244. package/lib/layer/shared/layers/any-layer.interface.d.ts +8 -6
  245. package/lib/layer/shared/layers/image-layer.d.ts +5 -2
  246. package/lib/layer/shared/layers/image-layer.interface.d.ts +1 -4
  247. package/lib/layer/shared/layers/index.d.ts +5 -0
  248. package/lib/layer/shared/layers/layer-base.d.ts +75 -0
  249. package/lib/layer/shared/layers/layer-group.d.ts +32 -0
  250. package/lib/layer/shared/layers/layer-group.interface.d.ts +8 -0
  251. package/lib/layer/shared/layers/layer.d.ts +27 -44
  252. package/lib/layer/shared/layers/layer.interface.d.ts +23 -41
  253. package/lib/layer/shared/layers/linked/index.d.ts +3 -0
  254. package/lib/layer/shared/layers/linked/linked-layer.d.ts +35 -0
  255. package/lib/layer/shared/layers/linked/linked-layer.interface.d.ts +32 -0
  256. package/lib/layer/shared/layers/linked/linked-layer.utils.d.ts +9 -0
  257. package/lib/layer/shared/layers/tile-layer.d.ts +5 -2
  258. package/lib/layer/shared/layers/vector-layer.d.ts +7 -3
  259. package/lib/layer/shared/layers/vectortile-layer.d.ts +5 -2
  260. package/lib/layer/utils/layer.utils.d.ts +12 -2
  261. package/lib/layer/utils/outputLegend.d.ts +2 -2
  262. package/lib/map/shared/controllers/geolocation.interface.d.ts +2 -1
  263. package/lib/map/shared/hover-feature.directive.d.ts +0 -1
  264. package/lib/map/shared/linkedLayers.utils.d.ts +13 -17
  265. package/lib/map/shared/map.abstract.d.ts +12 -29
  266. package/lib/map/shared/map.d.ts +10 -85
  267. package/lib/map/shared/map.service.d.ts +1 -1
  268. package/lib/map/shared/map.utils.d.ts +5 -3
  269. package/lib/map/utils/index.d.ts +1 -0
  270. package/lib/map/utils/layer-watcher.d.ts +18 -8
  271. package/lib/measure/measurer/measurer.component.d.ts +0 -8
  272. package/lib/metadata/metadata-button/metadata-button.component.d.ts +3 -7
  273. package/lib/offline/offline.provider.d.ts +1 -1
  274. package/lib/query/shared/query.service.d.ts +1 -1
  275. package/lib/query/shared/query.utils.d.ts +2 -1
  276. package/lib/search/search-results/search-results-add-button.component.d.ts +1 -1
  277. package/lib/search/shared/search-pointer-summary.directive.d.ts +0 -1
  278. package/lib/search/shared/sources/cadastre.providers.d.ts +1 -1
  279. package/lib/search/shared/sources/coordinates.providers.d.ts +1 -1
  280. package/lib/search/shared/sources/icherche.providers.d.ts +1 -1
  281. package/lib/search/shared/sources/ilayer.interfaces.d.ts +1 -1
  282. package/lib/search/shared/sources/ilayer.providers.d.ts +1 -1
  283. package/lib/search/shared/sources/nominatim.providers.d.ts +1 -1
  284. package/lib/search/shared/sources/storedqueries.providers.d.ts +2 -2
  285. package/lib/search/shared/sources/workspace.interfaces.d.ts +1 -1
  286. package/lib/search/shared/sources/workspace.providers.d.ts +1 -1
  287. package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +1 -1
  288. package/locale/en.geo.json +106 -89
  289. package/locale/fr.geo.json +105 -89
  290. package/package.json +5 -5
  291. package/src/geo-theme.scss +1 -1
  292. package/src/lib/directions/directions-inputs/directions-inputs.theming.scss +21 -0
  293. package/src/lib/directions/directions.theming.scss +2 -0
  294. package/src/lib/layer/layer-group/layer-group.theme.scss +28 -0
  295. package/src/lib/layer/layer-item/layer-item.theme.scss +12 -9
  296. package/src/lib/layer/layer-legend/layer-legend.theme.scss +30 -0
  297. package/src/lib/layer/layer-list/layer-list.theme.scss +50 -0
  298. package/src/lib/layer/layer-unavailable/layer-unavailable.theme.scss +19 -0
  299. package/src/lib/layer/layer-viewer/_layer-viewer.theme.scss +16 -0
  300. package/src/lib/layer/layer-visibility-button/layer-visibility-button.theme.scss +27 -0
  301. package/src/lib/layer/layer.theming.scss +14 -3
  302. package/esm2022/lib/layer/layer-list/layer-list-binding.directive.mjs +0 -70
  303. package/esm2022/lib/layer/layer-list/layer-list.enum.mjs +0 -19
  304. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +0 -7
  305. package/lib/layer/layer-list/layer-list-binding.directive.d.ts +0 -19
  306. package/lib/layer/layer-list/layer-list.enum.d.ts +0 -15
  307. package/lib/layer/layer-list-tool/layer-list-tool.enum.d.ts +0 -5
  308. package/src/lib/layer/layer-legend/layer-legend.theming.scss +0 -10
@@ -1,84 +1,28 @@
1
- import { BehaviorSubject, combineLatest } from 'rxjs';
2
- import { map } from 'rxjs/operators';
3
- import { getResolutionFromScale } from '../../../map/shared/map.utils';
4
- export class Layer {
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
- collapsed;
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
- hasBeenVisible$$;
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 isInResolutionsRange() {
62
- return this.isInResolutionsRange$.value;
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
- this.ol.setVisible(value);
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 visible() {
92
- return this.visible$.value;
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
- visible$ = new BehaviorSubject(undefined);
95
- get displayed() {
96
- return this.visible && this.isInResolutionsRange;
45
+ set minResolution(value) {
46
+ super.minResolution = value;
47
+ this.updateInResolutionsRange();
97
48
  }
98
- displayed$ = combineLatest([
99
- this.isInResolutionsRange$,
100
- this.visible$
101
- ]).pipe(map((bunch) => bunch[0] && bunch[1]));
102
- get showInLayerList() {
103
- return this.options.showInLayerList !== false;
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
- setMap(map) {
137
- this.map = map;
96
+ remove() {
97
+ super.remove();
138
98
  this.unobserveResolution();
139
- if (map !== undefined) {
140
- this.observeResolution();
141
- this.hasBeenVisible$$ = this.hasBeenVisible$.subscribe(() => {
142
- if (this.options.messages && this.visible) {
143
- this.options.messages.map((message) => {
144
- this.showMessage(message);
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