@igo2/geo 18.0.1-next.2 → 18.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. package/esm2022/igo2-geo.mjs +5 -0
  2. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +234 -0
  3. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +272 -0
  4. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +246 -0
  5. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +19 -0
  6. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +136 -0
  7. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +60 -0
  8. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +232 -0
  9. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +24 -0
  10. package/esm2022/lib/catalog/catalog-library/index.mjs +4 -0
  11. package/esm2022/lib/catalog/catalog.module.mjs +26 -0
  12. package/esm2022/lib/catalog/index.mjs +6 -0
  13. package/esm2022/lib/catalog/shared/catalog.abstract.mjs +32 -0
  14. package/esm2022/lib/catalog/shared/catalog.enum.mjs +16 -0
  15. package/esm2022/lib/catalog/shared/catalog.interface.mjs +2 -0
  16. package/esm2022/lib/catalog/shared/catalog.service.mjs +706 -0
  17. package/esm2022/lib/catalog/shared/catalogs.mjs +75 -0
  18. package/esm2022/lib/catalog/shared/index.mjs +5 -0
  19. package/esm2022/lib/datasource/index.mjs +3 -0
  20. package/esm2022/lib/datasource/shared/capabilities.interface.mjs +17 -0
  21. package/esm2022/lib/datasource/shared/capabilities.service.mjs +441 -0
  22. package/esm2022/lib/datasource/shared/datasource.service.mjs +258 -0
  23. package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +2 -0
  24. package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +2 -0
  25. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +2 -0
  26. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +222 -0
  27. package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +2 -0
  28. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +118 -0
  29. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +2 -0
  30. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +24 -0
  31. package/esm2022/lib/datasource/shared/datasources/data.service.mjs +3 -0
  32. package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +2 -0
  33. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +42 -0
  34. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +2 -0
  35. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +52 -0
  36. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +2 -0
  37. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +70 -0
  38. package/esm2022/lib/datasource/shared/datasources/index.mjs +36 -0
  39. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +2 -0
  40. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +33 -0
  41. package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +2 -0
  42. package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +14 -0
  43. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +2 -0
  44. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +60 -0
  45. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +2 -0
  46. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +17 -0
  47. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +2 -0
  48. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +56 -0
  49. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +2 -0
  50. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +137 -0
  51. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +170 -0
  52. package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +2 -0
  53. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +227 -0
  54. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +224 -0
  55. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +2 -0
  56. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +18 -0
  57. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +2 -0
  58. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +11 -0
  59. package/esm2022/lib/datasource/shared/index.mjs +6 -0
  60. package/esm2022/lib/datasource/shared/options/index.mjs +5 -0
  61. package/esm2022/lib/datasource/shared/options/options-api.interface.mjs +2 -0
  62. package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +15 -0
  63. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +85 -0
  64. package/esm2022/lib/datasource/shared/options/options.service.mjs +3 -0
  65. package/esm2022/lib/datasource/utils/index.mjs +2 -0
  66. package/esm2022/lib/datasource/utils/tilegrid.mjs +20 -0
  67. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +246 -0
  68. package/esm2022/lib/directions/directions-buttons/index.mjs +2 -0
  69. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +312 -0
  70. package/esm2022/lib/directions/directions-inputs/index.mjs +2 -0
  71. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +192 -0
  72. package/esm2022/lib/directions/directions-results/index.mjs +2 -0
  73. package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +5 -0
  74. package/esm2022/lib/directions/directions-sources/directions-source.mjs +3 -0
  75. package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +23 -0
  76. package/esm2022/lib/directions/directions-sources/index.mjs +5 -0
  77. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +159 -0
  78. package/esm2022/lib/directions/directions.component.mjs +437 -0
  79. package/esm2022/lib/directions/directions.module.mjs +46 -0
  80. package/esm2022/lib/directions/directions.provider.mjs +16 -0
  81. package/esm2022/lib/directions/index.mjs +8 -0
  82. package/esm2022/lib/directions/shared/directions-source.service.mjs +18 -0
  83. package/esm2022/lib/directions/shared/directions.enum.mjs +72 -0
  84. package/esm2022/lib/directions/shared/directions.interface.mjs +2 -0
  85. package/esm2022/lib/directions/shared/directions.service.mjs +239 -0
  86. package/esm2022/lib/directions/shared/directions.utils.mjs +522 -0
  87. package/esm2022/lib/directions/shared/index.mjs +6 -0
  88. package/esm2022/lib/directions/shared/store.mjs +21 -0
  89. package/esm2022/lib/download/download-button/download-button.component.mjs +48 -0
  90. package/esm2022/lib/download/download-button/index.mjs +2 -0
  91. package/esm2022/lib/download/download.module.mjs +24 -0
  92. package/esm2022/lib/download/index.mjs +3 -0
  93. package/esm2022/lib/download/shared/download.interface.mjs +2 -0
  94. package/esm2022/lib/download/shared/download.service.mjs +67 -0
  95. package/esm2022/lib/download/shared/index.mjs +3 -0
  96. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +42 -0
  97. package/esm2022/lib/draw/draw/draw-popup.component.mjs +421 -0
  98. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +28 -0
  99. package/esm2022/lib/draw/draw/draw.component.mjs +1136 -0
  100. package/esm2022/lib/draw/draw/draw.module.mjs +19 -0
  101. package/esm2022/lib/draw/drawingTool.module.mjs +18 -0
  102. package/esm2022/lib/draw/index.mjs +3 -0
  103. package/esm2022/lib/draw/shared/draw-icon.service.mjs +30 -0
  104. package/esm2022/lib/draw/shared/draw.enum.mjs +21 -0
  105. package/esm2022/lib/draw/shared/draw.interface.mjs +2 -0
  106. package/esm2022/lib/draw/shared/draw.utils.mjs +125 -0
  107. package/esm2022/lib/draw/shared/index.mjs +5 -0
  108. package/esm2022/lib/environment/environment.interface.mjs +2 -0
  109. package/esm2022/lib/environment/index.mjs +2 -0
  110. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +306 -0
  111. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +56 -0
  112. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +26 -0
  113. package/esm2022/lib/feature/feature-details/index.mjs +4 -0
  114. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +101 -0
  115. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +19 -0
  116. package/esm2022/lib/feature/feature.module.mjs +26 -0
  117. package/esm2022/lib/feature/index.mjs +5 -0
  118. package/esm2022/lib/feature/shared/feature-store.utils.mjs +28 -0
  119. package/esm2022/lib/feature/shared/feature.enums.mjs +9 -0
  120. package/esm2022/lib/feature/shared/feature.interfaces.mjs +2 -0
  121. package/esm2022/lib/feature/shared/feature.utils.mjs +332 -0
  122. package/esm2022/lib/feature/shared/index.mjs +8 -0
  123. package/esm2022/lib/feature/shared/store.mjs +143 -0
  124. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +216 -0
  125. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +119 -0
  126. package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +99 -0
  127. package/esm2022/lib/feature/shared/strategies/index.mjs +8 -0
  128. package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +103 -0
  129. package/esm2022/lib/feature/shared/strategies/loading.mjs +136 -0
  130. package/esm2022/lib/feature/shared/strategies/search.mjs +158 -0
  131. package/esm2022/lib/feature/shared/strategies/selection.mjs +385 -0
  132. package/esm2022/lib/feature/shared/strategies.utils.mjs +37 -0
  133. package/esm2022/lib/filter/filter.module.mjs +131 -0
  134. package/esm2022/lib/filter/index.mjs +17 -0
  135. package/esm2022/lib/filter/ogc-filter-button/index.mjs +2 -0
  136. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +141 -0
  137. package/esm2022/lib/filter/ogc-filter-form/index.mjs +2 -0
  138. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +325 -0
  139. package/esm2022/lib/filter/ogc-filter-selection/index.mjs +2 -0
  140. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +787 -0
  141. package/esm2022/lib/filter/ogc-filter-time/index.mjs +3 -0
  142. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +201 -0
  143. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +665 -0
  144. package/esm2022/lib/filter/ogc-filterable-form/index.mjs +2 -0
  145. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +66 -0
  146. package/esm2022/lib/filter/ogc-filterable-item/index.mjs +2 -0
  147. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +244 -0
  148. package/esm2022/lib/filter/ogc-filterable-list/index.mjs +3 -0
  149. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +39 -0
  150. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +32 -0
  151. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +63 -0
  152. package/esm2022/lib/filter/shared/index.mjs +12 -0
  153. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +72 -0
  154. package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +30 -0
  155. package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +2 -0
  156. package/esm2022/lib/filter/shared/ogc-filter.mjs +756 -0
  157. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +47 -0
  158. package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +23 -0
  159. package/esm2022/lib/filter/shared/spatial-filter.interface.mjs +2 -0
  160. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +282 -0
  161. package/esm2022/lib/filter/shared/time-filter.enum.mjs +13 -0
  162. package/esm2022/lib/filter/shared/time-filter.interface.mjs +2 -0
  163. package/esm2022/lib/filter/shared/time-filter.service.mjs +107 -0
  164. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/index.mjs +2 -0
  165. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +875 -0
  166. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/index.mjs +2 -0
  167. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +191 -0
  168. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/index.mjs +2 -0
  169. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +120 -0
  170. package/esm2022/lib/filter/time-filter-button/index.mjs +2 -0
  171. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +70 -0
  172. package/esm2022/lib/filter/time-filter-form/index.mjs +2 -0
  173. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +537 -0
  174. package/esm2022/lib/filter/time-filter-item/index.mjs +2 -0
  175. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +90 -0
  176. package/esm2022/lib/filter/time-filter-list/index.mjs +3 -0
  177. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +39 -0
  178. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +24 -0
  179. package/esm2022/lib/geo.module.mjs +63 -0
  180. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +559 -0
  181. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +170 -0
  182. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +24 -0
  183. package/esm2022/lib/geometry/geometry-form-field/index.mjs +4 -0
  184. package/esm2022/lib/geometry/geometry.module.mjs +18 -0
  185. package/esm2022/lib/geometry/index.mjs +3 -0
  186. package/esm2022/lib/geometry/shared/controls/draw.mjs +340 -0
  187. package/esm2022/lib/geometry/shared/controls/index.mjs +4 -0
  188. package/esm2022/lib/geometry/shared/controls/modify.mjs +538 -0
  189. package/esm2022/lib/geometry/shared/controls/slice.mjs +190 -0
  190. package/esm2022/lib/geometry/shared/geometry.errors.mjs +24 -0
  191. package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +2 -0
  192. package/esm2022/lib/geometry/shared/geometry.utils.mjs +113 -0
  193. package/esm2022/lib/geometry/shared/index.mjs +5 -0
  194. package/esm2022/lib/import-export/export-button/export-button.component.mjs +49 -0
  195. package/esm2022/lib/import-export/export-button/index.mjs +2 -0
  196. package/esm2022/lib/import-export/import-export/import-export.component.mjs +876 -0
  197. package/esm2022/lib/import-export/import-export/index.mjs +2 -0
  198. package/esm2022/lib/import-export/import-export.module.mjs +31 -0
  199. package/esm2022/lib/import-export/index.mjs +5 -0
  200. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +114 -0
  201. package/esm2022/lib/import-export/shared/export.errors.mjs +15 -0
  202. package/esm2022/lib/import-export/shared/export.interface.mjs +2 -0
  203. package/esm2022/lib/import-export/shared/export.service.mjs +378 -0
  204. package/esm2022/lib/import-export/shared/export.type.mjs +13 -0
  205. package/esm2022/lib/import-export/shared/export.utils.mjs +51 -0
  206. package/esm2022/lib/import-export/shared/import.errors.mjs +39 -0
  207. package/esm2022/lib/import-export/shared/import.interface.mjs +2 -0
  208. package/esm2022/lib/import-export/shared/import.service.mjs +221 -0
  209. package/esm2022/lib/import-export/shared/import.utils.mjs +203 -0
  210. package/esm2022/lib/import-export/shared/index.mjs +11 -0
  211. package/esm2022/lib/layer/index.mjs +16 -0
  212. package/esm2022/lib/layer/layer-group/index.mjs +2 -0
  213. package/esm2022/lib/layer/layer-group/layer-group.component.mjs +103 -0
  214. package/esm2022/lib/layer/layer-item/index.mjs +2 -0
  215. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +196 -0
  216. package/esm2022/lib/layer/layer-legend/index.mjs +2 -0
  217. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +287 -0
  218. package/esm2022/lib/layer/layer-legend-item/index.mjs +2 -0
  219. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +85 -0
  220. package/esm2022/lib/layer/layer-legend-list/index.mjs +3 -0
  221. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +54 -0
  222. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +104 -0
  223. package/esm2022/lib/layer/layer-list/index.mjs +2 -0
  224. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +232 -0
  225. package/esm2022/lib/layer/layer-list-tool/index.mjs +4 -0
  226. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +92 -0
  227. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +7 -0
  228. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +61 -0
  229. package/esm2022/lib/layer/layer-search/index.mjs +2 -0
  230. package/esm2022/lib/layer/layer-search/layer-search.component.mjs +65 -0
  231. package/esm2022/lib/layer/layer-unavailable/index.mjs +3 -0
  232. package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +26 -0
  233. package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +35 -0
  234. package/esm2022/lib/layer/layer-viewer/index.mjs +3 -0
  235. package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +226 -0
  236. package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +2 -0
  237. package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +2 -0
  238. package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +207 -0
  239. package/esm2022/lib/layer/layer-visibility-button/index.mjs +2 -0
  240. package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +83 -0
  241. package/esm2022/lib/layer/layer.module.mjs +107 -0
  242. package/esm2022/lib/layer/shared/clusterParam.mjs +2 -0
  243. package/esm2022/lib/layer/shared/index.mjs +6 -0
  244. package/esm2022/lib/layer/shared/layer-controller.mjs +316 -0
  245. package/esm2022/lib/layer/shared/layer-selection.mjs +38 -0
  246. package/esm2022/lib/layer/shared/layer.enums.mjs +2 -0
  247. package/esm2022/lib/layer/shared/layer.service.mjs +315 -0
  248. package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +2 -0
  249. package/esm2022/lib/layer/shared/layers/any-layer.mjs +2 -0
  250. package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +2 -0
  251. package/esm2022/lib/layer/shared/layers/image-layer.mjs +75 -0
  252. package/esm2022/lib/layer/shared/layers/index.mjs +18 -0
  253. package/esm2022/lib/layer/shared/layers/layer-base.mjs +199 -0
  254. package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +2 -0
  255. package/esm2022/lib/layer/shared/layers/layer-group.mjs +120 -0
  256. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +7 -0
  257. package/esm2022/lib/layer/shared/layers/layer.mjs +178 -0
  258. package/esm2022/lib/layer/shared/layers/legend.interface.mjs +2 -0
  259. package/esm2022/lib/layer/shared/layers/linked/index.mjs +4 -0
  260. package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +12 -0
  261. package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +242 -0
  262. package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +70 -0
  263. package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +2 -0
  264. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +55 -0
  265. package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +2 -0
  266. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +576 -0
  267. package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +2 -0
  268. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +112 -0
  269. package/esm2022/lib/layer/track-feature-button/index.mjs +2 -0
  270. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +54 -0
  271. package/esm2022/lib/layer/utils/image-watcher.mjs +62 -0
  272. package/esm2022/lib/layer/utils/index.mjs +6 -0
  273. package/esm2022/lib/layer/utils/layer.utils.mjs +57 -0
  274. package/esm2022/lib/layer/utils/outputLegend.mjs +32 -0
  275. package/esm2022/lib/layer/utils/tile-watcher.mjs +52 -0
  276. package/esm2022/lib/layer/utils/vector-watcher.mjs +50 -0
  277. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +20 -0
  278. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +87 -0
  279. package/esm2022/lib/map/baselayers-switcher/index.mjs +3 -0
  280. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +122 -0
  281. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +78 -0
  282. package/esm2022/lib/map/geolocate-button/index.mjs +2 -0
  283. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +73 -0
  284. package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +2 -0
  285. package/esm2022/lib/map/home-extent-button/index.mjs +3 -0
  286. package/esm2022/lib/map/index.mjs +14 -0
  287. package/esm2022/lib/map/info-section/index.mjs +2 -0
  288. package/esm2022/lib/map/info-section/info-section.component.mjs +15 -0
  289. package/esm2022/lib/map/map-browser/index.mjs +2 -0
  290. package/esm2022/lib/map/map-browser/map-browser.component.mjs +67 -0
  291. package/esm2022/lib/map/map-center/index.mjs +2 -0
  292. package/esm2022/lib/map/map-center/map-center.component.mjs +56 -0
  293. package/esm2022/lib/map/map.module.mjs +89 -0
  294. package/esm2022/lib/map/menu-button/index.mjs +2 -0
  295. package/esm2022/lib/map/menu-button/menu-button.component.mjs +57 -0
  296. package/esm2022/lib/map/offline-button/index.mjs +2 -0
  297. package/esm2022/lib/map/offline-button/offline-button.component.mjs +53 -0
  298. package/esm2022/lib/map/rotation-button/index.mjs +2 -0
  299. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +58 -0
  300. package/esm2022/lib/map/shared/controllers/controller.mjs +44 -0
  301. package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +8 -0
  302. package/esm2022/lib/map/shared/controllers/geolocation.mjs +431 -0
  303. package/esm2022/lib/map/shared/controllers/index.mjs +5 -0
  304. package/esm2022/lib/map/shared/controllers/view.mjs +361 -0
  305. package/esm2022/lib/map/shared/hover-feature.directive.mjs +481 -0
  306. package/esm2022/lib/map/shared/index.mjs +15 -0
  307. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +238 -0
  308. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +122 -0
  309. package/esm2022/lib/map/shared/map.abstract.mjs +24 -0
  310. package/esm2022/lib/map/shared/map.enums.mjs +6 -0
  311. package/esm2022/lib/map/shared/map.interface.mjs +2 -0
  312. package/esm2022/lib/map/shared/map.mjs +201 -0
  313. package/esm2022/lib/map/shared/map.service.mjs +29 -0
  314. package/esm2022/lib/map/shared/map.utils.mjs +455 -0
  315. package/esm2022/lib/map/shared/mapOffline.directive.mjs +114 -0
  316. package/esm2022/lib/map/shared/projection.interfaces.mjs +2 -0
  317. package/esm2022/lib/map/shared/projection.service.mjs +67 -0
  318. package/esm2022/lib/map/shared/projection.utils.mjs +122 -0
  319. package/esm2022/lib/map/swipe-control/index.mjs +2 -0
  320. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +211 -0
  321. package/esm2022/lib/map/utils/index.mjs +2 -0
  322. package/esm2022/lib/map/utils/layer-watcher.mjs +112 -0
  323. package/esm2022/lib/map/wake-lock-button/index.mjs +2 -0
  324. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +103 -0
  325. package/esm2022/lib/map/zoom-button/index.mjs +2 -0
  326. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +35 -0
  327. package/esm2022/lib/measure/index.mjs +3 -0
  328. package/esm2022/lib/measure/measure.module.mjs +20 -0
  329. package/esm2022/lib/measure/measurer/index.mjs +6 -0
  330. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +40 -0
  331. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +38 -0
  332. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +143 -0
  333. package/esm2022/lib/measure/measurer/measurer.component.mjs +948 -0
  334. package/esm2022/lib/measure/measurer/measurer.module.mjs +20 -0
  335. package/esm2022/lib/measure/shared/index.mjs +4 -0
  336. package/esm2022/lib/measure/shared/measure.enum.mjs +37 -0
  337. package/esm2022/lib/measure/shared/measure.interfaces.mjs +2 -0
  338. package/esm2022/lib/measure/shared/measure.utils.mjs +497 -0
  339. package/esm2022/lib/metadata/index.mjs +4 -0
  340. package/esm2022/lib/metadata/metadata-button/index.mjs +2 -0
  341. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +96 -0
  342. package/esm2022/lib/metadata/metadata.module.mjs +29 -0
  343. package/esm2022/lib/metadata/shared/index.mjs +3 -0
  344. package/esm2022/lib/metadata/shared/metadata.interface.mjs +2 -0
  345. package/esm2022/lib/metadata/shared/metadata.service.mjs +18 -0
  346. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +130 -0
  347. package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +6 -0
  348. package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +2 -0
  349. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +172 -0
  350. package/esm2022/lib/offline/geoDB/index.mjs +5 -0
  351. package/esm2022/lib/offline/index.mjs +6 -0
  352. package/esm2022/lib/offline/layerDB/index.mjs +3 -0
  353. package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +2 -0
  354. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +83 -0
  355. package/esm2022/lib/offline/offline.interface.mjs +2 -0
  356. package/esm2022/lib/offline/offline.provider.mjs +50 -0
  357. package/esm2022/lib/offline/shared/geo-network.service.mjs +79 -0
  358. package/esm2022/lib/offline/shared/index.mjs +2 -0
  359. package/esm2022/lib/overlay/index.mjs +2 -0
  360. package/esm2022/lib/overlay/shared/index.mjs +4 -0
  361. package/esm2022/lib/overlay/shared/overlay.enum.mjs +8 -0
  362. package/esm2022/lib/overlay/shared/overlay.mjs +139 -0
  363. package/esm2022/lib/overlay/shared/overlay.utils.mjs +17 -0
  364. package/esm2022/lib/print/index.mjs +4 -0
  365. package/esm2022/lib/print/print/print.component.mjs +116 -0
  366. package/esm2022/lib/print/print-form/index.mjs +2 -0
  367. package/esm2022/lib/print/print-form/print-form.component.mjs +320 -0
  368. package/esm2022/lib/print/print.module.mjs +20 -0
  369. package/esm2022/lib/print/shared/geopdf.mjs +68 -0
  370. package/esm2022/lib/print/shared/index.mjs +5 -0
  371. package/esm2022/lib/print/shared/print.interface.mjs +2 -0
  372. package/esm2022/lib/print/shared/print.service.mjs +1136 -0
  373. package/esm2022/lib/print/shared/print.type.mjs +30 -0
  374. package/esm2022/lib/query/index.mjs +2 -0
  375. package/esm2022/lib/query/query.module.mjs +27 -0
  376. package/esm2022/lib/query/shared/index.mjs +8 -0
  377. package/esm2022/lib/query/shared/query-search-source.mjs +35 -0
  378. package/esm2022/lib/query/shared/query-search-source.providers.mjs +22 -0
  379. package/esm2022/lib/query/shared/query.directive.mjs +290 -0
  380. package/esm2022/lib/query/shared/query.enums.mjs +32 -0
  381. package/esm2022/lib/query/shared/query.interfaces.mjs +2 -0
  382. package/esm2022/lib/query/shared/query.service.mjs +753 -0
  383. package/esm2022/lib/query/shared/query.utils.mjs +45 -0
  384. package/esm2022/lib/search/index.mjs +10 -0
  385. package/esm2022/lib/search/search-bar/search-bar.component.mjs +483 -0
  386. package/esm2022/lib/search/search-bar/search-bar.module.mjs +19 -0
  387. package/esm2022/lib/search/search-results/index.mjs +5 -0
  388. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +101 -0
  389. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +433 -0
  390. package/esm2022/lib/search/search-results/search-results-item.component.mjs +119 -0
  391. package/esm2022/lib/search/search-results/search-results.component.mjs +297 -0
  392. package/esm2022/lib/search/search-results/search-results.directive.mjs +7 -0
  393. package/esm2022/lib/search/search-results/search-results.module.mjs +20 -0
  394. package/esm2022/lib/search/search-selector/search-selector.component.mjs +118 -0
  395. package/esm2022/lib/search/search-selector/search-selector.module.mjs +19 -0
  396. package/esm2022/lib/search/search-settings/search-settings.component.mjs +264 -0
  397. package/esm2022/lib/search/search-settings/search-settings.module.mjs +19 -0
  398. package/esm2022/lib/search/search.module.mjs +77 -0
  399. package/esm2022/lib/search/shared/index.mjs +10 -0
  400. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +328 -0
  401. package/esm2022/lib/search/shared/search-source-service.providers.mjs +20 -0
  402. package/esm2022/lib/search/shared/search-source.service.mjs +56 -0
  403. package/esm2022/lib/search/shared/search.enums.mjs +4 -0
  404. package/esm2022/lib/search/shared/search.interfaces.mjs +2 -0
  405. package/esm2022/lib/search/shared/search.provider.mjs +20 -0
  406. package/esm2022/lib/search/shared/search.service.mjs +149 -0
  407. package/esm2022/lib/search/shared/search.utils.mjs +92 -0
  408. package/esm2022/lib/search/shared/sources/cadastre.mjs +142 -0
  409. package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +32 -0
  410. package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +2 -0
  411. package/esm2022/lib/search/shared/sources/coordinates.mjs +168 -0
  412. package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +52 -0
  413. package/esm2022/lib/search/shared/sources/icherche-icons.mjs +32 -0
  414. package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +2 -0
  415. package/esm2022/lib/search/shared/sources/icherche.mjs +816 -0
  416. package/esm2022/lib/search/shared/sources/icherche.providers.mjs +87 -0
  417. package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +2 -0
  418. package/esm2022/lib/search/shared/sources/ilayer.mjs +339 -0
  419. package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +58 -0
  420. package/esm2022/lib/search/shared/sources/index.mjs +23 -0
  421. package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +2 -0
  422. package/esm2022/lib/search/shared/sources/nominatim.mjs +263 -0
  423. package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +31 -0
  424. package/esm2022/lib/search/shared/sources/source.interfaces.mjs +13 -0
  425. package/esm2022/lib/search/shared/sources/source.mjs +221 -0
  426. package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +2 -0
  427. package/esm2022/lib/search/shared/sources/storedqueries.mjs +454 -0
  428. package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +56 -0
  429. package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +2 -0
  430. package/esm2022/lib/search/shared/sources/workspace.mjs +192 -0
  431. package/esm2022/lib/search/shared/sources/workspace.providers.mjs +31 -0
  432. package/esm2022/lib/style/index.mjs +5 -0
  433. package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +360 -0
  434. package/esm2022/lib/style/shared/datasource/index.mjs +2 -0
  435. package/esm2022/lib/style/shared/feature/feature-style.mjs +162 -0
  436. package/esm2022/lib/style/shared/feature/index.mjs +2 -0
  437. package/esm2022/lib/style/shared/font.enum.mjs +17 -0
  438. package/esm2022/lib/style/shared/index.mjs +5 -0
  439. package/esm2022/lib/style/shared/overlay/index.mjs +3 -0
  440. package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +39 -0
  441. package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +88 -0
  442. package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +78 -0
  443. package/esm2022/lib/style/shared/vector/conversion.utils.mjs +27 -0
  444. package/esm2022/lib/style/shared/vector/index.mjs +4 -0
  445. package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +2 -0
  446. package/esm2022/lib/style/style-list/index.mjs +5 -0
  447. package/esm2022/lib/style/style-list/style-list.interface.mjs +2 -0
  448. package/esm2022/lib/style/style-list/style-list.module.mjs +23 -0
  449. package/esm2022/lib/style/style-list/style-list.provider.mjs +21 -0
  450. package/esm2022/lib/style/style-list/style-list.service.mjs +52 -0
  451. package/esm2022/lib/style/style-modal/drawing/index.mjs +2 -0
  452. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +193 -0
  453. package/esm2022/lib/style/style-modal/index.mjs +5 -0
  454. package/esm2022/lib/style/style-modal/layer/index.mjs +2 -0
  455. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +142 -0
  456. package/esm2022/lib/style/style-modal/layer-button/index.mjs +2 -0
  457. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +44 -0
  458. package/esm2022/lib/style/style-modal/shared/index.mjs +2 -0
  459. package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +2 -0
  460. package/esm2022/lib/style/style-service/draw-style.service.mjs +255 -0
  461. package/esm2022/lib/style/style-service/index.mjs +3 -0
  462. package/esm2022/lib/style/style-service/style.service.mjs +393 -0
  463. package/esm2022/lib/style/style.module.mjs +46 -0
  464. package/esm2022/lib/toast/index.mjs +2 -0
  465. package/esm2022/lib/toast/toast.component.mjs +99 -0
  466. package/esm2022/lib/toast/toast.module.mjs +24 -0
  467. package/esm2022/lib/utils/googleLinks.mjs +13 -0
  468. package/esm2022/lib/utils/id-generator.mjs +112 -0
  469. package/esm2022/lib/utils/index.mjs +5 -0
  470. package/esm2022/lib/utils/osmLinks.mjs +9 -0
  471. package/esm2022/lib/utils/propertyTypeDetector/index.mjs +3 -0
  472. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +2 -0
  473. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +64 -0
  474. package/esm2022/lib/wkt/index.mjs +2 -0
  475. package/esm2022/lib/wkt/shared/index.mjs +2 -0
  476. package/esm2022/lib/wkt/shared/wkt.service.mjs +235 -0
  477. package/esm2022/lib/wkt/wkt.module.mjs +25 -0
  478. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +36 -0
  479. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +19 -0
  480. package/esm2022/lib/workspace/confirmation-popup/index.mjs +3 -0
  481. package/esm2022/lib/workspace/index.mjs +8 -0
  482. package/esm2022/lib/workspace/shared/edition-workspace.mjs +301 -0
  483. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +720 -0
  484. package/esm2022/lib/workspace/shared/feature-workspace.mjs +41 -0
  485. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +113 -0
  486. package/esm2022/lib/workspace/shared/index.mjs +8 -0
  487. package/esm2022/lib/workspace/shared/wfs-workspace.mjs +41 -0
  488. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +121 -0
  489. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +248 -0
  490. package/esm2022/lib/workspace/shared/workspace.utils.mjs +188 -0
  491. package/esm2022/lib/workspace/widgets/index.mjs +4 -0
  492. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +48 -0
  493. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +19 -0
  494. package/esm2022/lib/workspace/widgets/widgets.mjs +15 -0
  495. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +172 -0
  496. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +19 -0
  497. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +137 -0
  498. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +19 -0
  499. package/esm2022/lib/workspace/workspace.module.mjs +32 -0
  500. package/esm2022/public_api.mjs +56 -0
  501. package/fesm2022/igo2-geo.mjs +717 -691
  502. package/fesm2022/igo2-geo.mjs.map +1 -1
  503. package/lib/datasource/shared/datasources/datasource.d.ts +2 -2
  504. package/lib/directions/shared/directions.service.d.ts +0 -1
  505. package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
  506. package/lib/offline/layerDB/layerDB.service.d.ts +1 -1
  507. package/lib/style/style-list/style-list.provider.d.ts +8 -1
  508. package/lib/style/style-list/style-list.service.d.ts +1 -1
  509. package/package.json +16 -14
  510. package/src/lib/layer/layer-list/layer-list.theme.scss +1 -2
  511. package/src/lib/map/menu-button/menu-button.theming.scss +3 -3
  512. package/src/style/style.scss +1 -1
