@igo2/integration 1.15.4 → 16.0.0-rc.1

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 (275) hide show
  1. package/{esm2020 → esm2022}/igo2-integration.mjs +4 -4
  2. package/esm2022/lib/about/about-tool/about-tool.component.mjs +205 -0
  3. package/{esm2020 → esm2022}/lib/about/about-tool/index.mjs +2 -2
  4. package/{esm2020 → esm2022}/lib/about/about.module.mjs +55 -55
  5. package/{esm2020 → esm2022}/lib/about/index.mjs +2 -2
  6. package/esm2022/lib/analytics/analytics-listener.service.mjs +156 -0
  7. package/{esm2020 → esm2022}/lib/analytics/analytics.module.mjs +16 -16
  8. package/{esm2020 → esm2022}/lib/analytics/index.mjs +2 -2
  9. package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +133 -0
  10. package/esm2022/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +24 -0
  11. package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +103 -0
  12. package/esm2022/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +24 -0
  13. package/esm2022/lib/catalog/catalog.module.mjs +19 -0
  14. package/esm2022/lib/catalog/catalog.state.mjs +58 -0
  15. package/{esm2020 → esm2022}/lib/catalog/index.mjs +6 -6
  16. package/esm2022/lib/context/context-editor-tool/context-editor-tool.component.mjs +36 -0
  17. package/esm2022/lib/context/context-manager-tool/context-manager-tool.component.mjs +51 -0
  18. package/esm2022/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +24 -0
  19. package/esm2022/lib/context/context-share-tool/context-share-tool.component.mjs +43 -0
  20. package/{esm2020 → esm2022}/lib/context/context.module.mjs +39 -39
  21. package/esm2022/lib/context/context.state.mjs +96 -0
  22. package/{esm2020 → esm2022}/lib/context/index.mjs +6 -6
  23. package/esm2022/lib/directions/directions-tool/directions-tool.component.mjs +116 -0
  24. package/{esm2020 → esm2022}/lib/directions/directions-tool/index.mjs +2 -2
  25. package/{esm2020 → esm2022}/lib/directions/directions.module.mjs +26 -26
  26. package/esm2022/lib/directions/directions.state.mjs +69 -0
  27. package/{esm2020 → esm2022}/lib/directions/index.mjs +3 -3
  28. package/esm2022/lib/draw/draw.module.mjs +18 -0
  29. package/esm2022/lib/draw/draw.state.mjs +42 -0
  30. package/esm2022/lib/draw/drawing-tool/drawing-tool.component.mjs +77 -0
  31. package/esm2022/lib/draw/drawing-tool/drawing-tool.module.mjs +23 -0
  32. package/{esm2020 → esm2022}/lib/draw/index.mjs +2 -2
  33. package/{esm2020 → esm2022}/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.mjs +10 -10
  34. package/esm2022/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +46 -0
  35. package/{esm2020 → esm2022}/lib/filter/active-ogc-filter-tool/index.mjs +2 -2
  36. package/{esm2020 → esm2022}/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.mjs +10 -10
  37. package/esm2022/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +46 -0
  38. package/{esm2020 → esm2022}/lib/filter/active-time-filter-tool/index.mjs +2 -2
  39. package/{esm2020 → esm2022}/lib/filter/filter.module.mjs +51 -51
  40. package/{esm2020 → esm2022}/lib/filter/index.mjs +6 -6
  41. package/{esm2020 → esm2022}/lib/filter/ogc-filter-tool/index.mjs +2 -2
  42. package/esm2022/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +25 -0
  43. package/{esm2020 → esm2022}/lib/filter/spatial-filter-tool/index.mjs +2 -2
  44. package/esm2022/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +605 -0
  45. package/{esm2020 → esm2022}/lib/filter/time-filter-tool/index.mjs +2 -2
  46. package/esm2022/lib/filter/time-filter-tool/time-filter-tool.component.mjs +25 -0
  47. package/esm2022/lib/import-export/import-export-tool/import-export-tool.component.mjs +154 -0
  48. package/{esm2020 → esm2022}/lib/import-export/import-export-tool/index.mjs +2 -2
  49. package/{esm2020 → esm2022}/lib/import-export/import-export.module.mjs +51 -51
  50. package/esm2022/lib/import-export/import-export.state.mjs +39 -0
  51. package/{esm2020 → esm2022}/lib/import-export/index.mjs +3 -3
  52. package/{esm2020 → esm2022}/lib/integration.module.mjs +72 -72
  53. package/esm2022/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +524 -0
  54. package/esm2022/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +92 -0
  55. package/esm2022/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +231 -0
  56. package/{esm2020 → esm2022}/lib/map/advanced-map-tool/index.mjs +2 -2
  57. package/{esm2020 → esm2022}/lib/map/index.mjs +9 -9
  58. package/esm2022/lib/map/layer-list-tool.state.mjs +40 -0
  59. package/{esm2020 → esm2022}/lib/map/map-details-tool/index.mjs +2 -2
  60. package/esm2022/lib/map/map-details-tool/map-details-tool.component.mjs +269 -0
  61. package/{esm2020 → esm2022}/lib/map/map-legend/index.mjs +2 -2
  62. package/esm2022/lib/map/map-legend/map-legend-tool.component.mjs +285 -0
  63. package/{esm2020 → esm2022}/lib/map/map-proximity-tool/index.mjs +2 -2
  64. package/esm2022/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +220 -0
  65. package/esm2022/lib/map/map-proximity.state.mjs +180 -0
  66. package/{esm2020 → esm2022}/lib/map/map-tool/index.mjs +2 -2
  67. package/esm2022/lib/map/map-tool/map-tool.component.mjs +140 -0
  68. package/{esm2020 → esm2022}/lib/map/map-tools/index.mjs +2 -2
  69. package/esm2022/lib/map/map-tools/map-tools.component.mjs +521 -0
  70. package/esm2022/lib/map/map.module.mjs +168 -0
  71. package/esm2022/lib/map/map.state.mjs +56 -0
  72. package/{esm2020 → esm2022}/lib/measure/index.mjs +4 -4
  73. package/esm2022/lib/measure/measure.module.mjs +18 -0
  74. package/esm2022/lib/measure/measure.state.mjs +40 -0
  75. package/esm2022/lib/measure/measurer-tool/measurer-tool.component.mjs +54 -0
  76. package/{esm2020 → esm2022}/lib/measure/measurer-tool/measurer-tool.module.mjs +23 -25
  77. package/{esm2020 → esm2022}/lib/print/index.mjs +2 -2
  78. package/{esm2020 → esm2022}/lib/print/print-tool/index.mjs +2 -2
  79. package/esm2022/lib/print/print-tool/print-tool.component.mjs +35 -0
  80. package/{esm2020 → esm2022}/lib/print/print.module.mjs +26 -26
  81. package/{esm2020 → esm2022}/lib/search/index.mjs +7 -7
  82. package/esm2022/lib/search/query.state.mjs +48 -0
  83. package/esm2022/lib/search/search-bar/search-bar-binding.directive.mjs +72 -0
  84. package/{esm2020 → esm2022}/lib/search/search-bar/search-bar.module.mjs +22 -22
  85. package/esm2022/lib/search/search-results-tool/search-results-tool.component.mjs +631 -0
  86. package/esm2022/lib/search/search-results-tool/search-results-tool.module.mjs +65 -0
  87. package/esm2022/lib/search/search.module.mjs +19 -0
  88. package/esm2022/lib/search/search.state.mjs +145 -0
  89. package/{esm2020 → esm2022}/lib/storage/index.mjs +2 -2
  90. package/{esm2020 → esm2022}/lib/storage/storage.module.mjs +16 -16
  91. package/esm2022/lib/storage/storage.state.mjs +25 -0
  92. package/{esm2020 → esm2022}/lib/tool/index.mjs +2 -2
  93. package/{esm2020 → esm2022}/lib/tool/tool.module.mjs +16 -16
  94. package/esm2022/lib/tool/tool.state.mjs +56 -0
  95. package/{esm2020 → esm2022}/lib/workspace/index.mjs +4 -4
  96. package/esm2022/lib/workspace/shared/edition-actions.service.mjs +74 -0
  97. package/esm2022/lib/workspace/shared/feature-actions.service.mjs +66 -0
  98. package/{esm2020 → esm2022}/lib/workspace/shared/index.mjs +3 -3
  99. package/esm2022/lib/workspace/shared/wfs-actions.service.mjs +76 -0
  100. package/esm2022/lib/workspace/shared/workspace.utils.mjs +162 -0
  101. package/{esm2020 → esm2022}/lib/workspace/workspace-button/index.mjs +2 -2
  102. package/esm2022/lib/workspace/workspace-button/workspace-button.component.mjs +76 -0
  103. package/esm2022/lib/workspace/workspace.module.mjs +38 -0
  104. package/esm2022/lib/workspace/workspace.state.mjs +204 -0
  105. package/{esm2020 → esm2022}/public_api.mjs +35 -35
  106. package/{fesm2020 → fesm2022}/igo2-integration.mjs +6522 -6139
  107. package/fesm2022/igo2-integration.mjs.map +1 -0
  108. package/index.d.ts +5 -5
  109. package/lib/about/about-tool/about-tool.component.d.ts +34 -34
  110. package/lib/about/about-tool/index.d.ts +1 -1
  111. package/lib/about/about.module.d.ts +16 -16
  112. package/lib/about/index.d.ts +1 -1
  113. package/lib/analytics/analytics-listener.service.d.ts +33 -33
  114. package/lib/analytics/analytics.module.d.ts +6 -6
  115. package/lib/analytics/index.d.ts +1 -1
  116. package/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.d.ts +57 -57
  117. package/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.d.ts +12 -12
  118. package/lib/catalog/catalog-library-tool/catalog-library-tool.component.d.ts +50 -50
  119. package/lib/catalog/catalog-library-tool/catalog-library-tool.module.d.ts +12 -12
  120. package/lib/catalog/catalog.module.d.ts +8 -8
  121. package/lib/catalog/catalog.state.d.ts +37 -37
  122. package/lib/catalog/index.d.ts +5 -5
  123. package/lib/context/context-editor-tool/context-editor-tool.component.d.ts +9 -9
  124. package/lib/context/context-manager-tool/context-manager-tool.component.d.ts +15 -15
  125. package/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.d.ts +5 -5
  126. package/lib/context/context-share-tool/context-share-tool.component.d.ts +13 -13
  127. package/lib/context/context.module.d.ts +11 -11
  128. package/lib/context/context.state.d.ts +37 -37
  129. package/lib/context/index.d.ts +5 -5
  130. package/lib/directions/directions-tool/directions-tool.component.d.ts +54 -54
  131. package/lib/directions/directions-tool/index.d.ts +1 -1
  132. package/lib/directions/directions.module.d.ts +10 -10
  133. package/lib/directions/directions.state.d.ts +28 -28
  134. package/lib/directions/index.d.ts +2 -2
  135. package/lib/draw/draw.module.d.ts +8 -8
  136. package/lib/draw/draw.state.d.ts +16 -16
  137. package/lib/draw/drawing-tool/drawing-tool.component.d.ts +31 -31
  138. package/lib/draw/drawing-tool/drawing-tool.module.d.ts +11 -0
  139. package/lib/draw/index.d.ts +2 -2
  140. package/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.animation.d.ts +2 -2
  141. package/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.d.ts +12 -12
  142. package/lib/filter/active-ogc-filter-tool/index.d.ts +1 -1
  143. package/lib/filter/active-time-filter-tool/active-time-filter-tool.animation.d.ts +2 -2
  144. package/lib/filter/active-time-filter-tool/active-time-filter-tool.component.d.ts +12 -12
  145. package/lib/filter/active-time-filter-tool/index.d.ts +1 -1
  146. package/lib/filter/filter.module.d.ts +15 -15
  147. package/lib/filter/index.d.ts +5 -5
  148. package/lib/filter/ogc-filter-tool/index.d.ts +1 -1
  149. package/lib/filter/ogc-filter-tool/ogc-filter-tool.component.d.ts +6 -6
  150. package/lib/filter/spatial-filter-tool/index.d.ts +1 -1
  151. package/lib/filter/spatial-filter-tool/spatial-filter-tool.component.d.ts +82 -82
  152. package/lib/filter/time-filter-tool/index.d.ts +1 -1
  153. package/lib/filter/time-filter-tool/time-filter-tool.component.d.ts +6 -6
  154. package/lib/import-export/import-export-tool/import-export-tool.component.d.ts +33 -33
  155. package/lib/import-export/import-export-tool/index.d.ts +1 -1
  156. package/lib/import-export/import-export.module.d.ts +15 -15
  157. package/lib/import-export/import-export.state.d.ts +24 -24
  158. package/lib/import-export/index.d.ts +2 -2
  159. package/lib/integration.module.d.ts +20 -20
  160. package/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.d.ts +97 -97
  161. package/lib/map/advanced-map-tool/advanced-map-tool.component.d.ts +12 -12
  162. package/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.d.ts +65 -65
  163. package/lib/map/advanced-map-tool/index.d.ts +1 -1
  164. package/lib/map/index.d.ts +8 -8
  165. package/lib/map/layer-list-tool.state.d.ts +19 -19
  166. package/lib/map/map-details-tool/index.d.ts +1 -1
  167. package/lib/map/map-details-tool/map-details-tool.component.d.ts +38 -38
  168. package/lib/map/map-legend/index.d.ts +1 -1
  169. package/lib/map/map-legend/map-legend-tool.component.d.ts +40 -40
  170. package/lib/map/map-proximity-tool/index.d.ts +1 -1
  171. package/lib/map/map-proximity-tool/map-proximity-tool.component.d.ts +36 -36
  172. package/lib/map/map-proximity.state.d.ts +31 -31
  173. package/lib/map/map-tool/index.d.ts +1 -1
  174. package/lib/map/map-tool/map-tool.component.d.ts +27 -27
  175. package/lib/map/map-tools/index.d.ts +1 -1
  176. package/lib/map/map-tools/map-tools.component.d.ts +66 -66
  177. package/lib/map/map.module.d.ts +38 -38
  178. package/lib/map/map.state.d.ts +24 -24
  179. package/lib/measure/index.d.ts +3 -3
  180. package/lib/measure/measure.module.d.ts +7 -7
  181. package/lib/measure/measure.state.d.ts +16 -16
  182. package/lib/measure/measurer-tool/measurer-tool.component.d.ts +24 -24
  183. package/lib/measure/measurer-tool/measurer-tool.module.d.ts +11 -11
  184. package/lib/print/index.d.ts +1 -1
  185. package/lib/print/print-tool/index.d.ts +1 -1
  186. package/lib/print/print-tool/print-tool.component.d.ts +10 -10
  187. package/lib/print/print.module.d.ts +10 -10
  188. package/lib/search/index.d.ts +6 -6
  189. package/lib/search/query.state.d.ts +26 -20
  190. package/lib/search/search-bar/search-bar-binding.directive.d.ts +20 -20
  191. package/lib/search/search-bar/search-bar.module.d.ts +11 -11
  192. package/lib/search/search-results-tool/search-results-tool.component.d.ts +100 -100
  193. package/lib/search/search-results-tool/search-results-tool.module.d.ts +18 -18
  194. package/lib/search/search.module.d.ts +8 -8
  195. package/lib/search/search.state.d.ts +62 -60
  196. package/lib/storage/index.d.ts +1 -1
  197. package/lib/storage/storage.module.d.ts +6 -6
  198. package/lib/storage/storage.state.d.ts +12 -12
  199. package/lib/tool/index.d.ts +1 -1
  200. package/lib/tool/tool.module.d.ts +6 -6
  201. package/lib/tool/tool.state.d.ts +22 -22
  202. package/lib/workspace/index.d.ts +3 -3
  203. package/lib/workspace/shared/edition-actions.service.d.ts +28 -26
  204. package/lib/workspace/shared/feature-actions.service.d.ts +27 -25
  205. package/lib/workspace/shared/index.d.ts +2 -2
  206. package/lib/workspace/shared/wfs-actions.service.d.ts +29 -27
  207. package/lib/workspace/shared/workspace.utils.d.ts +9 -2
  208. package/lib/workspace/workspace-button/index.d.ts +1 -1
  209. package/lib/workspace/workspace-button/workspace-button.component.d.ts +21 -21
  210. package/lib/workspace/workspace.module.d.ts +12 -12
  211. package/lib/workspace/workspace.state.d.ts +63 -63
  212. package/locale/en.integration.json +126 -0
  213. package/locale/fr.integration.json +126 -0
  214. package/package.json +14 -18
  215. package/public_api.d.ts +31 -31
  216. package/esm2020/lib/about/about-tool/about-tool.component.mjs +0 -185
  217. package/esm2020/lib/analytics/analytics-listener.service.mjs +0 -127
  218. package/esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.component.mjs +0 -113
  219. package/esm2020/lib/catalog/catalog-browser-tool/catalog-browser-tool.module.mjs +0 -29
  220. package/esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.component.mjs +0 -89
  221. package/esm2020/lib/catalog/catalog-library-tool/catalog-library-tool.module.mjs +0 -29
  222. package/esm2020/lib/catalog/catalog.module.mjs +0 -24
  223. package/esm2020/lib/catalog/catalog.state.mjs +0 -54
  224. package/esm2020/lib/context/context-editor-tool/context-editor-tool.component.mjs +0 -34
  225. package/esm2020/lib/context/context-manager-tool/context-manager-tool.component.mjs +0 -44
  226. package/esm2020/lib/context/context-permission-manager-tool/context-permission-manager-tool.component.mjs +0 -25
  227. package/esm2020/lib/context/context-share-tool/context-share-tool.component.mjs +0 -34
  228. package/esm2020/lib/context/context.state.mjs +0 -88
  229. package/esm2020/lib/directions/directions-tool/directions-tool.component.mjs +0 -84
  230. package/esm2020/lib/directions/directions.state.mjs +0 -64
  231. package/esm2020/lib/draw/draw.module.mjs +0 -21
  232. package/esm2020/lib/draw/draw.state.mjs +0 -39
  233. package/esm2020/lib/draw/drawing-tool/drawing-tool.component.mjs +0 -72
  234. package/esm2020/lib/filter/active-ogc-filter-tool/active-ogc-filter-tool.component.mjs +0 -44
  235. package/esm2020/lib/filter/active-time-filter-tool/active-time-filter-tool.component.mjs +0 -44
  236. package/esm2020/lib/filter/ogc-filter-tool/ogc-filter-tool.component.mjs +0 -25
  237. package/esm2020/lib/filter/spatial-filter-tool/spatial-filter-tool.component.mjs +0 -535
  238. package/esm2020/lib/filter/time-filter-tool/time-filter-tool.component.mjs +0 -25
  239. package/esm2020/lib/import-export/import-export-tool/import-export-tool.component.mjs +0 -141
  240. package/esm2020/lib/import-export/import-export.state.mjs +0 -41
  241. package/esm2020/lib/map/advanced-map-tool/advanced-coordinates/advanced-coordinates.component.mjs +0 -472
  242. package/esm2020/lib/map/advanced-map-tool/advanced-map-tool.component.mjs +0 -89
  243. package/esm2020/lib/map/advanced-map-tool/advanced-swipe/advanced-swipe.component.mjs +0 -218
  244. package/esm2020/lib/map/layer-list-tool.state.mjs +0 -42
  245. package/esm2020/lib/map/map-details-tool/map-details-tool.component.mjs +0 -256
  246. package/esm2020/lib/map/map-legend/map-legend-tool.component.mjs +0 -275
  247. package/esm2020/lib/map/map-proximity-tool/map-proximity-tool.component.mjs +0 -203
  248. package/esm2020/lib/map/map-proximity.state.mjs +0 -167
  249. package/esm2020/lib/map/map-tool/map-tool.component.mjs +0 -130
  250. package/esm2020/lib/map/map-tools/map-tools.component.mjs +0 -495
  251. package/esm2020/lib/map/map.module.mjs +0 -144
  252. package/esm2020/lib/map/map.state.mjs +0 -47
  253. package/esm2020/lib/measure/measure.module.mjs +0 -20
  254. package/esm2020/lib/measure/measure.state.mjs +0 -35
  255. package/esm2020/lib/measure/measurer-tool/measurer-tool.component.mjs +0 -45
  256. package/esm2020/lib/print/print-tool/print-tool.component.mjs +0 -33
  257. package/esm2020/lib/search/query.state.mjs +0 -34
  258. package/esm2020/lib/search/search-bar/search-bar-binding.directive.mjs +0 -61
  259. package/esm2020/lib/search/search-results-tool/search-results-tool.component.mjs +0 -593
  260. package/esm2020/lib/search/search-results-tool/search-results-tool.module.mjs +0 -65
  261. package/esm2020/lib/search/search.module.mjs +0 -24
  262. package/esm2020/lib/search/search.state.mjs +0 -132
  263. package/esm2020/lib/storage/storage.state.mjs +0 -23
  264. package/esm2020/lib/tool/tool.state.mjs +0 -52
  265. package/esm2020/lib/workspace/shared/edition-actions.service.mjs +0 -156
  266. package/esm2020/lib/workspace/shared/feature-actions.service.mjs +0 -144
  267. package/esm2020/lib/workspace/shared/wfs-actions.service.mjs +0 -158
  268. package/esm2020/lib/workspace/shared/workspace.utils.mjs +0 -7
  269. package/esm2020/lib/workspace/workspace-button/workspace-button.component.mjs +0 -69
  270. package/esm2020/lib/workspace/workspace.module.mjs +0 -37
  271. package/esm2020/lib/workspace/workspace.state.mjs +0 -188
  272. package/fesm2015/igo2-integration.mjs +0 -6759
  273. package/fesm2015/igo2-integration.mjs.map +0 -1
  274. package/fesm2020/igo2-integration.mjs.map +0 -1
  275. package/ngcc.config.js +0 -3
@@ -0,0 +1,180 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { FeatureStore, featureFromOl, measureOlGeometryLength, FEATURE, roundCoordTo } from '@igo2/geo';
3
+ import { BehaviorSubject, combineLatest, interval } from 'rxjs';
4
+ import { debounceTime } from 'rxjs/operators';
5
+ import { MapState } from '../map/map.state';
6
+ import GeoJSON from 'ol/format/GeoJSON';
7
+ import { uuid } from '@igo2/utils';
8
+ import olLayerVector from 'ol/layer/Vector';
9
+ import olLineString from 'ol/geom/LineString';
10
+ import * as olProj from 'ol/proj';
11
+ import { StorageService } from '@igo2/core';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "../map/map.state";
14
+ import * as i2 from "@igo2/core";
15
+ /**
16
+ * Service that holds the state of the direction module
17
+ */
18
+ export class MapProximityState {
19
+ mapState;
20
+ storageService;
21
+ defaultProximityRadiusValue = 30;
22
+ enabled$ = new BehaviorSubject(false);
23
+ proximityRadiusValue$;
24
+ proximitylocationType$ = new BehaviorSubject('geolocation');
25
+ proximityFeatureStore;
26
+ subs$$ = [];
27
+ currentPositionCoordinate$ = new BehaviorSubject(undefined);
28
+ get map() {
29
+ return this.mapState.map;
30
+ }
31
+ constructor(mapState, storageService) {
32
+ this.mapState = mapState;
33
+ this.storageService = storageService;
34
+ this.proximityFeatureStore = new FeatureStore([], {
35
+ map: this.mapState.map
36
+ });
37
+ this.proximityRadiusValue$ = new BehaviorSubject(this.storageService.get('mapProximityRadius') ||
38
+ this.defaultProximityRadiusValue);
39
+ this.mapState.map.ol.once('rendercomplete', () => {
40
+ this.subscribeProximityMonitor();
41
+ });
42
+ }
43
+ subscribeProximityMonitor() {
44
+ this.subs$$.push(combineLatest([
45
+ this.enabled$,
46
+ this.proximitylocationType$,
47
+ this.proximityRadiusValue$,
48
+ interval(5000),
49
+ this.map.geolocationController.position$
50
+ ])
51
+ .pipe(debounceTime(750))
52
+ .subscribe((bunch) => {
53
+ this.proximityFeatureStore.clear();
54
+ const enabled = bunch[0];
55
+ const layers = this.map.layers;
56
+ const currentPos = this.map.geolocationController.position$.value;
57
+ const locationType = bunch[1];
58
+ const proximityRadiusValue = bunch[2];
59
+ this.storageService.set('mapProximityRadius', proximityRadiusValue || this.defaultProximityRadiusValue);
60
+ if (!enabled) {
61
+ return;
62
+ }
63
+ let coord;
64
+ if (locationType === 'geolocation') {
65
+ if (!currentPos || !currentPos.position) {
66
+ return;
67
+ }
68
+ coord = olProj.transform(currentPos.position, currentPos.projection, this.map.projection);
69
+ this.map.mapCenter$.next(false);
70
+ }
71
+ else {
72
+ coord = this.map.viewController.getCenter();
73
+ this.map.mapCenter$.next(true);
74
+ }
75
+ const coordLonLat = olProj.transform(coord, this.map.projection, 'EPSG:4269');
76
+ const roundedCoordLonLat = roundCoordTo(coordLonLat, 6);
77
+ this.currentPositionCoordinate$.next(roundedCoordLonLat);
78
+ const layersToMonitor = layers.filter((layer) => layer.ol instanceof olLayerVector &&
79
+ layer.dataSource.options.queryable &&
80
+ layer.visible &&
81
+ layer.isInResolutionsRange);
82
+ layersToMonitor.map((layerToMonitor) => {
83
+ const layerSource = layerToMonitor.ol.getSource();
84
+ // Mostly for polygon features.
85
+ const olFeaturesAtCoordinate = layerSource.getFeaturesAtCoordinate(coord);
86
+ if (olFeaturesAtCoordinate && olFeaturesAtCoordinate.length) {
87
+ olFeaturesAtCoordinate.map((olFeatureAtCoordinate) => {
88
+ const featureAtThisPosition = featureFromOl(olFeatureAtCoordinate, this.map.projection);
89
+ let title = this.getQueryTitle(featureAtThisPosition, layerToMonitor);
90
+ // todo handle imported layers without querytitle? prompt title or detect first column?
91
+ this.addFeatureToStore(layerToMonitor, coord, featureAtThisPosition, title, 0);
92
+ });
93
+ }
94
+ else {
95
+ // compute proximity for remaining sources
96
+ const closestOlFeature = layerSource.getClosestFeatureToCoordinate(coord);
97
+ if (closestOlFeature) {
98
+ const closestOlGeom = closestOlFeature.getGeometry();
99
+ const closestFeature = featureFromOl(closestOlFeature, this.map.projection);
100
+ const geometryClosestPoint = closestOlGeom.getClosestPoint(coord);
101
+ const linebetween = new olLineString([
102
+ coord,
103
+ geometryClosestPoint
104
+ ]);
105
+ const lineLength = measureOlGeometryLength(linebetween, 'EPSG:3857');
106
+ if (lineLength <= proximityRadiusValue) {
107
+ let title = this.getQueryTitle(closestFeature, layerToMonitor);
108
+ // todo handle imported layers without querytitle? prompt title or detect first column?
109
+ this.addFeatureToStore(layerToMonitor, coord, closestFeature, title, lineLength);
110
+ }
111
+ }
112
+ }
113
+ });
114
+ }));
115
+ }
116
+ /**
117
+ * Add a feature with proximity properties to the store
118
+ * @internal
119
+ */
120
+ addFeatureToStore(layer, coordFromCalculatedDistance, feature, title, distance) {
121
+ const featureId = uuid();
122
+ const projection = this.map.ol.getView().getProjection();
123
+ const olGeometry = feature.ol.getGeometry();
124
+ const geometry = new GeoJSON().writeGeometryObject(olGeometry, {
125
+ featureProjection: projection,
126
+ dataProjection: projection
127
+ });
128
+ this.proximityFeatureStore.update({
129
+ type: FEATURE,
130
+ geometry,
131
+ projection: projection.getCode(),
132
+ properties: {
133
+ ...feature.properties,
134
+ ...{
135
+ id: featureId,
136
+ element: title,
137
+ distance,
138
+ coordFromCalculatedDistance,
139
+ layerSrcId: layer.id,
140
+ layerSrcTitle: layer.title
141
+ }
142
+ },
143
+ meta: {
144
+ id: featureId
145
+ }
146
+ });
147
+ }
148
+ getQueryTitle(feature, layer) {
149
+ let title;
150
+ if (layer.options?.source?.options) {
151
+ const dataSourceOptions = layer.options.source
152
+ .options;
153
+ if (dataSourceOptions.queryTitle) {
154
+ title = this.getLabelMatch(feature, dataSourceOptions.queryTitle);
155
+ }
156
+ }
157
+ return title;
158
+ }
159
+ getLabelMatch(feature, labelMatch) {
160
+ let label = labelMatch;
161
+ const labelToGet = Array.from(labelMatch.matchAll(/\$\{([^\{\}]+)\}/g));
162
+ labelToGet.forEach((v) => {
163
+ label = label.replace(v[0], feature.properties[v[1]]);
164
+ });
165
+ // Nothing done? check feature's attribute
166
+ if (labelToGet.length === 0 && label === labelMatch) {
167
+ label = feature.properties[labelMatch] || labelMatch;
168
+ }
169
+ return label;
170
+ }
171
+ static ɵfac = function MapProximityState_Factory(t) { return new (t || MapProximityState)(i0.ɵɵinject(i1.MapState), i0.ɵɵinject(i2.StorageService)); };
172
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MapProximityState, factory: MapProximityState.ɵfac, providedIn: 'root' });
173
+ }
174
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapProximityState, [{
175
+ type: Injectable,
176
+ args: [{
177
+ providedIn: 'root'
178
+ }]
179
+ }], function () { return [{ type: i1.MapState }, { type: i2.StorageService }]; }, null); })();
180
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXByb3hpbWl0eS5zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2ludGVncmF0aW9uL3NyYy9saWIvbWFwL21hcC1wcm94aW1pdHkuc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQ0wsWUFBWSxFQUdaLGFBQWEsRUFDYix1QkFBdUIsRUFHdkIsT0FBTyxFQUNQLFlBQVksRUFHYixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsT0FBTyxPQUFPLE1BQU0sbUJBQW1CLENBQUM7QUFDeEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuQyxPQUFPLGFBQWEsTUFBTSxpQkFBaUIsQ0FBQztBQUc1QyxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUM5QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDOzs7O0FBQzVDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjtJQW1CbEI7SUFDQTtJQW5CRiwyQkFBMkIsR0FBVyxFQUFFLENBQUM7SUFFMUMsUUFBUSxHQUE2QixJQUFJLGVBQWUsQ0FDN0QsS0FBSyxDQUNOLENBQUM7SUFDSyxxQkFBcUIsQ0FBMEI7SUFDL0Msc0JBQXNCLEdBQzNCLElBQUksZUFBZSxDQUFTLGFBQWEsQ0FBQyxDQUFDO0lBQ3RDLHFCQUFxQixDQUF3QjtJQUM1QyxNQUFNLEdBQW1CLEVBQUUsQ0FBQztJQUM3QiwwQkFBMEIsR0FDL0IsSUFBSSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFakMsSUFBSSxHQUFHO1FBQ0wsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFDVSxRQUFrQixFQUNsQixjQUE4QjtRQUQ5QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUV0QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxZQUFZLENBQVUsRUFBRSxFQUFFO1lBQ3pELEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUc7U0FDdkIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksZUFBZSxDQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBWTtZQUN2RCxJQUFJLENBQUMsMkJBQTJCLENBQ25DLENBQUM7UUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtZQUMvQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2QsYUFBYSxDQUFDO1lBQ1osSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsc0JBQXNCO1lBQzNCLElBQUksQ0FBQyxxQkFBcUI7WUFDMUIsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNkLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsU0FBUztTQUN6QyxDQUFDO2FBQ0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN2QixTQUFTLENBQ1IsQ0FBQyxLQUE2RCxFQUFFLEVBQUU7WUFDaEUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25DLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztZQUMvQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDbEUsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUNyQixvQkFBb0IsRUFDcEIsb0JBQW9CLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUN6RCxDQUFDO1lBRUYsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDWixPQUFPO2FBQ1I7WUFFRCxJQUFJLEtBQWUsQ0FBQztZQUNwQixJQUFJLFlBQVksS0FBSyxhQUFhLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO29CQUN2QyxPQUFPO2lCQUNSO2dCQUVELEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUN0QixVQUFVLENBQUMsUUFBUSxFQUNuQixVQUFVLENBQUMsVUFBVSxFQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FDcEIsQ0FBQztnQkFDRixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDakM7aUJBQU07Z0JBQ0wsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDaEM7WUFFRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUNsQyxLQUFLLEVBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQ25CLFdBQVcsQ0FDWixDQUFDO1lBQ0YsTUFBTSxrQkFBa0IsR0FBRyxZQUFZLENBQ3JDLFdBQStCLEVBQy9CLENBQUMsQ0FDRixDQUFDO1lBQ0YsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBRXpELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ25DLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDUixLQUFLLENBQUMsRUFBRSxZQUFZLGFBQWE7Z0JBQ2hDLEtBQUssQ0FBQyxVQUFrQyxDQUFDLE9BQU8sQ0FBQyxTQUFTO2dCQUMzRCxLQUFLLENBQUMsT0FBTztnQkFDYixLQUFLLENBQUMsb0JBQW9CLENBQzdCLENBQUM7WUFFRixlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7Z0JBQ3JDLE1BQU0sV0FBVyxHQUNmLGNBQWMsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUE4QixDQUFDO2dCQUU1RCwrQkFBK0I7Z0JBQy9CLE1BQU0sc0JBQXNCLEdBQzFCLFdBQVcsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDN0MsSUFBSSxzQkFBc0IsSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLEVBQUU7b0JBQzNELHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLEVBQUU7d0JBQ25ELE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUN6QyxxQkFBcUIsRUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQ3BCLENBQUM7d0JBQ0YsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FDNUIscUJBQXFCLEVBQ3JCLGNBQWMsQ0FDZixDQUFDO3dCQUNGLHVGQUF1Rjt3QkFDdkYsSUFBSSxDQUFDLGlCQUFpQixDQUNwQixjQUFjLEVBQ2QsS0FBSyxFQUNMLHFCQUFxQixFQUNyQixLQUFLLEVBQ0wsQ0FBQyxDQUNGLENBQUM7b0JBQ0osQ0FBQyxDQUFDLENBQUM7aUJBQ0o7cUJBQU07b0JBQ0wsMENBQTBDO29CQUMxQyxNQUFNLGdCQUFnQixHQUNwQixXQUFXLENBQUMsNkJBQTZCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ25ELElBQUksZ0JBQWdCLEVBQUU7d0JBQ3BCLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUNyRCxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQ2xDLGdCQUFnQixFQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FDcEIsQ0FBQzt3QkFDRixNQUFNLG9CQUFvQixHQUN4QixhQUFhLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLFlBQVksQ0FBQzs0QkFDbkMsS0FBSzs0QkFDTCxvQkFBb0I7eUJBQ3JCLENBQUMsQ0FBQzt3QkFDSCxNQUFNLFVBQVUsR0FBRyx1QkFBdUIsQ0FDeEMsV0FBVyxFQUNYLFdBQVcsQ0FDWixDQUFDO3dCQUNGLElBQUksVUFBVSxJQUFJLG9CQUFvQixFQUFFOzRCQUN0QyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUM1QixjQUFjLEVBQ2QsY0FBYyxDQUNmLENBQUM7NEJBQ0YsdUZBQXVGOzRCQUN2RixJQUFJLENBQUMsaUJBQWlCLENBQ3BCLGNBQWMsRUFDZCxLQUFLLEVBQ0wsY0FBYyxFQUNkLEtBQUssRUFDTCxVQUFVLENBQ1gsQ0FBQzt5QkFDSDtxQkFDRjtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUNGLENBQ0osQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSyxpQkFBaUIsQ0FDdkIsS0FBWSxFQUNaLDJCQUEyQixFQUMzQixPQUFnQixFQUNoQixLQUFLLEVBQ0wsUUFBUTtRQUVSLE1BQU0sU0FBUyxHQUFHLElBQUksRUFBRSxDQUFDO1FBQ3pCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFjLENBQUM7UUFDeEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUU7WUFDN0QsaUJBQWlCLEVBQUUsVUFBVTtZQUM3QixjQUFjLEVBQUUsVUFBVTtTQUMzQixDQUFRLENBQUM7UUFDVixJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDO1lBQ2hDLElBQUksRUFBRSxPQUFPO1lBQ2IsUUFBUTtZQUNSLFVBQVUsRUFBRSxVQUFVLENBQUMsT0FBTyxFQUFFO1lBQ2hDLFVBQVUsRUFBRTtnQkFDVixHQUFHLE9BQU8sQ0FBQyxVQUFVO2dCQUNyQixHQUFHO29CQUNELEVBQUUsRUFBRSxTQUFTO29CQUNiLE9BQU8sRUFBRSxLQUFLO29CQUNkLFFBQVE7b0JBQ1IsMkJBQTJCO29CQUMzQixVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUU7b0JBQ3BCLGFBQWEsRUFBRSxLQUFLLENBQUMsS0FBSztpQkFDM0I7YUFDRjtZQUNELElBQUksRUFBRTtnQkFDSixFQUFFLEVBQUUsU0FBUzthQUNkO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFnQixFQUFFLEtBQVk7UUFDMUMsSUFBSSxLQUFLLENBQUM7UUFDVixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtZQUNsQyxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTTtpQkFDM0MsT0FBcUMsQ0FBQztZQUN6QyxJQUFJLGlCQUFpQixDQUFDLFVBQVUsRUFBRTtnQkFDaEMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ25FO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZ0IsRUFBRSxVQUFVO1FBQ3hDLElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQztRQUN2QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBRXhFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUFDO1FBRUgsMENBQTBDO1FBQzFDLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLFVBQVUsRUFBRTtZQUNuRCxLQUFLLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUM7U0FDdEQ7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7MkVBdk9VLGlCQUFpQjtnRUFBakIsaUJBQWlCLFdBQWpCLGlCQUFpQixtQkFGaEIsTUFBTTs7dUZBRVAsaUJBQWlCO2NBSDdCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgRmVhdHVyZVN0b3JlLFxuICBGZWF0dXJlLFxuICBJZ29NYXAsXG4gIGZlYXR1cmVGcm9tT2wsXG4gIG1lYXN1cmVPbEdlb21ldHJ5TGVuZ3RoLFxuICBMYXllcixcbiAgUXVlcnlhYmxlRGF0YVNvdXJjZU9wdGlvbnMsXG4gIEZFQVRVUkUsXG4gIHJvdW5kQ29vcmRUbyxcbiAgUXVlcnlhYmxlRGF0YVNvdXJjZSxcbiAgTWFwR2VvbG9jYXRpb25TdGF0ZVxufSBmcm9tICdAaWdvMi9nZW8nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBpbnRlcnZhbCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBNYXBTdGF0ZSB9IGZyb20gJy4uL21hcC9tYXAuc3RhdGUnO1xuXG5pbXBvcnQgR2VvSlNPTiBmcm9tICdvbC9mb3JtYXQvR2VvSlNPTic7XG5pbXBvcnQgeyB1dWlkIH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgb2xMYXllclZlY3RvciBmcm9tICdvbC9sYXllci9WZWN0b3InO1xuaW1wb3J0IG9sVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0IEdlb21ldHJ5IGZyb20gJ29sL2dlb20vR2VvbWV0cnknO1xuaW1wb3J0IG9sTGluZVN0cmluZyBmcm9tICdvbC9nZW9tL0xpbmVTdHJpbmcnO1xuaW1wb3J0ICogYXMgb2xQcm9qIGZyb20gJ29sL3Byb2onO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcbi8qKlxuICogU2VydmljZSB0aGF0IGhvbGRzIHRoZSBzdGF0ZSBvZiB0aGUgZGlyZWN0aW9uIG1vZHVsZVxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNYXBQcm94aW1pdHlTdGF0ZSB7XG4gIHByaXZhdGUgZGVmYXVsdFByb3hpbWl0eVJhZGl1c1ZhbHVlOiBudW1iZXIgPSAzMDtcblxuICBwdWJsaWMgZW5hYmxlZCQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oXG4gICAgZmFsc2VcbiAgKTtcbiAgcHVibGljIHByb3hpbWl0eVJhZGl1c1ZhbHVlJDogQmVoYXZpb3JTdWJqZWN0PG51bWJlcj47XG4gIHB1YmxpYyBwcm94aW1pdHlsb2NhdGlvblR5cGUkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdnZW9sb2NhdGlvbicpO1xuICBwdWJsaWMgcHJveGltaXR5RmVhdHVyZVN0b3JlOiBGZWF0dXJlU3RvcmU8RmVhdHVyZT47XG4gIHByaXZhdGUgc3VicyQkOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwdWJsaWMgY3VycmVudFBvc2l0aW9uQ29vcmRpbmF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxbbnVtYmVyLCBudW1iZXJdPiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xuXG4gIGdldCBtYXAoKTogSWdvTWFwIHtcbiAgICByZXR1cm4gdGhpcy5tYXBTdGF0ZS5tYXA7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hcFN0YXRlOiBNYXBTdGF0ZSxcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVxuICApIHtcbiAgICB0aGlzLnByb3hpbWl0eUZlYXR1cmVTdG9yZSA9IG5ldyBGZWF0dXJlU3RvcmU8RmVhdHVyZT4oW10sIHtcbiAgICAgIG1hcDogdGhpcy5tYXBTdGF0ZS5tYXBcbiAgICB9KTtcblxuICAgIHRoaXMucHJveGltaXR5UmFkaXVzVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KFxuICAgICAgKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCdtYXBQcm94aW1pdHlSYWRpdXMnKSBhcyBudW1iZXIpIHx8XG4gICAgICAgIHRoaXMuZGVmYXVsdFByb3hpbWl0eVJhZGl1c1ZhbHVlXG4gICAgKTtcblxuICAgIHRoaXMubWFwU3RhdGUubWFwLm9sLm9uY2UoJ3JlbmRlcmNvbXBsZXRlJywgKCkgPT4ge1xuICAgICAgdGhpcy5zdWJzY3JpYmVQcm94aW1pdHlNb25pdG9yKCk7XG4gICAgfSk7XG4gIH1cblxuICBzdWJzY3JpYmVQcm94aW1pdHlNb25pdG9yKCkge1xuICAgIHRoaXMuc3VicyQkLnB1c2goXG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5lbmFibGVkJCxcbiAgICAgICAgdGhpcy5wcm94aW1pdHlsb2NhdGlvblR5cGUkLFxuICAgICAgICB0aGlzLnByb3hpbWl0eVJhZGl1c1ZhbHVlJCxcbiAgICAgICAgaW50ZXJ2YWwoNTAwMCksXG4gICAgICAgIHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5wb3NpdGlvbiRcbiAgICAgIF0pXG4gICAgICAgIC5waXBlKGRlYm91bmNlVGltZSg3NTApKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChidW5jaDogW2Jvb2xlYW4sIHN0cmluZywgbnVtYmVyLCBudW1iZXIsIE1hcEdlb2xvY2F0aW9uU3RhdGVdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByb3hpbWl0eUZlYXR1cmVTdG9yZS5jbGVhcigpO1xuICAgICAgICAgICAgY29uc3QgZW5hYmxlZCA9IGJ1bmNoWzBdO1xuICAgICAgICAgICAgY29uc3QgbGF5ZXJzID0gdGhpcy5tYXAubGF5ZXJzO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFBvcyA9IHRoaXMubWFwLmdlb2xvY2F0aW9uQ29udHJvbGxlci5wb3NpdGlvbiQudmFsdWU7XG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvblR5cGUgPSBidW5jaFsxXTtcbiAgICAgICAgICAgIGNvbnN0IHByb3hpbWl0eVJhZGl1c1ZhbHVlID0gYnVuY2hbMl07XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldChcbiAgICAgICAgICAgICAgJ21hcFByb3hpbWl0eVJhZGl1cycsXG4gICAgICAgICAgICAgIHByb3hpbWl0eVJhZGl1c1ZhbHVlIHx8IHRoaXMuZGVmYXVsdFByb3hpbWl0eVJhZGl1c1ZhbHVlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoIWVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgY29vcmQ6IG51bWJlcltdO1xuICAgICAgICAgICAgaWYgKGxvY2F0aW9uVHlwZSA9PT0gJ2dlb2xvY2F0aW9uJykge1xuICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRQb3MgfHwgIWN1cnJlbnRQb3MucG9zaXRpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb29yZCA9IG9sUHJvai50cmFuc2Zvcm0oXG4gICAgICAgICAgICAgICAgY3VycmVudFBvcy5wb3NpdGlvbixcbiAgICAgICAgICAgICAgICBjdXJyZW50UG9zLnByb2plY3Rpb24sXG4gICAgICAgICAgICAgICAgdGhpcy5tYXAucHJvamVjdGlvblxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB0aGlzLm1hcC5tYXBDZW50ZXIkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29vcmQgPSB0aGlzLm1hcC52aWV3Q29udHJvbGxlci5nZXRDZW50ZXIoKTtcbiAgICAgICAgICAgICAgdGhpcy5tYXAubWFwQ2VudGVyJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjb29yZExvbkxhdCA9IG9sUHJvai50cmFuc2Zvcm0oXG4gICAgICAgICAgICAgIGNvb3JkLFxuICAgICAgICAgICAgICB0aGlzLm1hcC5wcm9qZWN0aW9uLFxuICAgICAgICAgICAgICAnRVBTRzo0MjY5J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IHJvdW5kZWRDb29yZExvbkxhdCA9IHJvdW5kQ29vcmRUbyhcbiAgICAgICAgICAgICAgY29vcmRMb25MYXQgYXMgW251bWJlciwgbnVtYmVyXSxcbiAgICAgICAgICAgICAgNlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFBvc2l0aW9uQ29vcmRpbmF0ZSQubmV4dChyb3VuZGVkQ29vcmRMb25MYXQpO1xuXG4gICAgICAgICAgICBjb25zdCBsYXllcnNUb01vbml0b3IgPSBsYXllcnMuZmlsdGVyKFxuICAgICAgICAgICAgICAobGF5ZXIpID0+XG4gICAgICAgICAgICAgICAgbGF5ZXIub2wgaW5zdGFuY2VvZiBvbExheWVyVmVjdG9yICYmXG4gICAgICAgICAgICAgICAgKGxheWVyLmRhdGFTb3VyY2UgYXMgUXVlcnlhYmxlRGF0YVNvdXJjZSkub3B0aW9ucy5xdWVyeWFibGUgJiZcbiAgICAgICAgICAgICAgICBsYXllci52aXNpYmxlICYmXG4gICAgICAgICAgICAgICAgbGF5ZXIuaXNJblJlc29sdXRpb25zUmFuZ2VcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGxheWVyc1RvTW9uaXRvci5tYXAoKGxheWVyVG9Nb25pdG9yKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGxheWVyU291cmNlID1cbiAgICAgICAgICAgICAgICBsYXllclRvTW9uaXRvci5vbC5nZXRTb3VyY2UoKSBhcyBvbFZlY3RvclNvdXJjZTxHZW9tZXRyeT47XG5cbiAgICAgICAgICAgICAgLy8gTW9zdGx5IGZvciBwb2x5Z29uIGZlYXR1cmVzLlxuICAgICAgICAgICAgICBjb25zdCBvbEZlYXR1cmVzQXRDb29yZGluYXRlID1cbiAgICAgICAgICAgICAgICBsYXllclNvdXJjZS5nZXRGZWF0dXJlc0F0Q29vcmRpbmF0ZShjb29yZCk7XG4gICAgICAgICAgICAgIGlmIChvbEZlYXR1cmVzQXRDb29yZGluYXRlICYmIG9sRmVhdHVyZXNBdENvb3JkaW5hdGUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgb2xGZWF0dXJlc0F0Q29vcmRpbmF0ZS5tYXAoKG9sRmVhdHVyZUF0Q29vcmRpbmF0ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZmVhdHVyZUF0VGhpc1Bvc2l0aW9uID0gZmVhdHVyZUZyb21PbChcbiAgICAgICAgICAgICAgICAgICAgb2xGZWF0dXJlQXRDb29yZGluYXRlLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5wcm9qZWN0aW9uXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gdGhpcy5nZXRRdWVyeVRpdGxlKFxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlQXRUaGlzUG9zaXRpb24sXG4gICAgICAgICAgICAgICAgICAgIGxheWVyVG9Nb25pdG9yXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgLy8gdG9kbyBoYW5kbGUgaW1wb3J0ZWQgbGF5ZXJzIHdpdGhvdXQgcXVlcnl0aXRsZT8gcHJvbXB0IHRpdGxlIG9yIGRldGVjdCBmaXJzdCBjb2x1bW4/XG4gICAgICAgICAgICAgICAgICB0aGlzLmFkZEZlYXR1cmVUb1N0b3JlKFxuICAgICAgICAgICAgICAgICAgICBsYXllclRvTW9uaXRvcixcbiAgICAgICAgICAgICAgICAgICAgY29vcmQsXG4gICAgICAgICAgICAgICAgICAgIGZlYXR1cmVBdFRoaXNQb3NpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBwcm94aW1pdHkgZm9yIHJlbWFpbmluZyBzb3VyY2VzXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvc2VzdE9sRmVhdHVyZSA9XG4gICAgICAgICAgICAgICAgICBsYXllclNvdXJjZS5nZXRDbG9zZXN0RmVhdHVyZVRvQ29vcmRpbmF0ZShjb29yZCk7XG4gICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3RPbEZlYXR1cmUpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb3Nlc3RPbEdlb20gPSBjbG9zZXN0T2xGZWF0dXJlLmdldEdlb21ldHJ5KCk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjbG9zZXN0RmVhdHVyZSA9IGZlYXR1cmVGcm9tT2woXG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RPbEZlYXR1cmUsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFwLnByb2plY3Rpb25cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBnZW9tZXRyeUNsb3Nlc3RQb2ludCA9XG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RPbEdlb20uZ2V0Q2xvc2VzdFBvaW50KGNvb3JkKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmViZXR3ZWVuID0gbmV3IG9sTGluZVN0cmluZyhbXG4gICAgICAgICAgICAgICAgICAgIGNvb3JkLFxuICAgICAgICAgICAgICAgICAgICBnZW9tZXRyeUNsb3Nlc3RQb2ludFxuICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBsaW5lTGVuZ3RoID0gbWVhc3VyZU9sR2VvbWV0cnlMZW5ndGgoXG4gICAgICAgICAgICAgICAgICAgIGxpbmViZXR3ZWVuLFxuICAgICAgICAgICAgICAgICAgICAnRVBTRzozODU3J1xuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGlmIChsaW5lTGVuZ3RoIDw9IHByb3hpbWl0eVJhZGl1c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IHRoaXMuZ2V0UXVlcnlUaXRsZShcbiAgICAgICAgICAgICAgICAgICAgICBjbG9zZXN0RmVhdHVyZSxcbiAgICAgICAgICAgICAgICAgICAgICBsYXllclRvTW9uaXRvclxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAvLyB0b2RvIGhhbmRsZSBpbXBvcnRlZCBsYXllcnMgd2l0aG91dCBxdWVyeXRpdGxlPyBwcm9tcHQgdGl0bGUgb3IgZGV0ZWN0IGZpcnN0IGNvbHVtbj9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRGZWF0dXJlVG9TdG9yZShcbiAgICAgICAgICAgICAgICAgICAgICBsYXllclRvTW9uaXRvcixcbiAgICAgICAgICAgICAgICAgICAgICBjb29yZCxcbiAgICAgICAgICAgICAgICAgICAgICBjbG9zZXN0RmVhdHVyZSxcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICBsaW5lTGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGZlYXR1cmUgd2l0aCBwcm94aW1pdHkgcHJvcGVydGllcyB0byB0aGUgc3RvcmVcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIGFkZEZlYXR1cmVUb1N0b3JlKFxuICAgIGxheWVyOiBMYXllcixcbiAgICBjb29yZEZyb21DYWxjdWxhdGVkRGlzdGFuY2UsXG4gICAgZmVhdHVyZTogRmVhdHVyZSxcbiAgICB0aXRsZSxcbiAgICBkaXN0YW5jZVxuICApIHtcbiAgICBjb25zdCBmZWF0dXJlSWQgPSB1dWlkKCk7XG4gICAgY29uc3QgcHJvamVjdGlvbiA9IHRoaXMubWFwLm9sLmdldFZpZXcoKS5nZXRQcm9qZWN0aW9uKCk7XG4gICAgY29uc3Qgb2xHZW9tZXRyeSA9IGZlYXR1cmUub2wuZ2V0R2VvbWV0cnkoKSBhcyBHZW9tZXRyeTtcbiAgICBjb25zdCBnZW9tZXRyeSA9IG5ldyBHZW9KU09OKCkud3JpdGVHZW9tZXRyeU9iamVjdChvbEdlb21ldHJ5LCB7XG4gICAgICBmZWF0dXJlUHJvamVjdGlvbjogcHJvamVjdGlvbixcbiAgICAgIGRhdGFQcm9qZWN0aW9uOiBwcm9qZWN0aW9uXG4gICAgfSkgYXMgYW55O1xuICAgIHRoaXMucHJveGltaXR5RmVhdHVyZVN0b3JlLnVwZGF0ZSh7XG4gICAgICB0eXBlOiBGRUFUVVJFLFxuICAgICAgZ2VvbWV0cnksXG4gICAgICBwcm9qZWN0aW9uOiBwcm9qZWN0aW9uLmdldENvZGUoKSxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgLi4uZmVhdHVyZS5wcm9wZXJ0aWVzLFxuICAgICAgICAuLi57XG4gICAgICAgICAgaWQ6IGZlYXR1cmVJZCxcbiAgICAgICAgICBlbGVtZW50OiB0aXRsZSxcbiAgICAgICAgICBkaXN0YW5jZSxcbiAgICAgICAgICBjb29yZEZyb21DYWxjdWxhdGVkRGlzdGFuY2UsXG4gICAgICAgICAgbGF5ZXJTcmNJZDogbGF5ZXIuaWQsXG4gICAgICAgICAgbGF5ZXJTcmNUaXRsZTogbGF5ZXIudGl0bGVcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG1ldGE6IHtcbiAgICAgICAgaWQ6IGZlYXR1cmVJZFxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0UXVlcnlUaXRsZShmZWF0dXJlOiBGZWF0dXJlLCBsYXllcjogTGF5ZXIpOiBzdHJpbmcge1xuICAgIGxldCB0aXRsZTtcbiAgICBpZiAobGF5ZXIub3B0aW9ucz8uc291cmNlPy5vcHRpb25zKSB7XG4gICAgICBjb25zdCBkYXRhU291cmNlT3B0aW9ucyA9IGxheWVyLm9wdGlvbnMuc291cmNlXG4gICAgICAgIC5vcHRpb25zIGFzIFF1ZXJ5YWJsZURhdGFTb3VyY2VPcHRpb25zO1xuICAgICAgaWYgKGRhdGFTb3VyY2VPcHRpb25zLnF1ZXJ5VGl0bGUpIHtcbiAgICAgICAgdGl0bGUgPSB0aGlzLmdldExhYmVsTWF0Y2goZmVhdHVyZSwgZGF0YVNvdXJjZU9wdGlvbnMucXVlcnlUaXRsZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aXRsZTtcbiAgfVxuXG4gIGdldExhYmVsTWF0Y2goZmVhdHVyZTogRmVhdHVyZSwgbGFiZWxNYXRjaCk6IHN0cmluZyB7XG4gICAgbGV0IGxhYmVsID0gbGFiZWxNYXRjaDtcbiAgICBjb25zdCBsYWJlbFRvR2V0ID0gQXJyYXkuZnJvbShsYWJlbE1hdGNoLm1hdGNoQWxsKC9cXCRcXHsoW15cXHtcXH1dKylcXH0vZykpO1xuXG4gICAgbGFiZWxUb0dldC5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBsYWJlbCA9IGxhYmVsLnJlcGxhY2UodlswXSwgZmVhdHVyZS5wcm9wZXJ0aWVzW3ZbMV1dKTtcbiAgICB9KTtcblxuICAgIC8vIE5vdGhpbmcgZG9uZT8gY2hlY2sgZmVhdHVyZSdzIGF0dHJpYnV0ZVxuICAgIGlmIChsYWJlbFRvR2V0Lmxlbmd0aCA9PT0gMCAmJiBsYWJlbCA9PT0gbGFiZWxNYXRjaCkge1xuICAgICAgbGFiZWwgPSBmZWF0dXJlLnByb3BlcnRpZXNbbGFiZWxNYXRjaF0gfHwgbGFiZWxNYXRjaDtcbiAgICB9XG4gICAgcmV0dXJuIGxhYmVsO1xuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
- export * from './map-tool.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL21hcC9tYXAtdG9vbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tYXAtdG9vbC5jb21wb25lbnQnO1xyXG4iXX0=
1
+ export * from './map-tool.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL21hcC9tYXAtdG9vbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tYXAtdG9vbC5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,140 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
3
+ import { ToolComponent } from '@igo2/common';
4
+ import { LayerListControlsEnum } from '@igo2/geo';
5
+ import { MapState } from './../map.state';
6
+ import { ImportExportMode, ImportExportState } from '../../import-export/import-export.state';
7
+ import { ToolState } from '../../tool/tool.state';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "./../map.state";
10
+ import * as i2 from "../../tool/tool.state";
11
+ import * as i3 from "../../import-export/import-export.state";
12
+ import * as i4 from "@angular/material/tabs";
13
+ import * as i5 from "@igo2/geo";
14
+ import * as i6 from "@igo2/context";
15
+ import * as i7 from "../../workspace/workspace-button/workspace-button.component";
16
+ import * as i8 from "@ngx-translate/core";
17
+ function MapToolComponent_ng_template_4_Template(rf, ctx) { if (rf & 1) {
18
+ const _r4 = i0.ɵɵgetCurrentView();
19
+ i0.ɵɵelement(0, "igo-workspace-button", 4);
20
+ i0.ɵɵelementStart(1, "igo-export-button", 5);
21
+ i0.ɵɵlistener("click", function MapToolComponent_ng_template_4_Template_igo_export_button_click_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r4); const layer_r2 = restoredCtx.layer; const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.activateExport(layer_r2)); });
22
+ i0.ɵɵelementEnd();
23
+ i0.ɵɵelement(2, "igo-ogc-filter-button", 6)(3, "igo-time-filter-button", 6)(4, "igo-track-feature-button", 7)(5, "igo-metadata-button", 4);
24
+ } if (rf & 2) {
25
+ const layer_r2 = ctx.layer;
26
+ const ctx_r1 = i0.ɵɵnextContext();
27
+ i0.ɵɵproperty("layer", layer_r2);
28
+ i0.ɵɵadvance(1);
29
+ i0.ɵɵproperty("layer", layer_r2);
30
+ i0.ɵɵadvance(1);
31
+ i0.ɵɵproperty("header", ctx_r1.ogcButton)("layer", layer_r2);
32
+ i0.ɵɵadvance(1);
33
+ i0.ɵɵproperty("header", ctx_r1.timeButton)("layer", layer_r2);
34
+ i0.ɵɵadvance(1);
35
+ i0.ɵɵproperty("trackFeature", true)("layer", layer_r2);
36
+ i0.ɵɵadvance(1);
37
+ i0.ɵɵproperty("layer", layer_r2);
38
+ } }
39
+ /**
40
+ * Tool to browse a map's layers or to choose a different map
41
+ */
42
+ export let MapToolComponent = class MapToolComponent {
43
+ mapState;
44
+ toolState;
45
+ importExportState;
46
+ toggleLegendOnVisibilityChange = false;
47
+ expandLegendOfVisibleLayers = false;
48
+ updateLegendOnResolutionChange = false;
49
+ ogcButton = true;
50
+ timeButton = true;
51
+ layerListControls = {};
52
+ queryBadge = false;
53
+ get map() {
54
+ return this.mapState.map;
55
+ }
56
+ get excludeBaseLayers() {
57
+ return this.layerListControls.excludeBaseLayers || false;
58
+ }
59
+ get layerFilterAndSortOptions() {
60
+ const filterSortOptions = Object.assign({
61
+ showToolbar: LayerListControlsEnum.default
62
+ }, this.layerListControls);
63
+ switch (this.layerListControls.showToolbar) {
64
+ case LayerListControlsEnum.always:
65
+ filterSortOptions.showToolbar = LayerListControlsEnum.always;
66
+ break;
67
+ case LayerListControlsEnum.never:
68
+ filterSortOptions.showToolbar = LayerListControlsEnum.never;
69
+ break;
70
+ default:
71
+ break;
72
+ }
73
+ return filterSortOptions;
74
+ }
75
+ constructor(mapState, toolState, importExportState) {
76
+ this.mapState = mapState;
77
+ this.toolState = toolState;
78
+ this.importExportState = importExportState;
79
+ }
80
+ activateExport(layer) {
81
+ let id = layer.id;
82
+ if (layer.options.workspace?.workspaceId) {
83
+ id =
84
+ layer.options.workspace.workspaceId !== layer.id
85
+ ? layer.options.workspace.workspaceId
86
+ : layer.id;
87
+ }
88
+ this.importExportState.setsExportOptions({ layers: [id] });
89
+ this.importExportState.setMode(ImportExportMode.export);
90
+ this.toolState.toolbox.activateTool('importExport');
91
+ }
92
+ static ɵfac = function MapToolComponent_Factory(t) { return new (t || MapToolComponent)(i0.ɵɵdirectiveInject(i1.MapState), i0.ɵɵdirectiveInject(i2.ToolState), i0.ɵɵdirectiveInject(i3.ImportExportState)); };
93
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MapToolComponent, selectors: [["igo-map-tool"]], inputs: { toggleLegendOnVisibilityChange: "toggleLegendOnVisibilityChange", expandLegendOfVisibleLayers: "expandLegendOfVisibleLayers", updateLegendOnResolutionChange: "updateLegendOnResolutionChange", ogcButton: "ogcButton", timeButton: "timeButton", layerListControls: "layerListControls", queryBadge: "queryBadge" }, decls: 9, vars: 14, consts: [[3, "label"], ["igoLayerListBinding", "", 3, "map", "excludeBaseLayers", "layerFilterAndSortOptions", "expandLegendOfVisibleLayers", "toggleLegendOnVisibilityChange", "updateLegendOnResolutionChange", "floatLabel", "queryBadge"], ["igoLayerItemToolbar", ""], ["igoContextListBinding", ""], [3, "layer"], [3, "layer", "click"], [3, "header", "layer"], [3, "trackFeature", "layer"]], template: function MapToolComponent_Template(rf, ctx) { if (rf & 1) {
94
+ i0.ɵɵelementStart(0, "mat-tab-group")(1, "mat-tab", 0);
95
+ i0.ɵɵpipe(2, "translate");
96
+ i0.ɵɵelementStart(3, "igo-layer-list", 1);
97
+ i0.ɵɵtemplate(4, MapToolComponent_ng_template_4_Template, 6, 9, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
98
+ i0.ɵɵelementEnd()();
99
+ i0.ɵɵelementStart(6, "mat-tab", 0);
100
+ i0.ɵɵpipe(7, "translate");
101
+ i0.ɵɵelement(8, "igo-context-list", 3);
102
+ i0.ɵɵelementEnd()();
103
+ } if (rf & 2) {
104
+ i0.ɵɵadvance(1);
105
+ i0.ɵɵproperty("label", i0.ɵɵpipeBind1(2, 10, "igo.integration.tools.map"));
106
+ i0.ɵɵadvance(2);
107
+ i0.ɵɵproperty("map", ctx.map)("excludeBaseLayers", ctx.excludeBaseLayers)("layerFilterAndSortOptions", ctx.layerFilterAndSortOptions)("expandLegendOfVisibleLayers", ctx.expandLegendOfVisibleLayers)("toggleLegendOnVisibilityChange", ctx.toggleLegendOnVisibilityChange)("updateLegendOnResolutionChange", ctx.updateLegendOnResolutionChange)("floatLabel", false)("queryBadge", ctx.queryBadge);
108
+ i0.ɵɵadvance(3);
109
+ i0.ɵɵproperty("label", i0.ɵɵpipeBind1(7, 12, "igo.integration.tools.contexts"));
110
+ } }, dependencies: [i4.MatTab, i4.MatTabGroup, i5.LayerListComponent, i5.LayerListBindingDirective, i5.TrackFeatureButtonComponent, i5.MetadataButtonComponent, i5.ExportButtonComponent, i5.TimeFilterButtonComponent, i5.OgcFilterButtonComponent, i6.ContextListComponent, i6.ContextListBindingDirective, i7.WorkspaceButtonComponent, i8.TranslatePipe], styles: ["[_nghost-%COMP%] .mat-mdc-tab-body-content{overflow:hidden}"], changeDetection: 0 });
111
+ };
112
+ MapToolComponent = __decorate([
113
+ ToolComponent({
114
+ name: 'map',
115
+ title: 'igo.integration.tools.map',
116
+ icon: 'map'
117
+ }),
118
+ __metadata("design:paramtypes", [MapState,
119
+ ToolState,
120
+ ImportExportState])
121
+ ], MapToolComponent);
122
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapToolComponent, [{
123
+ type: Component,
124
+ args: [{ selector: 'igo-map-tool', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-tab-group>\n <mat-tab [label]=\"'igo.integration.tools.map' | translate\">\n <igo-layer-list\n [map]=\"map\"\n igoLayerListBinding\n [excludeBaseLayers]=\"excludeBaseLayers\"\n [layerFilterAndSortOptions]=\"layerFilterAndSortOptions\"\n [expandLegendOfVisibleLayers]=\"expandLegendOfVisibleLayers\"\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n [floatLabel]=\"false\"\n [queryBadge]=\"queryBadge\"\n >\n <ng-template #igoLayerItemToolbar let-layer=\"layer\">\n <!-- <igo-download-button [layer]=\"layer\"></igo-download-button> -->\n <igo-workspace-button [layer]=\"layer\"></igo-workspace-button>\n <igo-export-button\n [layer]=\"layer\"\n (click)=\"activateExport(layer)\"\n ></igo-export-button>\n <igo-ogc-filter-button\n [header]=\"ogcButton\"\n [layer]=\"layer\"\n ></igo-ogc-filter-button>\n <igo-time-filter-button\n [header]=\"timeButton\"\n [layer]=\"layer\"\n ></igo-time-filter-button>\n <igo-track-feature-button\n [trackFeature]=\"true\"\n [layer]=\"layer\"\n ></igo-track-feature-button>\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\n </ng-template>\n </igo-layer-list>\n </mat-tab>\n\n <mat-tab [label]=\"'igo.integration.tools.contexts' | translate\">\n <igo-context-list igoContextListBinding></igo-context-list>\n </mat-tab>\n</mat-tab-group>\n", styles: [":host ::ng-deep .mat-mdc-tab-body-content{overflow:hidden}\n"] }]
125
+ }], function () { return [{ type: i1.MapState }, { type: i2.ToolState }, { type: i3.ImportExportState }]; }, { toggleLegendOnVisibilityChange: [{
126
+ type: Input
127
+ }], expandLegendOfVisibleLayers: [{
128
+ type: Input
129
+ }], updateLegendOnResolutionChange: [{
130
+ type: Input
131
+ }], ogcButton: [{
132
+ type: Input
133
+ }], timeButton: [{
134
+ type: Input
135
+ }], layerListControls: [{
136
+ type: Input
137
+ }], queryBadge: [{
138
+ type: Input
139
+ }] }); })();
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLXRvb2wuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXRvb2wvbWFwLXRvb2wuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaW50ZWdyYXRpb24vc3JjL2xpYi9tYXAvbWFwLXRvb2wvbWFwLXRvb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUNMLHFCQUFxQixFQUt0QixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDbEIsTUFBTSx5Q0FBeUMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7OztJQ0ExQywwQ0FBNkQ7SUFDN0QsNENBR0M7SUFEQyx3T0FBUyxlQUFBLCtCQUFxQixDQUFBLElBQUM7SUFDaEMsaUJBQW9CO0lBQ3JCLDJDQUd5QixnQ0FBQSxrQ0FBQSw2QkFBQTs7OztJQVJILGdDQUFlO0lBRW5DLGVBQWU7SUFBZixnQ0FBZTtJQUlmLGVBQW9CO0lBQXBCLHlDQUFvQixtQkFBQTtJQUlwQixlQUFxQjtJQUFyQiwwQ0FBcUIsbUJBQUE7SUFJckIsZUFBcUI7SUFBckIsbUNBQXFCLG1CQUFBO0lBR0YsZUFBZTtJQUFmLGdDQUFlOztBRGY1Qzs7R0FFRztBQVlJLFdBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCO0lBNkNqQjtJQUNBO0lBQ0E7SUE5Q0QsOEJBQThCLEdB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U0FBUzsyQkFDRSxjQUFjLG1CQUdQLHVCQUF1QixDQUFDLE1BQU07bUhBR3RDLDhCQUE4QjtrQkFBdEMsS0FBSztZQUVHLDJCQUEyQjtrQkFBbkMsS0FBSztZQUVHLDhCQUE4QjtrQkFBdEMsS0FBSztZQUVHLFNBQVM7a0JBQWpCLEtBQUs7WUFFRyxVQUFVO2tCQUFsQixLQUFLO1lBRUcsaUJBQWlCO2tCQUF6QixLQUFLO1lBRUcsVUFBVTtrQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFRvb2xDb21wb25lbnQgfSBmcm9tICdAaWdvMi9jb21tb24nO1xuaW1wb3J0IHtcbiAgTGF5ZXJMaXN0Q29udHJvbHNFbnVtLFxuICBMYXllckxpc3RDb250cm9sc09wdGlvbnMsXG4gIElnb01hcCxcbiAgRXhwb3J0T3B0aW9ucyxcbiAgTGF5ZXJcbn0gZnJvbSAnQGlnbzIvZ2VvJztcbmltcG9ydCB7IE1hcFN0YXRlIH0gZnJvbSAnLi8uLi9tYXAuc3RhdGUnO1xuaW1wb3J0IHtcbiAgSW1wb3J0RXhwb3J0TW9kZSxcbiAgSW1wb3J0RXhwb3J0U3RhdGVcbn0gZnJvbSAnLi4vLi4vaW1wb3J0LWV4cG9ydC9pbXBvcnQtZXhwb3J0LnN0YXRlJztcbmltcG9ydCB7IFRvb2xTdGF0ZSB9IGZyb20gJy4uLy4uL3Rvb2wvdG9vbC5zdGF0ZSc7XG5cbi8qKlxuICogVG9vbCB0byBicm93c2UgYSBtYXAncyBsYXllcnMgb3IgdG8gY2hvb3NlIGEgZGlmZmVyZW50IG1hcFxuICovXG5AVG9vbENvbXBvbmVudCh7XG4gIG5hbWU6ICdtYXAnLFxuICB0aXRsZTogJ2lnby5pbnRlZ3JhdGlvbi50b29scy5tYXAnLFxuICBpY29uOiAnbWFwJ1xufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1tYXAtdG9vbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYXAtdG9vbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hcC10b29sLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1hcFRvb2xDb21wb25lbnQge1xuICBASW5wdXQoKSB0b2dnbGVMZWdlbmRPblZpc2liaWxpdHlDaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBleHBhbmRMZWdlbmRPZlZpc2libGVMYXllcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSB1cGRhdGVMZWdlbmRPblJlc29sdXRpb25DaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBvZ2NCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIHRpbWVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIGxheWVyTGlzdENvbnRyb2xzOiBMYXllckxpc3RDb250cm9sc09wdGlvbnMgPSB7fTtcblxuICBASW5wdXQoKSBxdWVyeUJhZGdlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgZ2V0IG1hcCgpOiBJZ29NYXAge1xuICAgIHJldHVybiB0aGlzLm1hcFN0YXRlLm1hcDtcbiAgfVxuXG4gIGdldCBleGNsdWRlQmFzZUxheWVycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sYXllckxpc3RDb250cm9scy5leGNsdWRlQmFzZUxheWVycyB8fCBmYWxzZTtcbiAgfVxuXG4gIGdldCBsYXllckZpbHRlckFuZFNvcnRPcHRpb25zKCk6IGFueSB7XG4gICAgY29uc3QgZmlsdGVyU29ydE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKFxuICAgICAge1xuICAgICAgICBzaG93VG9vbGJhcjogTGF5ZXJMaXN0Q29udHJvbHNFbnVtLmRlZmF1bHRcbiAgICAgIH0sXG4gICAgICB0aGlzLmxheWVyTGlzdENvbnRyb2xzXG4gICAgKTtcblxuICAgIHN3aXRjaCAodGhpcy5sYXllckxpc3RDb250cm9scy5zaG93VG9vbGJhcikge1xuICAgICAgY2FzZSBMYXllckxpc3RDb250cm9sc0VudW0uYWx3YXlzOlxuICAgICAgICBmaWx0ZXJTb3J0T3B0aW9ucy5zaG93VG9vbGJhciA9IExheWVyTGlzdENvbnRyb2xzRW51bS5hbHdheXM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMYXllckxpc3RDb250cm9sc0VudW0ubmV2ZXI6XG4gICAgICAgIGZpbHRlclNvcnRPcHRpb25zLnNob3dUb29sYmFyID0gTGF5ZXJMaXN0Q29udHJvbHNFbnVtLm5ldmVyO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyU29ydE9wdGlvbnM7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hcFN0YXRlOiBNYXBTdGF0ZSxcbiAgICBwcml2YXRlIHRvb2xTdGF0ZTogVG9vbFN0YXRlLFxuICAgIHByaXZhdGUgaW1wb3J0RXhwb3J0U3RhdGU6IEltcG9ydEV4cG9ydFN0YXRlXG4gICkge31cblxuICBhY3RpdmF0ZUV4cG9ydChsYXllcjogTGF5ZXIpIHtcbiAgICBsZXQgaWQgPSBsYXllci5pZDtcbiAgICBpZiAobGF5ZXIub3B0aW9ucy53b3Jrc3BhY2U/LndvcmtzcGFjZUlkKSB7XG4gICAgICBpZCA9XG4gICAgICAgIGxheWVyLm9wdGlvbnMud29ya3NwYWNlLndvcmtzcGFjZUlkICE9PSBsYXllci5pZFxuICAgICAgICAgID8gbGF5ZXIub3B0aW9ucy53b3Jrc3BhY2Uud29ya3NwYWNlSWRcbiAgICAgICAgICA6IGxheWVyLmlkO1xuICAgIH1cbiAgICB0aGlzLmltcG9ydEV4cG9ydFN0YXRlLnNldHNFeHBvcnRPcHRpb25zKHsgbGF5ZXJzOiBbaWRdIH0gYXMgRXhwb3J0T3B0aW9ucyk7XG4gICAgdGhpcy5pbXBvcnRFeHBvcnRTdGF0ZS5zZXRNb2RlKEltcG9ydEV4cG9ydE1vZGUuZXhwb3J0KTtcbiAgICB0aGlzLnRvb2xTdGF0ZS50b29sYm94LmFjdGl2YXRlVG9vbCgnaW1wb3J0RXhwb3J0Jyk7XG4gIH1cbn1cbiIsIjxtYXQtdGFiLWdyb3VwPlxuICA8bWF0LXRhYiBbbGFiZWxdPVwiJ2lnby5pbnRlZ3JhdGlvbi50b29scy5tYXAnIHwgdHJhbnNsYXRlXCI+XG4gICAgPGlnby1sYXllci1saXN0XG4gICAgICBbbWFwXT1cIm1hcFwiXG4gICAgICBpZ29MYXllckxpc3RCaW5kaW5nXG4gICAgICBbZXhjbHVkZUJhc2VMYXllcnNdPVwiZXhjbHVkZUJhc2VMYXllcnNcIlxuICAgICAgW2xheWVyRmlsdGVyQW5kU29ydE9wdGlvbnNdPVwibGF5ZXJGaWx0ZXJBbmRTb3J0T3B0aW9uc1wiXG4gICAgICBbZXhwYW5kTGVnZW5kT2ZWaXNpYmxlTGF5ZXJzXT1cImV4cGFuZExlZ2VuZE9mVmlzaWJsZUxheWVyc1wiXG4gICAgICBbdG9nZ2xlTGVnZW5kT25WaXNpYmlsaXR5Q2hhbmdlXT1cInRvZ2dsZUxlZ2VuZE9uVmlzaWJpbGl0eUNoYW5nZVwiXG4gICAgICBbdXBkYXRlTGVnZW5kT25SZXNvbHV0aW9uQ2hhbmdlXT1cInVwZGF0ZUxlZ2VuZE9uUmVzb2x1dGlvbkNoYW5nZVwiXG4gICAgICBbZmxvYXRMYWJlbF09XCJmYWxzZVwiXG4gICAgICBbcXVlcnlCYWRnZV09XCJxdWVyeUJhZGdlXCJcbiAgICA+XG4gICAgICA8bmctdGVtcGxhdGUgI2lnb0xheWVySXRlbVRvb2xiYXIgbGV0LWxheWVyPVwibGF5ZXJcIj5cbiAgICAgICAgPCEtLSA8aWdvLWRvd25sb2FkLWJ1dHRvbiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby1kb3dubG9hZC1idXR0b24+IC0tPlxuICAgICAgICA8aWdvLXdvcmtzcGFjZS1idXR0b24gW2xheWVyXT1cImxheWVyXCI+PC9pZ28td29ya3NwYWNlLWJ1dHRvbj5cbiAgICAgICAgPGlnby1leHBvcnQtYnV0dG9uXG4gICAgICAgICAgW2xheWVyXT1cImxheWVyXCJcbiAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVFeHBvcnQobGF5ZXIpXCJcbiAgICAgICAgPjwvaWdvLWV4cG9ydC1idXR0b24+XG4gICAgICAgIDxpZ28tb2djLWZpbHRlci1idXR0b25cbiAgICAgICAgICBbaGVhZGVyXT1cIm9nY0J1dHRvblwiXG4gICAgICAgICAgW2xheWVyXT1cImxheWVyXCJcbiAgICAgICAgPjwvaWdvLW9nYy1maWx0ZXItYnV0dG9uPlxuICAgICAgICA8aWdvLXRpbWUtZmlsdGVyLWJ1dHRvblxuICAgICAgICAgIFtoZWFkZXJdPVwidGltZUJ1dHRvblwiXG4gICAgICAgICAgW2xheWVyXT1cImxheWVyXCJcbiAgICAgICAgPjwvaWdvLXRpbWUtZmlsdGVyLWJ1dHRvbj5cbiAgICAgICAgPGlnby10cmFjay1mZWF0dXJlLWJ1dHRvblxuICAgICAgICAgIFt0cmFja0ZlYXR1cmVdPVwidHJ1ZVwiXG4gICAgICAgICAgW2xheWVyXT1cImxheWVyXCJcbiAgICAgICAgPjwvaWdvLXRyYWNrLWZlYXR1cmUtYnV0dG9uPlxuICAgICAgICA8aWdvLW1ldGFkYXRhLWJ1dHRvbiBbbGF5ZXJdPVwibGF5ZXJcIj48L2lnby1tZXRhZGF0YS1idXR0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaWdvLWxheWVyLWxpc3Q+XG4gIDwvbWF0LXRhYj5cblxuICA8bWF0LXRhYiBbbGFiZWxdPVwiJ2lnby5pbnRlZ3JhdGlvbi50b29scy5jb250ZXh0cycgfCB0cmFuc2xhdGVcIj5cbiAgICA8aWdvLWNvbnRleHQtbGlzdCBpZ29Db250ZXh0TGlzdEJpbmRpbmc+PC9pZ28tY29udGV4dC1saXN0PlxuICA8L21hdC10YWI+XG48L21hdC10YWItZ3JvdXA+XG4iXX0=
@@ -1,2 +1,2 @@
1
- export * from './map-tools.component';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL21hcC9tYXAtdG9vbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWFwLXRvb2xzLmNvbXBvbmVudCc7XHJcbiJdfQ==
1
+ export * from './map-tools.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pbnRlZ3JhdGlvbi9zcmMvbGliL21hcC9tYXAtdG9vbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbWFwLXRvb2xzLmNvbXBvbmVudCc7XG4iXX0=