@@ -0,0 +1,287 @@
1
+ import { AsyncPipe, NgClass, NgFor, NgIf, NgStyle } from '@angular/common';
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewChildren } from '@angular/core';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { MatOptionModule } from '@angular/material/core';
6
+ import { MatFormFieldModule } from '@angular/material/form-field';
7
+ import { MatIconModule } from '@angular/material/icon';
8
+ import { MatListModule } from '@angular/material/list';
9
+ import { MatSelectModule } from '@angular/material/select';
10
+ import { MatTooltipModule } from '@angular/material/tooltip';
11
+ import { CollapseDirective } from '@igo2/common/collapsible';
12
+ import { SanitizeHtmlPipe } from '@igo2/common/custom-html';
13
+ import { ImageErrorDirective, SecureImagePipe } from '@igo2/common/image';
14
+ import { ConfigService } from '@igo2/core/config';
15
+ import { LanguageService } from '@igo2/core/language';
16
+ import { IgoLanguageModule } from '@igo2/core/language';
17
+ import { BehaviorSubject, of } from 'rxjs';
18
+ import { catchError, map } from 'rxjs/operators';
19
+ import { CapabilitiesService } from '../../datasource/shared/capabilities.service';
20
+ import { WMSDataSource } from '../../datasource/shared/datasources';
21
+ import { Layer } from '../shared/layers';
22
+ import * as i0 from "@angular/core";
23
+ import * as i1 from "../../datasource/shared/capabilities.service";
24
+ import * as i2 from "@igo2/core/language";
25
+ import * as i3 from "@igo2/core/config";
26
+ import * as i4 from "@angular/common/http";
27
+ import * as i5 from "@angular/material/list";
28
+ import * as i6 from "@angular/material/icon";
29
+ import * as i7 from "@angular/material/form-field";
30
+ import * as i8 from "@angular/material/select";
31
+ import * as i9 from "@angular/material/core";
32
+ import * as i10 from "@angular/material/tooltip";
33
+ import * as i11 from "@angular/forms";
34
+ import * as i12 from "@ngx-translate/core";
35
+ export class LayerLegendComponent {
36
+ capabilitiesService;
37
+ languageService;
38
+ configService;
39
+ http;
40
+ cdRef;
41
+ updateLegendOnResolutionChange = false;
42
+ /**
43
+ * Observable of the legend items
44
+ */
45
+ legendItems$ = new BehaviorSubject([]);
46
+ /**
47
+ * Subscription to the map's resolution
48
+ */
49
+ state$$;
50
+ /**
51
+ * The available styles
52
+ */
53
+ styles;
54
+ /**
55
+ * The style used to make the legend
56
+ */
57
+ currentStyle;
58
+ /**
59
+ * The scale used to make the legend
60
+ */
61
+ scale = undefined;
62
+ /**
63
+ * The extent used to make the legend
64
+ */
65
+ view = undefined;
66
+ /**
67
+ * Get list of images display
68
+ */
69
+ renderedLegends;
70
+ /**
71
+ * List of size of images displayed
72
+ */
73
+ imagesHeight = {};
74
+ layer;
75
+ /**
76
+ * if getLegendGraphic is authorized
77
+ */
78
+ getLegend = true;
79
+ /**
80
+ * activeLegend
81
+ */
82
+ constructor(capabilitiesService, languageService, configService, http, cdRef) {
83
+ this.capabilitiesService = capabilitiesService;
84
+ this.languageService = languageService;
85
+ this.configService = configService;
86
+ this.http = http;
87
+ this.cdRef = cdRef;
88
+ }
89
+ /**
90
+ * On init, subscribe to the map's resolution and update the legend accordingly
91
+ */
92
+ ngOnInit() {
93
+ let lastlLegend = this.layer.legend;
94
+ this.styles = this.listStyles();
95
+ const sourceOptions = this.layer.options.source.options;
96
+ if (sourceOptions && sourceOptions.params && sourceOptions.params.STYLES) {
97
+ // if a styles is provided into the layers wms params
98
+ this.currentStyle = this.styles.find((style) => style.name === sourceOptions.params.STYLES).name;
99
+ }
100
+ else if (!lastlLegend) {
101
+ // if no legend is manually provided
102
+ if (this.styles && this.styles.length > 1) {
103
+ this.currentStyle = this.styles[0].name;
104
+ }
105
+ }
106
+ else if (this.styles && this.styles.length > 1) {
107
+ this.currentStyle = lastlLegend[0].currentStyle;
108
+ }
109
+ if (typeof this.layer.options.legendOptions !== 'undefined' &&
110
+ this.layer.options.legendOptions.display === false) {
111
+ lastlLegend = [];
112
+ }
113
+ else {
114
+ lastlLegend = this.layer.dataSource.getLegend(this.currentStyle, this.view);
115
+ }
116
+ if (this.updateLegendOnResolutionChange ||
117
+ sourceOptions.contentDependentLegend) {
118
+ const state$ = this.layer.map.viewController.state$;
119
+ this.state$$ = state$.subscribe(() => this.onViewControllerStateChange());
120
+ }
121
+ else if (lastlLegend && lastlLegend.length !== 0) {
122
+ this.legendItems$.next(lastlLegend);
123
+ for (const legend of lastlLegend) {
124
+ this.getLegendGraphic(legend);
125
+ }
126
+ }
127
+ }
128
+ /**
129
+ * On destroy, unsubscribe to the map's view state
130
+ */
131
+ ngOnDestroy() {
132
+ if (this.state$$ !== undefined) {
133
+ this.state$$.unsubscribe();
134
+ }
135
+ }
136
+ getLegendGraphic(item) {
137
+ if (item.url) {
138
+ const secureIMG = new SecureImagePipe(this.http, this.configService);
139
+ secureIMG
140
+ .transform(item.url)
141
+ .pipe(catchError((err) => {
142
+ if (err.error) {
143
+ err.error.caught = true;
144
+ this.getLegend = false;
145
+ this.cdRef.detectChanges();
146
+ return err;
147
+ }
148
+ }))
149
+ .subscribe((obsLegGraph) => {
150
+ const idx = this.legendItems$.value.findIndex((leg) => leg.title === item.title);
151
+ const legendGraph = obsLegGraph;
152
+ this.legendItems$.value[idx].imgGraphValue = legendGraph;
153
+ this.cdRef.detectChanges();
154
+ });
155
+ }
156
+ }
157
+ toggleLegendItem(collapsed, item) {
158
+ item.collapsed = collapsed;
159
+ }
160
+ transfertToggleLegendItem(newLegends) {
161
+ const outLegends = newLegends;
162
+ const lastLegends = this.layer.legend;
163
+ for (let i = 0; i < lastLegends.length; i++) {
164
+ outLegends[i].collapsed = lastLegends[i].collapsed;
165
+ }
166
+ return outLegends;
167
+ }
168
+ computeItemTitle(layerLegend) {
169
+ const layerOptions = this.layer.dataSource.options;
170
+ if (layerOptions.type !== 'wms') {
171
+ return of(layerLegend.title);
172
+ }
173
+ const layers = layerOptions.params.LAYERS.split(',');
174
+ const localLayerOptions = JSON.parse(JSON.stringify(layerOptions)); // to avoid to alter the original options.
175
+ localLayerOptions.params.LAYERS = layers.find((layer) => layer === layerLegend.title);
176
+ return this.capabilitiesService.getWMSOptions(localLayerOptions).pipe(map((wmsDataSourceOptions) => {
177
+ return wmsDataSourceOptions._layerOptionsFromSource.title;
178
+ }));
179
+ }
180
+ /**
181
+ * On resolution change, compute the effective scale level and update the
182
+ * legend accordingly.
183
+ * @param resolution Map resolution
184
+ */
185
+ onViewControllerStateChange() {
186
+ this.view = {
187
+ resolution: this.layer.map.viewController.getResolution(),
188
+ extent: this.layer.map.viewController.getExtent(),
189
+ projection: this.layer.map.viewController.getOlProjection().getCode(),
190
+ scale: this.layer.map.viewController.getScale(),
191
+ size: this.layer.map.ol.getSize()
192
+ };
193
+ this.updateLegend();
194
+ }
195
+ /**
196
+ * Update the legend with scale level and style define
197
+ */
198
+ updateLegend() {
199
+ let legendItems = this.layer.dataSource.getLegend(this.currentStyle, this.view);
200
+ if (this.layer.legend && this.layer.legend.length > 1) {
201
+ legendItems = this.transfertToggleLegendItem(legendItems);
202
+ }
203
+ this.layer.legend = legendItems;
204
+ if (legendItems.length === 0 && this.legendItems$.value.length === 0) {
205
+ return;
206
+ }
207
+ this.legendItems$.next(legendItems);
208
+ for (const legend of this.legendItems$.value) {
209
+ this.getLegendGraphic(legend);
210
+ }
211
+ }
212
+ listStyles() {
213
+ const layerOptions = this.layer.options;
214
+ if (layerOptions && layerOptions.legendOptions) {
215
+ const translate = this.languageService.translate;
216
+ const title = translate.instant('igo.geo.layer.legend.default');
217
+ let stylesAvailable = [{ name: '', title }];
218
+ if (layerOptions.legendOptions.stylesAvailable) {
219
+ stylesAvailable = stylesAvailable.concat(layerOptions.legendOptions.stylesAvailable.filter((sA) => sA.name.normalize('NFD').replace(/[\u0300-\u036f]/gi, '') !==
220
+ 'default' &&
221
+ sA.name.normalize('NFD').replace(/[\u0300-\u036f]/gi, '') !==
222
+ 'defaut'));
223
+ }
224
+ stylesAvailable
225
+ .filter((sa) => !sa.title)
226
+ .map((sa) => (sa.title = sa.name));
227
+ stylesAvailable.map((s) => (s.title =
228
+ s.title.charAt(0).toUpperCase() +
229
+ s.title.slice(1).replace(/_/g, ' ')));
230
+ return stylesAvailable;
231
+ }
232
+ return;
233
+ }
234
+ onChangeStyle() {
235
+ this.updateLegend();
236
+ let STYLES = '';
237
+ if (this.layer.dataSource instanceof WMSDataSource) {
238
+ this.layer.dataSource.ol
239
+ .getParams()
240
+ .LAYERS.split(',')
241
+ .map(() => (STYLES += this.currentStyle + ','));
242
+ STYLES = STYLES.slice(0, -1);
243
+ this.layer.dataSource.ol.updateParams({ STYLES });
244
+ }
245
+ }
246
+ onLoadImage(id) {
247
+ let elemRef;
248
+ if (this.renderedLegends.length === 1) {
249
+ elemRef = this.renderedLegends.first.nativeElement;
250
+ }
251
+ else {
252
+ elemRef = this.renderedLegends.find((renderedLegend) => renderedLegend.nativeElement.id === id).nativeElement;
253
+ }
254
+ this.imagesHeight[id] = elemRef.height;
255
+ }
256
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayerLegendComponent, deps: [{ token: i1.CapabilitiesService }, { token: i2.LanguageService }, { token: i3.ConfigService }, { token: i4.HttpClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
257
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LayerLegendComponent, isStandalone: true, selector: "igo-layer-legend", inputs: { updateLegendOnResolutionChange: "updateLegendOnResolutionChange", layer: "layer" }, viewQueries: [{ propertyName: "renderedLegends", predicate: ["renderedLegend"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"legendItems$ | async as items\">\n <ng-container *ngIf=\"items.length; else noItems\">\n <ng-container *ngFor=\"let item of items.slice().reverse()\" #renderedLegends>\n <div *ngIf=\"getLegend; else noItems\">\n <mat-list-item *ngIf=\"item.title\">\n <mat-icon\n id=\"legend-toggle\"\n class=\"igo-chevron\"\n matListItemIcon\n igoCollapse\n [target]=\"legend\"\n [collapsed]=\"item.collapsed\"\n (toggle)=\"toggleLegendItem($event, item)\"\n >expand_less\n </mat-icon>\n <span matListItemTitle>{{ computeItemTitle(item) | async }} </span>\n </mat-list-item>\n <div\n #legend\n class=\"igo-layer-legend\"\n [ngClass]=\"{ 'with-title': item.title }\"\n >\n <mat-form-field\n *ngIf=\"currentStyle !== undefined\"\n subscriptSizing=\"dynamic\"\n >\n <mat-select\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\"\n [(ngModel)]=\"currentStyle\"\n (selectionChange)=\"onChangeStyle()\"\n >\n <mat-option *ngFor=\"let style of styles\" [value]=\"style.name\">{{\n style.title\n }}</mat-option>\n </mat-select>\n </mat-form-field>\n <div *ngIf=\"!item.collapsed\">\n <div *ngIf=\"item.url\">\n <img\n igoImageError\n *ngIf=\"item.imgGraphValue\"\n [hideError]=\"true\"\n #renderedLegend\n id=\"{{ item.title }}\"\n (load)=\"onLoadImage(item.title)\"\n [src]=\"item.imgGraphValue\"\n alt=\"{{ 'igo.geo.layer.legend.loadingLegendText' | translate }}\"\n />\n <small *ngIf=\"imagesHeight[item.title] < 16\">\n {{ 'igo.geo.layer.legend.noLegendScale' | translate }}\n </small>\n </div>\n <div\n [ngStyle]=\"item.style\"\n [innerHTML]=\"item.html | sanitizeHtml\"\n *ngIf=\"item.html\"\n ></div>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-template #noItems>\n <small>\n {{ 'igo.geo.layer.legend.noLegendText' | translate }}\n </small>\n </ng-template>\n</ng-container>\n", styles: [":host .igo-layer-legend.with-title{padding-left:18px}:host img{max-width:100%}:host img:after{content:\" \";position:relative;height:17px;float:left;width:17px;top:-3px;right:19px;background-color:#fff;border:3px solid #f3f3f3;border-radius:50%;animation:2s linear infinite spin}@-moz-document url-prefix(){:host img:after{margin-left:19px}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}mat-form-field{margin-bottom:4px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i5.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "directive", type: i5.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: CollapseDirective, selector: "[igoCollapse]", inputs: ["target", "collapsed"], outputs: ["toggle"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "directive", type: ImageErrorDirective, selector: "[igoImageError]", inputs: ["errorImageUrl", "hideError"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i12.TranslatePipe, name: "translate" }, { kind: "pipe", type: SanitizeHtmlPipe, name: "sanitizeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
258
+ }
259
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayerLegendComponent, decorators: [{
260
+ type: Component,
261
+ args: [{ selector: 'igo-layer-legend', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
262
+ NgIf,
263
+ NgFor,
264
+ MatListModule,
265
+ MatIconModule,
266
+ CollapseDirective,
267
+ NgClass,
268
+ MatFormFieldModule,
269
+ MatSelectModule,
270
+ MatTooltipModule,
271
+ FormsModule,
272
+ MatOptionModule,
273
+ ImageErrorDirective,
274
+ NgStyle,
275
+ AsyncPipe,
276
+ IgoLanguageModule,
277
+ SanitizeHtmlPipe
278
+ ], template: "<ng-container *ngIf=\"legendItems$ | async as items\">\n <ng-container *ngIf=\"items.length; else noItems\">\n <ng-container *ngFor=\"let item of items.slice().reverse()\" #renderedLegends>\n <div *ngIf=\"getLegend; else noItems\">\n <mat-list-item *ngIf=\"item.title\">\n <mat-icon\n id=\"legend-toggle\"\n class=\"igo-chevron\"\n matListItemIcon\n igoCollapse\n [target]=\"legend\"\n [collapsed]=\"item.collapsed\"\n (toggle)=\"toggleLegendItem($event, item)\"\n >expand_less\n </mat-icon>\n <span matListItemTitle>{{ computeItemTitle(item) | async }} </span>\n </mat-list-item>\n <div\n #legend\n class=\"igo-layer-legend\"\n [ngClass]=\"{ 'with-title': item.title }\"\n >\n <mat-form-field\n *ngIf=\"currentStyle !== undefined\"\n subscriptSizing=\"dynamic\"\n >\n <mat-select\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\"\n [(ngModel)]=\"currentStyle\"\n (selectionChange)=\"onChangeStyle()\"\n >\n <mat-option *ngFor=\"let style of styles\" [value]=\"style.name\">{{\n style.title\n }}</mat-option>\n </mat-select>\n </mat-form-field>\n <div *ngIf=\"!item.collapsed\">\n <div *ngIf=\"item.url\">\n <img\n igoImageError\n *ngIf=\"item.imgGraphValue\"\n [hideError]=\"true\"\n #renderedLegend\n id=\"{{ item.title }}\"\n (load)=\"onLoadImage(item.title)\"\n [src]=\"item.imgGraphValue\"\n alt=\"{{ 'igo.geo.layer.legend.loadingLegendText' | translate }}\"\n />\n <small *ngIf=\"imagesHeight[item.title] < 16\">\n {{ 'igo.geo.layer.legend.noLegendScale' | translate }}\n </small>\n </div>\n <div\n [ngStyle]=\"item.style\"\n [innerHTML]=\"item.html | sanitizeHtml\"\n *ngIf=\"item.html\"\n ></div>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-template #noItems>\n <small>\n {{ 'igo.geo.layer.legend.noLegendText' | translate }}\n </small>\n </ng-template>\n</ng-container>\n", styles: [":host .igo-layer-legend.with-title{padding-left:18px}:host img{max-width:100%}:host img:after{content:\" \";position:relative;height:17px;float:left;width:17px;top:-3px;right:19px;background-color:#fff;border:3px solid #f3f3f3;border-radius:50%;animation:2s linear infinite spin}@-moz-document url-prefix(){:host img:after{margin-left:19px}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}mat-form-field{margin-bottom:4px}\n"] }]
279
+ }], ctorParameters: () => [{ type: i1.CapabilitiesService }, { type: i2.LanguageService }, { type: i3.ConfigService }, { type: i4.HttpClient }, { type: i0.ChangeDetectorRef }], propDecorators: { updateLegendOnResolutionChange: [{
280
+ type: Input
281
+ }], renderedLegends: [{
282
+ type: ViewChildren,
283
+ args: ['renderedLegend']
284
+ }], layer: [{
285
+ type: Input
286
+ }] } });
287
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItbGVnZW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2xheWVyL2xheWVyLWxlZ2VuZC9sYXllci1sZWdlbmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItbGVnZW5kL2xheWVyLWxlZ2VuZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsS0FBSyxFQUdMLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFB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O3dCQUNULGlCQUFpQjt3QkFDakIsZ0JBQWdCO3FCQUNqQjsyTUFHUSw4QkFBOEI7c0JBQXRDLEtBQUs7Z0JBa0MwQixlQUFlO3NCQUE5QyxZQUFZO3VCQUFDLGdCQUFnQjtnQkFPckIsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiwgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5cbmltcG9ydCB7IENvbGxhcHNlRGlyZWN0aXZlIH0gZnJvbSAnQGlnbzIvY29tbW9uL2NvbGxhcHNpYmxlJztcbmltcG9ydCB7IFNhbml0aXplSHRtbFBpcGUgfSBmcm9tICdAaWdvMi9jb21tb24vY3VzdG9tLWh0bWwnO1xuaW1wb3J0IHsgSW1hZ2VFcnJvckRpcmVjdGl2ZSwgU2VjdXJlSW1hZ2VQaXBlIH0gZnJvbSAnQGlnbzIvY29tbW9uL2ltYWdlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2NvbmZpZyc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcbmltcG9ydCB7IElnb0xhbmd1YWdlTW9kdWxlIH0gZnJvbSAnQGlnbzIvY29yZS9sYW5ndWFnZSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDYXBhYmlsaXRpZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9zaGFyZWQvY2FwYWJpbGl0aWVzLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgTGVnZW5kLFxuICBXTVNEYXRhU291cmNlLFxuICBXTVNEYXRhU291cmNlT3B0aW9uc1xufSBmcm9tICcuLi8uLi9kYXRhc291cmNlL3NoYXJlZC9kYXRhc291cmNlcyc7XG5pbXBvcnQge1xuICBJdGVtU3R5bGVPcHRpb25zLFxuICBMYXllcixcbiAgTGVnZW5kTWFwVmlld09wdGlvbnNcbn0gZnJvbSAnLi4vc2hhcmVkL2xheWVycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1sYXllci1sZWdlbmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5ZXItbGVnZW5kLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGF5ZXItbGVnZW5kLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBOZ0ZvcixcbiAgICBNYXRMaXN0TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgQ29sbGFwc2VEaXJlY3RpdmUsXG4gICAgTmdDbGFzcyxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIEltYWdlRXJyb3JEaXJlY3RpdmUsXG4gICAgTmdTdHlsZSxcbiAgICBBc3luY1BpcGUsXG4gICAgSWdvTGFuZ3VhZ2VNb2R1bGUsXG4gICAgU2FuaXRpemVIdG1sUGlwZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExheWVyTGVnZW5kQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSB1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2UgPSBmYWxzZTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgbGVnZW5kIGl0ZW1zXG4gICAqL1xuICBsZWdlbmRJdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PExlZ2VuZFtdPihbXSk7XG5cbiAgLyoqXG4gICAqIFN1YnNjcmlwdGlvbiB0byB0aGUgbWFwJ3MgcmVzb2x1dGlvblxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0ZSQkOiBTdWJzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBhdmFpbGFibGUgc3R5bGVzXG4gICAqL1xuICBwdWJsaWMgc3R5bGVzO1xuXG4gIC8qKlxuICAgKiBUaGUgc3R5bGUgdXNlZCB0byBtYWtlIHRoZSBsZWdlbmRcbiAgICovXG4gIHB1YmxpYyBjdXJyZW50U3R5bGU7XG5cbiAgLyoqXG4gICAqIFRoZSBzY2FsZSB1c2VkIHRvIG1ha2UgdGhlIGxlZ2VuZFxuICAgKi9cbiAgcHJpdmF0ZSBzY2FsZTogbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgZXh0ZW50IHVzZWQgdG8gbWFrZSB0aGUgbGVnZW5kXG4gICAqL1xuICBwcml2YXRlIHZpZXc6IExlZ2VuZE1hcFZpZXdPcHRpb25zID0gdW5kZWZpbmVkO1xuICAvKipcbiAgICogR2V0IGxpc3Qgb2YgaW1hZ2VzIGRpc3BsYXlcbiAgICovXG4gIEBWaWV3Q2hpbGRyZW4oJ3JlbmRlcmVkTGVnZW5kJykgcmVuZGVyZWRMZWdlbmRzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZj47XG5cbiAgLyoqXG4gICAqIExpc3Qgb2Ygc2l6ZSBvZiBpbWFnZXMgZGlzcGxheWVkXG4gICAqL1xuICBwdWJsaWMgaW1hZ2VzSGVpZ2h0OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge307XG5cbiAgQElucHV0KCkgbGF5ZXI6IExheWVyO1xuXG4gIC8qKlxuICAgKiBpZiBnZXRMZWdlbmRHcmFwaGljIGlzIGF1dGhvcml6ZWRcbiAgICovXG4gIHB1YmxpYyBnZXRMZWdlbmQgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBhY3RpdmVMZWdlbmRcbiAgICovXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjYXBhYmlsaXRpZXNTZXJ2aWNlOiBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbGFuZ3VhZ2VTZXJ2aWNlOiBMYW5ndWFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHt9XG5cbiAgLyoqXG4gICAqIE9uIGluaXQsIHN1YnNjcmliZSB0byB0aGUgbWFwJ3MgcmVzb2x1dGlvbiBhbmQgdXBkYXRlIHRoZSBsZWdlbmQgYWNjb3JkaW5nbHlcbiAgICovXG4gIG5nT25Jbml0KCkge1xuICAgIGxldCBsYXN0bExlZ2VuZCA9IHRoaXMubGF5ZXIubGVnZW5kO1xuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5saXN0U3R5bGVzKCk7XG4gICAgY29uc3Qgc291cmNlT3B0aW9ucyA9IHRoaXMubGF5ZXIub3B0aW9ucy5zb3VyY2Uub3B0aW9ucyBhcyBhbnk7XG4gICAgaWYgKHNvdXJjZU9wdGlvbnMgJiYgc291cmNlT3B0aW9ucy5wYXJhbXMgJiYgc291cmNlT3B0aW9ucy5wYXJhbXMuU1RZTEVTKSB7XG4gICAgICAvLyBpZiBhIHN0eWxlcyBpcyBwcm92aWRlZCBpbnRvIHRoZSBsYXllcnMgd21zIHBhcmFtc1xuICAgICAgdGhpcy5jdXJyZW50U3R5bGUgPSB0aGlzLnN0eWxlcy5maW5kKFxuICAgICAgICAoc3R5bGUpID0+IHN0eWxlLm5hbWUgPT09IHNvdXJjZU9wdGlvbnMucGFyYW1zLlNUWUxFU1xuICAgICAgKS5uYW1lO1xuICAgIH0gZWxzZSBpZiAoIWxhc3RsTGVnZW5kKSB7XG4gICAgICAvLyBpZiBubyBsZWdlbmQgaXMgbWFudWFsbHkgcHJvdmlkZWRcbiAgICAgIGlmICh0aGlzLnN0eWxlcyAmJiB0aGlzLnN0eWxlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFN0eWxlID0gdGhpcy5zdHlsZXNbMF0ubmFtZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuc3R5bGVzICYmIHRoaXMuc3R5bGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMuY3VycmVudFN0eWxlID0gbGFzdGxMZWdlbmRbMF0uY3VycmVudFN0eWxlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgdGhpcy5sYXllci5vcHRpb25zLmxlZ2VuZE9wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICB0aGlzLmxheWVyLm9wdGlvbnMubGVnZW5kT3B0aW9ucy5kaXNwbGF5ID09PSBmYWxzZVxuICAgICkge1xuICAgICAgbGFzdGxMZWdlbmQgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFzdGxMZWdlbmQgPSB0aGlzLmxheWVyLmRhdGFTb3VyY2UuZ2V0TGVnZW5kKFxuICAgICAgICB0aGlzLmN1cnJlbnRTdHlsZSxcbiAgICAgICAgdGhpcy52aWV3XG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHRoaXMudXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlIHx8XG4gICAgICAoc291cmNlT3B0aW9ucyBhcyBXTVNEYXRhU291cmNlT3B0aW9ucykuY29udGVudERlcGVuZGVudExlZ2VuZFxuICAgICkge1xuICAgICAgY29uc3Qgc3RhdGUkID0gdGhpcy5sYXllci5tYXAudmlld0NvbnRyb2xsZXIuc3RhdGUkO1xuICAgICAgdGhpcy5zdGF0ZSQkID0gc3RhdGUkLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uVmlld0NvbnRyb2xsZXJTdGF0ZUNoYW5nZSgpKTtcbiAgICB9IGVsc2UgaWYgKGxhc3RsTGVnZW5kICYmIGxhc3RsTGVnZW5kLmxlbmd0aCAhPT0gMCkge1xuICAgICAgdGhpcy5sZWdlbmRJdGVtcyQubmV4dChsYXN0bExlZ2VuZCk7XG4gICAgICBmb3IgKGNvbnN0IGxlZ2VuZCBvZiBsYXN0bExlZ2VuZCkge1xuICAgICAgICB0aGlzLmdldExlZ2VuZEdyYXBoaWMobGVnZW5kKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT24gZGVzdHJveSwgdW5zdWJzY3JpYmUgdG8gdGhlIG1hcCdzIHZpZXcgc3RhdGVcbiAgICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnN0YXRlJCQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zdGF0ZSQkLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TGVnZW5kR3JhcGhpYyhpdGVtOiBMZWdlbmQpIHtcbiAgICBpZiAoaXRlbS51cmwpIHtcbiAgICAgIGNvbnN0IHNlY3VyZUlNRyA9IG5ldyBTZWN1cmVJbWFnZVBpcGUodGhpcy5odHRwLCB0aGlzLmNvbmZpZ1NlcnZpY2UpO1xuICAgICAgc2VjdXJlSU1HXG4gICAgICAgIC50cmFuc2Zvcm0oaXRlbS51cmwpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgaWYgKGVyci5lcnJvcikge1xuICAgICAgICAgICAgICBlcnIuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5nZXRMZWdlbmQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgIHJldHVybiBlcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChvYnNMZWdHcmFwaCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlkeCA9IHRoaXMubGVnZW5kSXRlbXMkLnZhbHVlLmZpbmRJbmRleChcbiAgICAgICAgICAgIChsZWcpID0+IGxlZy50aXRsZSA9PT0gaXRlbS50aXRsZVxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgbGVnZW5kR3JhcGggPSBvYnNMZWdHcmFwaCBhcyBzdHJpbmc7XG4gICAgICAgICAgdGhpcy5sZWdlbmRJdGVtcyQudmFsdWVbaWR4XS5pbWdHcmFwaFZhbHVlID0gbGVnZW5kR3JhcGg7XG4gICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHRvZ2dsZUxlZ2VuZEl0ZW0oY29sbGFwc2VkOiBib29sZWFuLCBpdGVtOiBMZWdlbmQpIHtcbiAgICBpdGVtLmNvbGxhcHNlZCA9IGNvbGxhcHNlZDtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmZXJ0VG9nZ2xlTGVnZW5kSXRlbShuZXdMZWdlbmRzOiBMZWdlbmRbXSk6IExlZ2VuZFtdIHtcbiAgICBjb25zdCBvdXRMZWdlbmRzOiBMZWdlbmRbXSA9IG5ld0xlZ2VuZHM7XG4gICAgY29uc3QgbGFzdExlZ2VuZHMgPSB0aGlzLmxheWVyLmxlZ2VuZDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxhc3RMZWdlbmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBvdXRMZWdlbmRzW2ldLmNvbGxhcHNlZCA9IGxhc3RMZWdlbmRzW2ldLmNvbGxhcHNlZDtcbiAgICB9XG4gICAgcmV0dXJuIG91dExlZ2VuZHM7XG4gIH1cblxuICBjb21wdXRlSXRlbVRpdGxlKGxheWVyTGVnZW5kKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCBsYXllck9wdGlvbnMgPSB0aGlzLmxheWVyLmRhdGFTb3VyY2Uub3B0aW9ucyBhcyBhbnk7XG4gICAgaWYgKGxheWVyT3B0aW9ucy50eXBlICE9PSAnd21zJykge1xuICAgICAgcmV0dXJuIG9mKGxheWVyTGVnZW5kLnRpdGxlKTtcbiAgICB9XG5cbiAgICBjb25zdCBsYXllcnMgPSBsYXllck9wdGlvbnMucGFyYW1zLkxBWUVSUy5zcGxpdCgnLCcpO1xuICAgIGNvbnN0IGxvY2FsTGF5ZXJPcHRpb25zID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShsYXllck9wdGlvbnMpKTsgLy8gdG8gYXZvaWQgdG8gYWx0ZXIgdGhlIG9yaWdpbmFsIG9wdGlvbnMuXG4gICAgbG9jYWxMYXllck9wdGlvbnMucGFyYW1zLkxBWUVSUyA9IGxheWVycy5maW5kKFxuICAgICAgKGxheWVyKSA9PiBsYXllciA9PT0gbGF5ZXJMZWdlbmQudGl0bGVcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmNhcGFiaWxpdGllc1NlcnZpY2UuZ2V0V01TT3B0aW9ucyhsb2NhbExheWVyT3B0aW9ucykucGlwZShcbiAgICAgIG1hcCgod21zRGF0YVNvdXJjZU9wdGlvbnMpID0+IHtcbiAgICAgICAgcmV0dXJuIHdtc0RhdGFTb3VyY2VPcHRpb25zLl9sYXllck9wdGlvbnNGcm9tU291cmNlLnRpdGxlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIHJlc29sdXRpb24gY2hhbmdlLCBjb21wdXRlIHRoZSBlZmZlY3RpdmUgc2NhbGUgbGV2ZWwgYW5kIHVwZGF0ZSB0aGVcbiAgICogbGVnZW5kIGFjY29yZGluZ2x5LlxuICAgKiBAcGFyYW0gcmVzb2x1dGlvbiBNYXAgcmVzb2x1dGlvblxuICAgKi9cbiAgcHJpdmF0ZSBvblZpZXdDb250cm9sbGVyU3RhdGVDaGFuZ2UoKSB7XG4gICAgdGhpcy52aWV3ID0ge1xuICAgICAgcmVzb2x1dGlvbjogdGhpcy5sYXllci5tYXAudmlld0NvbnRyb2xsZXIuZ2V0UmVzb2x1dGlvbigpLFxuICAgICAgZXh0ZW50OiB0aGlzLmxheWVyLm1hcC52aWV3Q29udHJvbGxlci5nZXRFeHRlbnQoKSxcbiAgICAgIHByb2plY3Rpb246IHRoaXMubGF5ZXIubWFwLnZpZXdDb250cm9sbGVyLmdldE9sUHJvamVjdGlvbigpLmdldENvZGUoKSxcbiAgICAgIHNjYWxlOiB0aGlzLmxheWVyLm1hcC52aWV3Q29udHJvbGxlci5nZXRTY2FsZSgpLFxuICAgICAgc2l6ZTogdGhpcy5sYXllci5tYXAub2wuZ2V0U2l6ZSgpXG4gICAgfSBhcyBMZWdlbmRNYXBWaWV3T3B0aW9ucztcbiAgICB0aGlzLnVwZGF0ZUxlZ2VuZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgbGVnZW5kIHdpdGggc2NhbGUgbGV2ZWwgYW5kIHN0eWxlIGRlZmluZVxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVMZWdlbmQoKSB7XG4gICAgbGV0IGxlZ2VuZEl0ZW1zID0gdGhpcy5sYXllci5kYXRhU291cmNlLmdldExlZ2VuZChcbiAgICAgIHRoaXMuY3VycmVudFN0eWxlLFxuICAgICAgdGhpcy52aWV3XG4gICAgKTtcbiAgICBpZiAodGhpcy5sYXllci5sZWdlbmQgJiYgdGhpcy5sYXllci5sZWdlbmQubGVuZ3RoID4gMSkge1xuICAgICAgbGVnZW5kSXRlbXMgPSB0aGlzLnRyYW5zZmVydFRvZ2dsZUxlZ2VuZEl0ZW0obGVnZW5kSXRlbXMpO1xuICAgIH1cbiAgICB0aGlzLmxheWVyLmxlZ2VuZCA9IGxlZ2VuZEl0ZW1zO1xuXG4gICAgaWYgKGxlZ2VuZEl0ZW1zLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmxlZ2VuZEl0ZW1zJC52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sZWdlbmRJdGVtcyQubmV4dChsZWdlbmRJdGVtcyk7XG4gICAgZm9yIChjb25zdCBsZWdlbmQgb2YgdGhpcy5sZWdlbmRJdGVtcyQudmFsdWUpIHtcbiAgICAgIHRoaXMuZ2V0TGVnZW5kR3JhcGhpYyhsZWdlbmQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGlzdFN0eWxlcygpIHtcbiAgICBjb25zdCBsYXllck9wdGlvbnMgPSB0aGlzLmxheWVyLm9wdGlvbnM7XG4gICAgaWYgKGxheWVyT3B0aW9ucyAmJiBsYXllck9wdGlvbnMubGVnZW5kT3B0aW9ucykge1xuICAgICAgY29uc3QgdHJhbnNsYXRlID0gdGhpcy5sYW5ndWFnZVNlcnZpY2UudHJhbnNsYXRlO1xuICAgICAgY29uc3QgdGl0bGUgPSB0cmFuc2xhdGUuaW5zdGFudCgnaWdvLmdlby5sYXllci5sZWdlbmQuZGVmYXVsdCcpO1xuICAgICAgbGV0IHN0eWxlc0F2YWlsYWJsZSA9IFt7IG5hbWU6ICcnLCB0aXRsZSB9IGFzIEl0ZW1TdHlsZU9wdGlvbnNdO1xuICAgICAgaWYgKGxheWVyT3B0aW9ucy5sZWdlbmRPcHRpb25zLnN0eWxlc0F2YWlsYWJsZSkge1xuICAgICAgICBzdHlsZXNBdmFpbGFibGUgPSBzdHlsZXNBdmFpbGFibGUuY29uY2F0KFxuICAgICAgICAgIGxheWVyT3B0aW9ucy5sZWdlbmRPcHRpb25zLnN0eWxlc0F2YWlsYWJsZS5maWx0ZXIoXG4gICAgICAgICAgICAoc0EpID0+XG4gICAgICAgICAgICAgIHNBLm5hbWUubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9naSwgJycpICE9PVxuICAgICAgICAgICAgICAgICdkZWZhdWx0JyAmJlxuICAgICAgICAgICAgICBzQS5uYW1lLm5vcm1hbGl6ZSgnTkZEJykucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl0vZ2ksICcnKSAhPT1cbiAgICAgICAgICAgICAgICAnZGVmYXV0J1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHN0eWxlc0F2YWlsYWJsZVxuICAgICAgICAuZmlsdGVyKChzYSkgPT4gIXNhLnRpdGxlKVxuICAgICAgICAubWFwKChzYSkgPT4gKHNhLnRpdGxlID0gc2EubmFtZSkpO1xuICAgICAgc3R5bGVzQXZhaWxhYmxlLm1hcChcbiAgICAgICAgKHMpID0+XG4gICAgICAgICAgKHMudGl0bGUgPVxuICAgICAgICAgICAgcy50aXRsZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArXG4gICAgICAgICAgICBzLnRpdGxlLnNsaWNlKDEpLnJlcGxhY2UoL18vZywgJyAnKSlcbiAgICAgICk7XG4gICAgICByZXR1cm4gc3R5bGVzQXZhaWxhYmxlO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBvbkNoYW5nZVN0eWxlKCkge1xuICAgIHRoaXMudXBkYXRlTGVnZW5kKCk7XG4gICAgbGV0IFNUWUxFUyA9ICcnO1xuICAgIGlmICh0aGlzLmxheWVyLmRhdGFTb3VyY2UgaW5zdGFuY2VvZiBXTVNEYXRhU291cmNlKSB7XG4gICAgICB0aGlzLmxheWVyLmRhdGFTb3VyY2Uub2xcbiAgICAgICAgLmdldFBhcmFtcygpXG4gICAgICAgIC5MQVlFUlMuc3BsaXQoJywnKVxuICAgICAgICAubWFwKCgpID0+IChTVFlMRVMgKz0gdGhpcy5jdXJyZW50U3R5bGUgKyAnLCcpKTtcbiAgICAgIFNUWUxFUyA9IFNUWUxFUy5zbGljZSgwLCAtMSk7XG4gICAgICB0aGlzLmxheWVyLmRhdGFTb3VyY2Uub2wudXBkYXRlUGFyYW1zKHsgU1RZTEVTIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uTG9hZEltYWdlKGlkOiBzdHJpbmcpIHtcbiAgICBsZXQgZWxlbVJlZjogSFRNTEltYWdlRWxlbWVudDtcbiAgICBpZiAodGhpcy5yZW5kZXJlZExlZ2VuZHMubGVuZ3RoID09PSAxKSB7XG4gICAgICBlbGVtUmVmID0gdGhpcy5yZW5kZXJlZExlZ2VuZHMuZmlyc3QubmF0aXZlRWxlbWVudCBhcyBIVE1MSW1hZ2VFbGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtUmVmID0gdGhpcy5yZW5kZXJlZExlZ2VuZHMuZmluZChcbiAgICAgICAgKHJlbmRlcmVkTGVnZW5kKSA9PiByZW5kZXJlZExlZ2VuZC5uYXRpdmVFbGVtZW50LmlkID09PSBpZFxuICAgICAgKS5uYXRpdmVFbGVtZW50IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4gICAgfVxuICAgIHRoaXMuaW1hZ2VzSGVpZ2h0W2lkXSA9IGVsZW1SZWYuaGVpZ2h0O1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibGVnZW5kSXRlbXMkIHwgYXN5bmMgYXMgaXRlbXNcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1zLmxlbmd0aDsgZWxzZSBub0l0ZW1zXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtcy5zbGljZSgpLnJldmVyc2UoKVwiICNyZW5kZXJlZExlZ2VuZHM+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZ2V0TGVnZW5kOyBlbHNlIG5vSXRlbXNcIj5cbiAgICAgICAgPG1hdC1saXN0LWl0ZW0gKm5nSWY9XCJpdGVtLnRpdGxlXCI+XG4gICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICBpZD1cImxlZ2VuZC10b2dnbGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJpZ28tY2hldnJvblwiXG4gICAgICAgICAgICBtYXRMaXN0SXRlbUljb25cbiAgICAgICAgICAgIGlnb0NvbGxhcHNlXG4gICAgICAgICAgICBbdGFyZ2V0XT1cImxlZ2VuZFwiXG4gICAgICAgICAgICBbY29sbGFwc2VkXT1cIml0ZW0uY29sbGFwc2VkXCJcbiAgICAgICAgICAgICh0b2dnbGUpPVwidG9nZ2xlTGVnZW5kSXRlbSgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgID5leHBhbmRfbGVzc1xuICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gbWF0TGlzdEl0ZW1UaXRsZT57eyBjb21wdXRlSXRlbVRpdGxlKGl0ZW0pIHwgYXN5bmMgfX0gPC9zcGFuPlxuICAgICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAjbGVnZW5kXG4gICAgICAgICAgY2xhc3M9XCJpZ28tbGF5ZXItbGVnZW5kXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICd3aXRoLXRpdGxlJzogaXRlbS50aXRsZSB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICAgICAgKm5nSWY9XCJjdXJyZW50U3R5bGUgIT09IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICAgICAgICBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCJcbiAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubGF5ZXIubGVnZW5kLnNlbGVjdFN0eWxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3VycmVudFN0eWxlXCJcbiAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkNoYW5nZVN0eWxlKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgc3R5bGUgb2Ygc3R5bGVzXCIgW3ZhbHVlXT1cInN0eWxlLm5hbWVcIj57e1xuICAgICAgICAgICAgICAgIHN0eWxlLnRpdGxlXG4gICAgICAgICAgICAgIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFpdGVtLmNvbGxhcHNlZFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0udXJsXCI+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBpZ29JbWFnZUVycm9yXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmltZ0dyYXBoVmFsdWVcIlxuICAgICAgICAgICAgICAgIFtoaWRlRXJyb3JdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgI3JlbmRlcmVkTGVnZW5kXG4gICAgICAgICAgICAgICAgaWQ9XCJ7eyBpdGVtLnRpdGxlIH19XCJcbiAgICAgICAgICAgICAgICAobG9hZCk9XCJvbkxvYWRJbWFnZShpdGVtLnRpdGxlKVwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJpdGVtLmltZ0dyYXBoVmFsdWVcIlxuICAgICAgICAgICAgICAgIGFsdD1cInt7ICdpZ28uZ2VvLmxheWVyLmxlZ2VuZC5sb2FkaW5nTGVnZW5kVGV4dCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8c21hbGwgKm5nSWY9XCJpbWFnZXNIZWlnaHRbaXRlbS50aXRsZV0gPCAxNlwiPlxuICAgICAgICAgICAgICAgIHt7ICdpZ28uZ2VvLmxheWVyLmxlZ2VuZC5ub0xlZ2VuZFNjYWxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIml0ZW0uc3R5bGVcIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIml0ZW0uaHRtbCB8IHNhbml0aXplSHRtbFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5odG1sXCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNub0l0ZW1zPlxuICAgIDxzbWFsbD5cbiAgICAgIHt7ICdpZ28uZ2VvLmxheWVyLmxlZ2VuZC5ub0xlZ2VuZFRleHQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9zbWFsbD5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './layer-legend-item.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9sYXllci1sZWdlbmQtaXRlbS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9sYXllci1sZWdlbmQtaXRlbS5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,85 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { MatListModule } from '@angular/material/list';
3
+ import { MatTooltipModule } from '@angular/material/tooltip';
4
+ import { NetworkService } from '@igo2/core/network';
5
+ import { BehaviorSubject } from 'rxjs';
6
+ import { LayerLegendComponent } from '../layer-legend/layer-legend.component';
7
+ import { Layer } from '../shared/layers/layer';
8
+ import { TooltipType } from '../shared/layers/layer.interface';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@igo2/core/network";
11
+ import * as i2 from "@angular/material/list";
12
+ import * as i3 from "@angular/material/tooltip";
13
+ export class LayerLegendItemComponent {
14
+ networkService;
15
+ inResolutionRange$ = new BehaviorSubject(true);
16
+ tooltipText;
17
+ state;
18
+ resolution$$;
19
+ network$$;
20
+ layer;
21
+ updateLegendOnResolutionChange = false;
22
+ constructor(networkService) {
23
+ this.networkService = networkService;
24
+ }
25
+ ngOnInit() {
26
+ const resolution$ = this.layer.map.viewController.resolution$;
27
+ this.resolution$$ = resolution$.subscribe(() => {
28
+ this.onResolutionChange();
29
+ });
30
+ this.tooltipText = this.computeTooltip();
31
+ this.network$$ = this.networkService
32
+ .currentState()
33
+ .subscribe((state) => {
34
+ this.state = state;
35
+ this.onResolutionChange();
36
+ });
37
+ }
38
+ ngOnDestroy() {
39
+ this.resolution$$.unsubscribe();
40
+ this.network$$.unsubscribe();
41
+ }
42
+ computeTooltip() {
43
+ const layerOptions = this.layer.options;
44
+ if (!layerOptions.tooltip) {
45
+ return this.layer.title;
46
+ }
47
+ const layerTooltip = layerOptions.tooltip;
48
+ const layerMetadata = layerOptions.metadata;
49
+ switch (layerOptions.tooltip.type) {
50
+ case TooltipType.TITLE:
51
+ return this.layer.title;
52
+ case TooltipType.ABSTRACT:
53
+ if (layerMetadata && layerMetadata.abstract) {
54
+ return layerMetadata.abstract;
55
+ }
56
+ else {
57
+ return this.layer.title;
58
+ }
59
+ case TooltipType.CUSTOM:
60
+ if (layerTooltip && layerTooltip.text) {
61
+ return layerTooltip.text;
62
+ }
63
+ else {
64
+ return this.layer.title;
65
+ }
66
+ default:
67
+ return this.layer.title;
68
+ }
69
+ }
70
+ onResolutionChange() {
71
+ const inResolutionRange = this.layer.isInResolutionsRange;
72
+ this.inResolutionRange$.next(inResolutionRange);
73
+ }
74
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayerLegendItemComponent, deps: [{ token: i1.NetworkService }], target: i0.ɵɵFactoryTarget.Component });
75
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LayerLegendItemComponent, isStandalone: true, selector: "igo-layer-legend-item", inputs: { layer: "layer", updateLegendOnResolutionChange: "updateLegendOnResolutionChange" }, ngImport: i0, template: "<mat-list-item class=\"igo-layer-list-item\">\n <span\n matListItemTitle\n class=\"igo-layer-title\"\n [matTooltip]=\"tooltipText\"\n matTooltipShowDelay=\"500\"\n >{{ layer.title }}</span\n >\n</mat-list-item>\n\n<div #legend class=\"igo-layer-legend-container\">\n <igo-layer-legend\n [layer]=\"layer\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n >\n </igo-layer-legend>\n</div>\n", styles: [":host{overflow:hidden}:host .igo-layer-list-item{height:48px;clear:both}:host .igo-layer-legend-container{padding-left:18px;width:calc(100% - 18px)}\n"], dependencies: [{ kind: "ngmodule", type: MatListModule }, { kind: "component", type: i2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i2.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: LayerLegendComponent, selector: "igo-layer-legend", inputs: ["updateLegendOnResolutionChange", "layer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
76
+ }
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayerLegendItemComponent, decorators: [{
78
+ type: Component,
79
+ args: [{ selector: 'igo-layer-legend-item', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatListModule, MatTooltipModule, LayerLegendComponent], template: "<mat-list-item class=\"igo-layer-list-item\">\n <span\n matListItemTitle\n class=\"igo-layer-title\"\n [matTooltip]=\"tooltipText\"\n matTooltipShowDelay=\"500\"\n >{{ layer.title }}</span\n >\n</mat-list-item>\n\n<div #legend class=\"igo-layer-legend-container\">\n <igo-layer-legend\n [layer]=\"layer\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n >\n </igo-layer-legend>\n</div>\n", styles: [":host{overflow:hidden}:host .igo-layer-list-item{height:48px;clear:both}:host .igo-layer-legend-container{padding-left:18px;width:calc(100% - 18px)}\n"] }]
80
+ }], ctorParameters: () => [{ type: i1.NetworkService }], propDecorators: { layer: [{
81
+ type: Input
82
+ }], updateLegendOnResolutionChange: [{
83
+ type: Input
84
+ }] } });
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItbGVnZW5kLWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItbGVnZW5kLWl0ZW0vbGF5ZXItbGVnZW5kLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbGF5ZXIvbGF5ZXItbGVnZW5kLWl0ZW0vbGF5ZXItbGVnZW5kLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxFQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU3RCxPQUFPLEVBQW1CLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBR3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7O0FBVS9ELE1BQU0sT0FBTyx3QkFBd0I7SUFjZjtJQWJwQixrQkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztJQUV4RCxXQUFXLENBQVM7SUFFcEIsS0FBSyxDQUFrQjtJQUVmLFlBQVksQ0FBZTtJQUMzQixTQUFTLENBQWU7SUFFdkIsS0FBSyxDQUFRO0lBRWIsOEJBQThCLEdBQUcsS0FBSyxDQUFDO0lBRWhELFlBQW9CLGNBQThCO1FBQTlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUFHLENBQUM7SUFFdEQsUUFBUTtRQUNOLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUM7UUFDOUQsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXpDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWM7YUFDakMsWUFBWSxFQUFFO2FBQ2QsU0FBUyxDQUFDLENBQUMsS0FBc0IsRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDMUIsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDMUMsTUFBTSxhQUFhLEdBQUksWUFBcUMsQ0FBQyxRQUFRLENBQUM7UUFDdEUsUUFBUSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xDLEtBQUssV0FBVyxDQUFDLEtBQUs7Z0JBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDMUIsS0FBSyxXQUFXLENBQUMsUUFBUTtnQkFDdkIsSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUM1QyxPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUM7Z0JBQ2hDLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUMxQixDQUFDO1lBQ0gsS0FBSyxXQUFXLENBQUMsTUFBTTtnQkFDckIsSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUN0QyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQzNCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUMxQixDQUFDO1lBQ0g7Z0JBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUM7UUFDMUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xELENBQUM7d0dBbEVVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLCtLQzNCckMsc2JBaUJBLCtNRFFZLGFBQWEsbVJBQUUsZ0JBQWdCLDZUQUFFLG9CQUFvQjs7NEZBRXBELHdCQUF3QjtrQkFScEMsU0FBUzsrQkFDRSx1QkFBdUIsbUJBR2hCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDO21GQVl2RCxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsOEJBQThCO3NCQUF0QyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBDb25uZWN0aW9uU3RhdGUsIE5ldHdvcmtTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9uZXR3b3JrJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTWV0YWRhdGFMYXllck9wdGlvbnMgfSBmcm9tICcuLi8uLi9tZXRhZGF0YS9zaGFyZWQvbWV0YWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IExheWVyTGVnZW5kQ29tcG9uZW50IH0gZnJvbSAnLi4vbGF5ZXItbGVnZW5kL2xheWVyLWxlZ2VuZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9zaGFyZWQvbGF5ZXJzL2xheWVyJztcbmltcG9ydCB7IFRvb2x0aXBUeXBlIH0gZnJvbSAnLi4vc2hhcmVkL2xheWVycy9sYXllci5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tbGF5ZXItbGVnZW5kLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5ZXItbGVnZW5kLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sYXllci1sZWdlbmQtaXRlbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdExpc3RNb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIExheWVyTGVnZW5kQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBMYXllckxlZ2VuZEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGluUmVzb2x1dGlvblJhbmdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgdG9vbHRpcFRleHQ6IHN0cmluZztcblxuICBzdGF0ZTogQ29ubmVjdGlvblN0YXRlO1xuXG4gIHByaXZhdGUgcmVzb2x1dGlvbiQkOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgbmV0d29yayQkOiBTdWJzY3JpcHRpb247XG5cbiAgQElucHV0KCkgbGF5ZXI6IExheWVyO1xuXG4gIEBJbnB1dCgpIHVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmV0d29ya1NlcnZpY2U6IE5ldHdvcmtTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHJlc29sdXRpb24kID0gdGhpcy5sYXllci5tYXAudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiQ7XG4gICAgdGhpcy5yZXNvbHV0aW9uJCQgPSByZXNvbHV0aW9uJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vblJlc29sdXRpb25DaGFuZ2UoKTtcbiAgICB9KTtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gdGhpcy5jb21wdXRlVG9vbHRpcCgpO1xuXG4gICAgdGhpcy5uZXR3b3JrJCQgPSB0aGlzLm5ldHdvcmtTZXJ2aWNlXG4gICAgICAuY3VycmVudFN0YXRlKClcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXRlOiBDb25uZWN0aW9uU3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgICAgICB0aGlzLm9uUmVzb2x1dGlvbkNoYW5nZSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnJlc29sdXRpb24kJC51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMubmV0d29yayQkLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBjb21wdXRlVG9vbHRpcCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGxheWVyT3B0aW9ucyA9IHRoaXMubGF5ZXIub3B0aW9ucztcbiAgICBpZiAoIWxheWVyT3B0aW9ucy50b29sdGlwKSB7XG4gICAgICByZXR1cm4gdGhpcy5sYXllci50aXRsZTtcbiAgICB9XG4gICAgY29uc3QgbGF5ZXJUb29sdGlwID0gbGF5ZXJPcHRpb25zLnRvb2x0aXA7XG4gICAgY29uc3QgbGF5ZXJNZXRhZGF0YSA9IChsYXllck9wdGlvbnMgYXMgTWV0YWRhdGFMYXllck9wdGlvbnMpLm1ldGFkYXRhO1xuICAgIHN3aXRjaCAobGF5ZXJPcHRpb25zLnRvb2x0aXAudHlwZSkge1xuICAgICAgY2FzZSBUb29sdGlwVHlwZS5USVRMRTpcbiAgICAgICAgcmV0dXJuIHRoaXMubGF5ZXIudGl0bGU7XG4gICAgICBjYXNlIFRvb2x0aXBUeXBlLkFCU1RSQUNUOlxuICAgICAgICBpZiAobGF5ZXJNZXRhZGF0YSAmJiBsYXllck1ldGFkYXRhLmFic3RyYWN0KSB7XG4gICAgICAgICAgcmV0dXJuIGxheWVyTWV0YWRhdGEuYWJzdHJhY3Q7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubGF5ZXIudGl0bGU7XG4gICAgICAgIH1cbiAgICAgIGNhc2UgVG9vbHRpcFR5cGUuQ1VTVE9NOlxuICAgICAgICBpZiAobGF5ZXJUb29sdGlwICYmIGxheWVyVG9vbHRpcC50ZXh0KSB7XG4gICAgICAgICAgcmV0dXJuIGxheWVyVG9vbHRpcC50ZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0aGlzLmxheWVyLnRpdGxlO1xuICAgICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5sYXllci50aXRsZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uUmVzb2x1dGlvbkNoYW5nZSgpIHtcbiAgICBjb25zdCBpblJlc29sdXRpb25SYW5nZSA9IHRoaXMubGF5ZXIuaXNJblJlc29sdXRpb25zUmFuZ2U7XG4gICAgdGhpcy5pblJlc29sdXRpb25SYW5nZSQubmV4dChpblJlc29sdXRpb25SYW5nZSk7XG4gIH1cbn1cbiIsIjxtYXQtbGlzdC1pdGVtIGNsYXNzPVwiaWdvLWxheWVyLWxpc3QtaXRlbVwiPlxuICA8c3BhblxuICAgIG1hdExpc3RJdGVtVGl0bGVcbiAgICBjbGFzcz1cImlnby1sYXllci10aXRsZVwiXG4gICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcFRleHRcIlxuICAgIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgID57eyBsYXllci50aXRsZSB9fTwvc3BhblxuICA+XG48L21hdC1saXN0LWl0ZW0+XG5cbjxkaXYgI2xlZ2VuZCBjbGFzcz1cImlnby1sYXllci1sZWdlbmQtY29udGFpbmVyXCI+XG4gIDxpZ28tbGF5ZXItbGVnZW5kXG4gICAgW2xheWVyXT1cImxheWVyXCJcbiAgICBbdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXT1cInVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZVwiXG4gID5cbiAgPC9pZ28tbGF5ZXItbGVnZW5kPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './layer-legend-list.component';
2
+ export * from './layer-legend-list-binding.directive';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9sYXllci1sZWdlbmQtbGlzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xheWVyLWxlZ2VuZC1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xheWVyLWxlZ2VuZC1saXN0LWJpbmRpbmcuZGlyZWN0aXZlJztcbiJdfQ==
@@ -0,0 +1,54 @@
1
+ import { Directive, Self } from '@angular/core';
2
+ import { combineLatest } from 'rxjs';
3
+ import { debounceTime } from 'rxjs/operators';
4
+ import { MapService } from '../../map/shared/map.service';
5
+ import { isLayerItem } from '../utils';
6
+ import { LayerLegendListComponent } from './layer-legend-list.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./layer-legend-list.component";
9
+ import * as i2 from "../../map/shared/map.service";
10
+ export class LayerLegendListBindingDirective {
11
+ mapService;
12
+ component;
13
+ layersOrResolutionChange$$;
14
+ layersVisibility$$;
15
+ constructor(component, mapService) {
16
+ this.mapService = mapService;
17
+ this.component = component;
18
+ }
19
+ ngOnInit() {
20
+ // Override input layers
21
+ this.component.layers = [];
22
+ this.layersOrResolutionChange$$ = combineLatest([
23
+ this.mapService.getMap().layerController.all$,
24
+ this.mapService.getMap().viewController.resolution$
25
+ ])
26
+ .pipe(debounceTime(10))
27
+ .subscribe((bunch) => {
28
+ const shownLayers = bunch[0].filter((layer) => {
29
+ return isLayerItem(layer) && layer.showInLayerList === true;
30
+ });
31
+ this.component.layers = shownLayers;
32
+ this.layersVisibility$$ = combineLatest(shownLayers.map((layer) => layer.visible$)).subscribe(() => this.component.change$.next());
33
+ });
34
+ }
35
+ ngOnDestroy() {
36
+ this.layersOrResolutionChange$$.unsubscribe();
37
+ if (this.layersVisibility$$ !== undefined) {
38
+ this.layersVisibility$$.unsubscribe();
39
+ this.layersVisibility$$ = undefined;
40
+ }
41
+ }
42
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayerLegendListBindingDirective, deps: [{ token: i1.LayerLegendListComponent, self: true }, { token: i2.MapService }], target: i0.ɵɵFactoryTarget.Directive });
43
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: LayerLegendListBindingDirective, isStandalone: true, selector: "[igoLayerLegendListBinding]", ngImport: i0 });
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayerLegendListBindingDirective, decorators: [{
46
+ type: Directive,
47
+ args: [{
48
+ selector: '[igoLayerLegendListBinding]',
49
+ standalone: true
50
+ }]
51
+ }], ctorParameters: () => [{ type: i1.LayerLegendListComponent, decorators: [{
52
+ type: Self
53
+ }] }, { type: i2.MapService }] });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItbGVnZW5kLWxpc3QtYmluZGluZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9sYXllci9sYXllci1sZWdlbmQtbGlzdC9sYXllci1sZWdlbmQtbGlzdC1iaW5kaW5nLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFnQixhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7O0FBTXpFLE1BQU0sT0FBTywrQkFBK0I7SUFPaEM7SUFORixTQUFTLENBQTJCO0lBQ3BDLDBCQUEwQixDQUFlO0lBQ2pELGtCQUFrQixDQUFlO0lBRWpDLFlBQ1UsU0FBbUMsRUFDbkMsVUFBc0I7UUFBdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUU5QixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQsUUFBUTtRQUNOLHdCQUF3QjtRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLDBCQUEwQixHQUFHLGFBQWEsQ0FBQztZQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJO1lBQzdDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVc7U0FDcEQsQ0FBQzthQUNDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdEIsU0FBUyxDQUFDLENBQUMsS0FBMkIsRUFBRSxFQUFFO1lBQ3pDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDNUMsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUM7WUFDOUQsQ0FBQyxDQUFZLENBQUM7WUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUM7WUFFcEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGFBQWEsQ0FDckMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUMzQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7d0dBdENVLCtCQUErQjs0RkFBL0IsK0JBQStCOzs0RkFBL0IsK0JBQStCO2tCQUozQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSw2QkFBNkI7b0JBQ3ZDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7MEJBT0ksSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT25EZXN0cm95LCBPbkluaXQsIFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE1hcFNlcnZpY2UgfSBmcm9tICcuLi8uLi9tYXAvc2hhcmVkL21hcC5zZXJ2aWNlJztcbmltcG9ydCB7IEFueUxheWVyIH0gZnJvbSAnLi4vc2hhcmVkL2xheWVycy9hbnktbGF5ZXInO1xuaW1wb3J0IHsgTGF5ZXIgfSBmcm9tICcuLi9zaGFyZWQvbGF5ZXJzL2xheWVyJztcbmltcG9ydCB7IGlzTGF5ZXJJdGVtIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgTGF5ZXJMZWdlbmRMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9sYXllci1sZWdlbmQtbGlzdC5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbaWdvTGF5ZXJMZWdlbmRMaXN0QmluZGluZ10nLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIExheWVyTGVnZW5kTGlzdEJpbmRpbmdEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgY29tcG9uZW50OiBMYXllckxlZ2VuZExpc3RDb21wb25lbnQ7XG4gIHByaXZhdGUgbGF5ZXJzT3JSZXNvbHV0aW9uQ2hhbmdlJCQ6IFN1YnNjcmlwdGlvbjtcbiAgbGF5ZXJzVmlzaWJpbGl0eSQkOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNlbGYoKSBjb21wb25lbnQ6IExheWVyTGVnZW5kTGlzdENvbXBvbmVudCxcbiAgICBwcml2YXRlIG1hcFNlcnZpY2U6IE1hcFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBPdmVycmlkZSBpbnB1dCBsYXllcnNcbiAgICB0aGlzLmNvbXBvbmVudC5sYXllcnMgPSBbXTtcbiAgICB0aGlzLmxheWVyc09yUmVzb2x1dGlvbkNoYW5nZSQkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm1hcFNlcnZpY2UuZ2V0TWFwKCkubGF5ZXJDb250cm9sbGVyLmFsbCQsXG4gICAgICB0aGlzLm1hcFNlcnZpY2UuZ2V0TWFwKCkudmlld0NvbnRyb2xsZXIucmVzb2x1dGlvbiRcbiAgICBdKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwKSlcbiAgICAgIC5zdWJzY3JpYmUoKGJ1bmNoOiBbQW55TGF5ZXJbXSwgbnVtYmVyXSkgPT4ge1xuICAgICAgICBjb25zdCBzaG93bkxheWVycyA9IGJ1bmNoWzBdLmZpbHRlcigobGF5ZXIpID0+IHtcbiAgICAgICAgICByZXR1cm4gaXNMYXllckl0ZW0obGF5ZXIpICYmIGxheWVyLnNob3dJbkxheWVyTGlzdCA9PT0gdHJ1ZTtcbiAgICAgICAgfSkgYXMgTGF5ZXJbXTtcbiAgICAgICAgdGhpcy5jb21wb25lbnQubGF5ZXJzID0gc2hvd25MYXllcnM7XG5cbiAgICAgICAgdGhpcy5sYXllcnNWaXNpYmlsaXR5JCQgPSBjb21iaW5lTGF0ZXN0KFxuICAgICAgICAgIHNob3duTGF5ZXJzLm1hcCgobGF5ZXIpID0+IGxheWVyLnZpc2libGUkKVxuICAgICAgICApLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNvbXBvbmVudC5jaGFuZ2UkLm5leHQoKSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMubGF5ZXJzT3JSZXNvbHV0aW9uQ2hhbmdlJCQudW5zdWJzY3JpYmUoKTtcbiAgICBpZiAodGhpcy5sYXllcnNWaXNpYmlsaXR5JCQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5sYXllcnNWaXNpYmlsaXR5JCQudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMubGF5ZXJzVmlzaWJpbGl0eSQkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl19