@igo2/geo 1.14.1 → 1.14.3

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 (871) hide show
  1. package/esm2020/igo2-geo.mjs +4 -4
  2. package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +301 -299
  3. package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +306 -268
  4. package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +247 -247
  5. package/esm2020/lib/catalog/catalog-browser/catalog-browser.module.mjs +79 -79
  6. package/esm2020/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +208 -208
  7. package/esm2020/lib/catalog/catalog-library/catalog-library-item.component.mjs +78 -78
  8. package/esm2020/lib/catalog/catalog-library/catalog-library.component.mjs +216 -216
  9. package/esm2020/lib/catalog/catalog-library/catalog-library.module.mjs +94 -94
  10. package/esm2020/lib/catalog/catalog.module.mjs +52 -52
  11. package/esm2020/lib/catalog/index.mjs +4 -4
  12. package/esm2020/lib/catalog/shared/catalog.abstract.mjs +94 -94
  13. package/esm2020/lib/catalog/shared/catalog.enum.mjs +15 -15
  14. package/esm2020/lib/catalog/shared/catalog.interface.mjs +1 -1
  15. package/esm2020/lib/catalog/shared/catalog.service.mjs +605 -605
  16. package/esm2020/lib/catalog/shared/index.mjs +4 -4
  17. package/esm2020/lib/datasource/datasource.module.mjs +21 -21
  18. package/esm2020/lib/datasource/index.mjs +2 -2
  19. package/esm2020/lib/datasource/shared/capabilities.service.mjs +430 -430
  20. package/esm2020/lib/datasource/shared/datasource.service.mjs +235 -235
  21. package/esm2020/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
  22. package/esm2020/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
  23. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +1 -1
  24. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +144 -144
  25. package/esm2020/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
  26. package/esm2020/lib/datasource/shared/datasources/carto-datasource.mjs +108 -108
  27. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  28. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.mjs +14 -14
  29. package/esm2020/lib/datasource/shared/datasources/data.service.mjs +2 -2
  30. package/esm2020/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
  31. package/esm2020/lib/datasource/shared/datasources/datasource.mjs +28 -28
  32. package/esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  33. package/esm2020/lib/datasource/shared/datasources/feature-datasource.mjs +42 -42
  34. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
  35. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +56 -56
  36. package/esm2020/lib/datasource/shared/datasources/index.mjs +35 -35
  37. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
  38. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.mjs +27 -27
  39. package/esm2020/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
  40. package/esm2020/lib/datasource/shared/datasources/osm-datasource.mjs +11 -11
  41. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
  42. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +48 -48
  43. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
  44. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.mjs +14 -14
  45. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
  46. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.mjs +53 -53
  47. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
  48. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.mjs +71 -71
  49. package/esm2020/lib/datasource/shared/datasources/wfs.service.mjs +151 -151
  50. package/esm2020/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
  51. package/esm2020/lib/datasource/shared/datasources/wms-datasource.mjs +205 -205
  52. package/esm2020/lib/datasource/shared/datasources/wms-wfs.utils.mjs +206 -206
  53. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
  54. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.mjs +15 -15
  55. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  56. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.mjs +8 -8
  57. package/esm2020/lib/datasource/shared/index.mjs +4 -4
  58. package/esm2020/lib/datasource/shared/options/index.mjs +4 -4
  59. package/esm2020/lib/datasource/shared/options/options-api.interface.mjs +1 -1
  60. package/esm2020/lib/datasource/shared/options/options-api.providers.mjs +14 -14
  61. package/esm2020/lib/datasource/shared/options/options-api.service.mjs +80 -80
  62. package/esm2020/lib/datasource/shared/options/options.service.mjs +2 -2
  63. package/esm2020/lib/datasource/utils/esri-style-generator.mjs +356 -356
  64. package/esm2020/lib/datasource/utils/index.mjs +2 -2
  65. package/esm2020/lib/datasource/utils/tilegrid.mjs +19 -19
  66. package/esm2020/lib/directions/directions-buttons/directions-buttons.component.mjs +223 -223
  67. package/esm2020/lib/directions/directions-buttons/index.mjs +1 -1
  68. package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +289 -289
  69. package/esm2020/lib/directions/directions-inputs/index.mjs +1 -1
  70. package/esm2020/lib/directions/directions-results/directions-results.component.mjs +195 -195
  71. package/esm2020/lib/directions/directions-results/index.mjs +1 -1
  72. package/esm2020/lib/directions/directions-sources/directions-source.interface.mjs +1 -1
  73. package/esm2020/lib/directions/directions-sources/directions-source.mjs +2 -2
  74. package/esm2020/lib/directions/directions-sources/directions-source.provider.mjs +15 -15
  75. package/esm2020/lib/directions/directions-sources/index.mjs +4 -4
  76. package/esm2020/lib/directions/directions-sources/osrm-directions-source.mjs +98 -98
  77. package/esm2020/lib/directions/directions.component.mjs +310 -310
  78. package/esm2020/lib/directions/directions.module.mjs +101 -101
  79. package/esm2020/lib/directions/index.mjs +6 -6
  80. package/esm2020/lib/directions/shared/directions-source.service.mjs +16 -16
  81. package/esm2020/lib/directions/shared/directions.enum.mjs +27 -27
  82. package/esm2020/lib/directions/shared/directions.interface.mjs +1 -1
  83. package/esm2020/lib/directions/shared/directions.service.mjs +28 -28
  84. package/esm2020/lib/directions/shared/directions.utils.mjs +508 -508
  85. package/esm2020/lib/directions/shared/index.mjs +5 -5
  86. package/esm2020/lib/directions/shared/store.mjs +23 -23
  87. package/esm2020/lib/download/download-button/download-button.component.mjs +60 -60
  88. package/esm2020/lib/download/download-button/index.mjs +1 -1
  89. package/esm2020/lib/download/download.module.mjs +41 -41
  90. package/esm2020/lib/download/index.mjs +2 -2
  91. package/esm2020/lib/download/shared/download.interface.mjs +1 -1
  92. package/esm2020/lib/download/shared/download.service.mjs +64 -64
  93. package/esm2020/lib/download/shared/index.mjs +2 -2
  94. package/esm2020/lib/draw/draw/draw-layer-popup.component.mjs +54 -54
  95. package/esm2020/lib/draw/draw/draw-popup.component.mjs +590 -590
  96. package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +47 -47
  97. package/esm2020/lib/draw/draw/draw.component.mjs +1298 -1298
  98. package/esm2020/lib/draw/draw/draw.module.mjs +112 -112
  99. package/esm2020/lib/draw/drawingTool.module.mjs +19 -19
  100. package/esm2020/lib/draw/index.mjs +2 -2
  101. package/esm2020/lib/draw/shared/draw-icon.service.mjs +26 -26
  102. package/esm2020/lib/draw/shared/draw-style.service.mjs +189 -189
  103. package/esm2020/lib/draw/shared/draw.enum.mjs +36 -36
  104. package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
  105. package/esm2020/lib/draw/shared/draw.utils.mjs +121 -121
  106. package/esm2020/lib/draw/shared/index.mjs +5 -5
  107. package/esm2020/lib/feature/feature-details/feature-details.component.mjs +404 -404
  108. package/esm2020/lib/feature/feature-details/feature-details.directive.mjs +53 -53
  109. package/esm2020/lib/feature/feature-details/feature-details.module.mjs +47 -47
  110. package/esm2020/lib/feature/feature-form/feature-form.component.mjs +111 -111
  111. package/esm2020/lib/feature/feature-form/feature-form.module.mjs +33 -33
  112. package/esm2020/lib/feature/feature.module.mjs +27 -27
  113. package/esm2020/lib/feature/index.mjs +3 -3
  114. package/esm2020/lib/feature/shared/feature.enums.mjs +8 -8
  115. package/esm2020/lib/feature/shared/feature.interfaces.mjs +1 -1
  116. package/esm2020/lib/feature/shared/feature.utils.mjs +346 -346
  117. package/esm2020/lib/feature/shared/index.mjs +6 -6
  118. package/esm2020/lib/feature/shared/store.mjs +123 -123
  119. package/esm2020/lib/feature/shared/strategies/in-map-extent.mjs +112 -112
  120. package/esm2020/lib/feature/shared/strategies/in-map-resolution.mjs +93 -93
  121. package/esm2020/lib/feature/shared/strategies/index.mjs +5 -5
  122. package/esm2020/lib/feature/shared/strategies/loading-layer.mjs +103 -103
  123. package/esm2020/lib/feature/shared/strategies/loading.mjs +132 -132
  124. package/esm2020/lib/feature/shared/strategies/selection.mjs +369 -369
  125. package/esm2020/lib/feature/shared/strategies.utils.mjs +36 -36
  126. package/esm2020/lib/filter/filter.module.mjs +288 -288
  127. package/esm2020/lib/filter/index.mjs +15 -15
  128. package/esm2020/lib/filter/ogc-filter-button/index.mjs +1 -1
  129. package/esm2020/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +139 -139
  130. package/esm2020/lib/filter/ogc-filter-form/index.mjs +1 -1
  131. package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +644 -644
  132. package/esm2020/lib/filter/ogc-filter-selection/index.mjs +1 -1
  133. package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +1301 -1301
  134. package/esm2020/lib/filter/ogc-filter-time/index.mjs +2 -2
  135. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +176 -176
  136. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +897 -897
  137. package/esm2020/lib/filter/ogc-filterable-form/index.mjs +1 -1
  138. package/esm2020/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +58 -58
  139. package/esm2020/lib/filter/ogc-filterable-item/index.mjs +1 -1
  140. package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +306 -306
  141. package/esm2020/lib/filter/ogc-filterable-list/index.mjs +2 -2
  142. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +30 -30
  143. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +43 -43
  144. package/esm2020/lib/filter/shared/filterable-datasource.pipe.mjs +54 -54
  145. package/esm2020/lib/filter/shared/index.mjs +11 -11
  146. package/esm2020/lib/filter/shared/ogc-filter-time.service.mjs +71 -71
  147. package/esm2020/lib/filter/shared/ogc-filter.enum.mjs +29 -29
  148. package/esm2020/lib/filter/shared/ogc-filter.interface.mjs +1 -1
  149. package/esm2020/lib/filter/shared/ogc-filter.mjs +691 -691
  150. package/esm2020/lib/filter/shared/ogc-filter.service.mjs +45 -45
  151. package/esm2020/lib/filter/shared/spatial-filter.enum.mjs +22 -22
  152. package/esm2020/lib/filter/shared/spatial-filter.interface.mjs +1 -1
  153. package/esm2020/lib/filter/shared/spatial-filter.service.mjs +268 -268
  154. package/esm2020/lib/filter/shared/time-filter.enum.mjs +12 -12
  155. package/esm2020/lib/filter/shared/time-filter.interface.mjs +1 -1
  156. package/esm2020/lib/filter/shared/time-filter.service.mjs +106 -106
  157. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/index.mjs +1 -1
  158. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +1088 -1088
  159. package/esm2020/lib/filter/spatial-filter/spatial-filter-list/index.mjs +1 -1
  160. package/esm2020/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +207 -207
  161. package/esm2020/lib/filter/spatial-filter/spatial-filter-type/index.mjs +1 -1
  162. package/esm2020/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +143 -143
  163. package/esm2020/lib/filter/time-filter-button/index.mjs +1 -1
  164. package/esm2020/lib/filter/time-filter-button/time-filter-button.component.mjs +77 -77
  165. package/esm2020/lib/filter/time-filter-form/index.mjs +1 -1
  166. package/esm2020/lib/filter/time-filter-form/time-filter-form.component.mjs +733 -733
  167. package/esm2020/lib/filter/time-filter-item/index.mjs +1 -1
  168. package/esm2020/lib/filter/time-filter-item/time-filter-item.component.mjs +118 -118
  169. package/esm2020/lib/filter/time-filter-list/index.mjs +2 -2
  170. package/esm2020/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +30 -30
  171. package/esm2020/lib/filter/time-filter-list/time-filter-list.component.mjs +38 -38
  172. package/esm2020/lib/geo.module.mjs +101 -101
  173. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +520 -520
  174. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +188 -188
  175. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +63 -63
  176. package/esm2020/lib/geometry/geometry.module.mjs +26 -26
  177. package/esm2020/lib/geometry/index.mjs +3 -3
  178. package/esm2020/lib/geometry/shared/controls/draw.mjs +313 -313
  179. package/esm2020/lib/geometry/shared/controls/index.mjs +3 -3
  180. package/esm2020/lib/geometry/shared/controls/modify.mjs +520 -520
  181. package/esm2020/lib/geometry/shared/controls/slice.mjs +176 -176
  182. package/esm2020/lib/geometry/shared/geometry.errors.mjs +25 -25
  183. package/esm2020/lib/geometry/shared/geometry.interfaces.mjs +1 -1
  184. package/esm2020/lib/geometry/shared/geometry.utils.mjs +121 -121
  185. package/esm2020/lib/geometry/shared/index.mjs +4 -4
  186. package/esm2020/lib/import-export/export-button/export-button.component.mjs +63 -63
  187. package/esm2020/lib/import-export/export-button/index.mjs +1 -1
  188. package/esm2020/lib/import-export/import-export/import-export.component.mjs +1219 -1219
  189. package/esm2020/lib/import-export/import-export/index.mjs +1 -1
  190. package/esm2020/lib/import-export/import-export.module.mjs +95 -95
  191. package/esm2020/lib/import-export/index.mjs +4 -4
  192. package/esm2020/lib/import-export/shared/drop-geo-file.directive.mjs +134 -134
  193. package/esm2020/lib/import-export/shared/export.errors.mjs +14 -14
  194. package/esm2020/lib/import-export/shared/export.interface.mjs +1 -1
  195. package/esm2020/lib/import-export/shared/export.service.mjs +195 -195
  196. package/esm2020/lib/import-export/shared/export.type.mjs +3 -3
  197. package/esm2020/lib/import-export/shared/export.utils.mjs +54 -54
  198. package/esm2020/lib/import-export/shared/import.errors.mjs +38 -38
  199. package/esm2020/lib/import-export/shared/import.interface.mjs +1 -1
  200. package/esm2020/lib/import-export/shared/import.service.mjs +214 -214
  201. package/esm2020/lib/import-export/shared/import.utils.mjs +234 -234
  202. package/esm2020/lib/import-export/shared/index.mjs +10 -10
  203. package/esm2020/lib/import-export/style-list/index.mjs +4 -4
  204. package/esm2020/lib/import-export/style-list/style-list.interface.mjs +1 -1
  205. package/esm2020/lib/import-export/style-list/style-list.module.mjs +22 -22
  206. package/esm2020/lib/import-export/style-list/style-list.provider.mjs +20 -20
  207. package/esm2020/lib/import-export/style-list/style-list.service.mjs +50 -50
  208. package/esm2020/lib/layer/index.mjs +10 -10
  209. package/esm2020/lib/layer/layer-item/index.mjs +1 -1
  210. package/esm2020/lib/layer/layer-item/layer-item.component.mjs +299 -299
  211. package/esm2020/lib/layer/layer-legend/index.mjs +1 -1
  212. package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +387 -387
  213. package/esm2020/lib/layer/layer-legend-item/index.mjs +1 -1
  214. package/esm2020/lib/layer/layer-legend-item/layer-legend-item.component.mjs +83 -83
  215. package/esm2020/lib/layer/layer-legend-list/index.mjs +2 -2
  216. package/esm2020/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +47 -47
  217. package/esm2020/lib/layer/layer-legend-list/layer-legend-list.component.mjs +194 -194
  218. package/esm2020/lib/layer/layer-list/index.mjs +3 -3
  219. package/esm2020/lib/layer/layer-list/layer-list-binding.directive.mjs +58 -58
  220. package/esm2020/lib/layer/layer-list/layer-list.component.mjs +1008 -1008
  221. package/esm2020/lib/layer/layer-list/layer-list.enum.mjs +18 -18
  222. package/esm2020/lib/layer/layer-list-tool/index.mjs +4 -4
  223. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +164 -164
  224. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +6 -6
  225. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +1 -1
  226. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.service.mjs +21 -21
  227. package/esm2020/lib/layer/layer.module.mjs +184 -184
  228. package/esm2020/lib/layer/shared/clusterParam.mjs +1 -1
  229. package/esm2020/lib/layer/shared/index.mjs +6 -6
  230. package/esm2020/lib/layer/shared/layer.enums.mjs +1 -1
  231. package/esm2020/lib/layer/shared/layer.service.mjs +185 -185
  232. package/esm2020/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
  233. package/esm2020/lib/layer/shared/layers/any-layer.mjs +1 -1
  234. package/esm2020/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
  235. package/esm2020/lib/layer/shared/layers/image-layer.mjs +67 -67
  236. package/esm2020/lib/layer/shared/layers/index.mjs +12 -12
  237. package/esm2020/lib/layer/shared/layers/layer.interface.mjs +17 -17
  238. package/esm2020/lib/layer/shared/layers/layer.mjs +163 -163
  239. package/esm2020/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
  240. package/esm2020/lib/layer/shared/layers/tile-layer.mjs +46 -46
  241. package/esm2020/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
  242. package/esm2020/lib/layer/shared/layers/vector-layer.mjs +377 -377
  243. package/esm2020/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
  244. package/esm2020/lib/layer/shared/layers/vectortile-layer.mjs +103 -103
  245. package/esm2020/lib/layer/shared/style.service.mjs +355 -355
  246. package/esm2020/lib/layer/shared/vector-style.interface.mjs +1 -1
  247. package/esm2020/lib/layer/style-modal/index.mjs +1 -1
  248. package/esm2020/lib/layer/style-modal/style-modal.component.mjs +287 -287
  249. package/esm2020/lib/layer/track-feature-button/index.mjs +1 -1
  250. package/esm2020/lib/layer/track-feature-button/track-feature-button.component.mjs +58 -58
  251. package/esm2020/lib/layer/utils/image-watcher.mjs +61 -61
  252. package/esm2020/lib/layer/utils/index.mjs +5 -5
  253. package/esm2020/lib/layer/utils/layer.utils.mjs +9 -9
  254. package/esm2020/lib/layer/utils/outputLegend.mjs +26 -26
  255. package/esm2020/lib/layer/utils/tile-watcher.mjs +49 -49
  256. package/esm2020/lib/layer/utils/vector-watcher.mjs +47 -47
  257. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +19 -19
  258. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +96 -96
  259. package/esm2020/lib/map/baselayers-switcher/index.mjs +2 -2
  260. package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +141 -133
  261. package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +78 -78
  262. package/esm2020/lib/map/geolocate-button/index.mjs +1 -1
  263. package/esm2020/lib/map/home-extent-button/home-extent-button.component.mjs +62 -62
  264. package/esm2020/lib/map/home-extent-button/index.mjs +1 -1
  265. package/esm2020/lib/map/index.mjs +13 -13
  266. package/esm2020/lib/map/info-section/index.mjs +1 -1
  267. package/esm2020/lib/map/info-section/info-section.component.mjs +29 -29
  268. package/esm2020/lib/map/map-browser/index.mjs +1 -1
  269. package/esm2020/lib/map/map-browser/map-browser.component.mjs +65 -65
  270. package/esm2020/lib/map/map-center/index.mjs +1 -1
  271. package/esm2020/lib/map/map-center/map-center.component.mjs +49 -49
  272. package/esm2020/lib/map/map.module.mjs +126 -126
  273. package/esm2020/lib/map/menu-button/index.mjs +1 -1
  274. package/esm2020/lib/map/menu-button/menu-button.component.mjs +61 -61
  275. package/esm2020/lib/map/offline-button/index.mjs +1 -1
  276. package/esm2020/lib/map/offline-button/offline-button.component.mjs +75 -75
  277. package/esm2020/lib/map/rotation-button/index.mjs +1 -1
  278. package/esm2020/lib/map/rotation-button/rotation-button.component.mjs +69 -69
  279. package/esm2020/lib/map/shared/controllers/controller.mjs +41 -41
  280. package/esm2020/lib/map/shared/controllers/geolocation.mjs +307 -307
  281. package/esm2020/lib/map/shared/controllers/index.mjs +3 -3
  282. package/esm2020/lib/map/shared/controllers/view.mjs +350 -350
  283. package/esm2020/lib/map/shared/hover-feature.directive.mjs +502 -502
  284. package/esm2020/lib/map/shared/index.mjs +13 -13
  285. package/esm2020/lib/map/shared/linkedLayers.utils.mjs +237 -237
  286. package/esm2020/lib/map/shared/map-pointer-position.directive.mjs +106 -106
  287. package/esm2020/lib/map/shared/map.enums.mjs +5 -5
  288. package/esm2020/lib/map/shared/map.interface.mjs +1 -1
  289. package/esm2020/lib/map/shared/map.mjs +406 -406
  290. package/esm2020/lib/map/shared/map.service.mjs +28 -28
  291. package/esm2020/lib/map/shared/map.utils.mjs +463 -462
  292. package/esm2020/lib/map/shared/mapOffline.directive.mjs +162 -162
  293. package/esm2020/lib/map/shared/projection.interfaces.mjs +1 -1
  294. package/esm2020/lib/map/shared/projection.service.mjs +64 -64
  295. package/esm2020/lib/map/shared/projection.utils.mjs +63 -63
  296. package/esm2020/lib/map/swipe-control/index.mjs +1 -1
  297. package/esm2020/lib/map/swipe-control/swipe-control.component.mjs +192 -192
  298. package/esm2020/lib/map/utils/layer-watcher.mjs +78 -78
  299. package/esm2020/lib/map/wake-lock-button/index.mjs +1 -1
  300. package/esm2020/lib/map/wake-lock-button/wake-lock-button.component.mjs +113 -113
  301. package/esm2020/lib/map/zoom-button/index.mjs +1 -1
  302. package/esm2020/lib/map/zoom-button/zoom-button.component.mjs +39 -39
  303. package/esm2020/lib/measure/index.mjs +3 -3
  304. package/esm2020/lib/measure/measure.module.mjs +19 -19
  305. package/esm2020/lib/measure/measurer/measure-format.pipe.mjs +36 -36
  306. package/esm2020/lib/measure/measurer/measurer-dialog.component.mjs +179 -179
  307. package/esm2020/lib/measure/measurer/measurer-item.component.mjs +139 -139
  308. package/esm2020/lib/measure/measurer/measurer.component.mjs +1041 -1041
  309. package/esm2020/lib/measure/measurer/measurer.module.mjs +93 -93
  310. package/esm2020/lib/measure/shared/index.mjs +3 -3
  311. package/esm2020/lib/measure/shared/measure.enum.mjs +36 -36
  312. package/esm2020/lib/measure/shared/measure.interfaces.mjs +1 -1
  313. package/esm2020/lib/measure/shared/measure.utils.mjs +488 -488
  314. package/esm2020/lib/metadata/index.mjs +2 -2
  315. package/esm2020/lib/metadata/metadata-button/index.mjs +1 -1
  316. package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +133 -133
  317. package/esm2020/lib/metadata/metadata.module.mjs +54 -54
  318. package/esm2020/lib/metadata/shared/index.mjs +2 -2
  319. package/esm2020/lib/metadata/shared/metadata.interface.mjs +1 -1
  320. package/esm2020/lib/metadata/shared/metadata.service.mjs +18 -18
  321. package/esm2020/lib/offline/geoDB/configFileToGeoDB.service.mjs +104 -104
  322. package/esm2020/lib/offline/geoDB/geoDB.enums.mjs +5 -5
  323. package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +1 -1
  324. package/esm2020/lib/offline/geoDB/geoDB.service.mjs +166 -166
  325. package/esm2020/lib/offline/geoDB/index.mjs +4 -4
  326. package/esm2020/lib/offline/index.mjs +2 -2
  327. package/esm2020/lib/offline/shared/geo-network.service.mjs +65 -65
  328. package/esm2020/lib/offline/shared/index.mjs +1 -1
  329. package/esm2020/lib/overlay/index.mjs +1 -1
  330. package/esm2020/lib/overlay/overlay.module.mjs +22 -22
  331. package/esm2020/lib/overlay/shared/index.mjs +6 -6
  332. package/esm2020/lib/overlay/shared/overlay-marker-style.utils.mjs +68 -68
  333. package/esm2020/lib/overlay/shared/overlay.directive.mjs +32 -32
  334. package/esm2020/lib/overlay/shared/overlay.enum.mjs +7 -7
  335. package/esm2020/lib/overlay/shared/overlay.mjs +129 -129
  336. package/esm2020/lib/overlay/shared/overlay.service.mjs +26 -26
  337. package/esm2020/lib/overlay/shared/overlay.utils.mjs +102 -102
  338. package/esm2020/lib/print/index.mjs +3 -3
  339. package/esm2020/lib/print/print/print.component.mjs +126 -123
  340. package/esm2020/lib/print/print-form/index.mjs +1 -1
  341. package/esm2020/lib/print/print-form/print-form.component.mjs +428 -405
  342. package/esm2020/lib/print/print.module.mjs +64 -64
  343. package/esm2020/lib/print/shared/geopdf.mjs +57 -57
  344. package/esm2020/lib/print/shared/index.mjs +4 -4
  345. package/esm2020/lib/print/shared/print.interface.mjs +1 -1
  346. package/esm2020/lib/print/shared/print.service.mjs +934 -861
  347. package/esm2020/lib/print/shared/print.type.mjs +29 -29
  348. package/esm2020/lib/query/index.mjs +1 -1
  349. package/esm2020/lib/query/query.module.mjs +28 -28
  350. package/esm2020/lib/query/shared/index.mjs +6 -6
  351. package/esm2020/lib/query/shared/query-search-source.mjs +34 -34
  352. package/esm2020/lib/query/shared/query-search-source.providers.mjs +21 -21
  353. package/esm2020/lib/query/shared/query.directive.mjs +260 -260
  354. package/esm2020/lib/query/shared/query.enums.mjs +29 -29
  355. package/esm2020/lib/query/shared/query.interfaces.mjs +2 -2
  356. package/esm2020/lib/query/shared/query.service.mjs +733 -619
  357. package/esm2020/lib/query/shared/query.utils.mjs +36 -36
  358. package/esm2020/lib/search/index.mjs +11 -11
  359. package/esm2020/lib/search/search-bar/search-bar.component.mjs +512 -493
  360. package/esm2020/lib/search/search-bar/search-bar.module.mjs +74 -74
  361. package/esm2020/lib/search/search-bar/search-url-param.directive.mjs +34 -34
  362. package/esm2020/lib/search/search-results/save-feature-dialog.component.mjs +118 -0
  363. package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +371 -193
  364. package/esm2020/lib/search/search-results/search-results-item.component.mjs +124 -124
  365. package/esm2020/lib/search/search-results/search-results.component.mjs +340 -340
  366. package/esm2020/lib/search/search-results/search-results.module.mjs +104 -77
  367. package/esm2020/lib/search/search-selector/search-selector.component.mjs +122 -122
  368. package/esm2020/lib/search/search-selector/search-selector.module.mjs +55 -55
  369. package/esm2020/lib/search/search-settings/search-settings.component.mjs +442 -418
  370. package/esm2020/lib/search/search-settings/search-settings.module.mjs +59 -59
  371. package/esm2020/lib/search/search.module.mjs +66 -66
  372. package/esm2020/lib/search/shared/index.mjs +8 -8
  373. package/esm2020/lib/search/shared/search-pointer-summary.directive.mjs +321 -321
  374. package/esm2020/lib/search/shared/search-source-service.providers.mjs +19 -19
  375. package/esm2020/lib/search/shared/search-source.service.mjs +46 -46
  376. package/esm2020/lib/search/shared/search.enums.mjs +3 -3
  377. package/esm2020/lib/search/shared/search.interfaces.mjs +1 -1
  378. package/esm2020/lib/search/shared/search.service.mjs +121 -118
  379. package/esm2020/lib/search/shared/search.utils.mjs +90 -90
  380. package/esm2020/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
  381. package/esm2020/lib/search/shared/sources/coordinates.mjs +153 -147
  382. package/esm2020/lib/search/shared/sources/coordinates.providers.mjs +39 -39
  383. package/esm2020/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
  384. package/esm2020/lib/search/shared/sources/icherche.mjs +767 -767
  385. package/esm2020/lib/search/shared/sources/icherche.providers.mjs +65 -65
  386. package/esm2020/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
  387. package/esm2020/lib/search/shared/sources/ilayer.mjs +320 -320
  388. package/esm2020/lib/search/shared/sources/ilayer.providers.mjs +39 -39
  389. package/esm2020/lib/search/shared/sources/index.mjs +17 -17
  390. package/esm2020/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
  391. package/esm2020/lib/search/shared/sources/nominatim.mjs +251 -251
  392. package/esm2020/lib/search/shared/sources/nominatim.providers.mjs +22 -22
  393. package/esm2020/lib/search/shared/sources/source.interfaces.mjs +1 -1
  394. package/esm2020/lib/search/shared/sources/source.mjs +179 -179
  395. package/esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
  396. package/esm2020/lib/search/shared/sources/storedqueries.mjs +424 -424
  397. package/esm2020/lib/search/shared/sources/storedqueries.providers.mjs +40 -40
  398. package/esm2020/lib/toast/index.mjs +1 -1
  399. package/esm2020/lib/toast/toast.component.mjs +112 -112
  400. package/esm2020/lib/toast/toast.module.mjs +44 -44
  401. package/esm2020/lib/utils/commonVectorStyle.interface.mjs +1 -1
  402. package/esm2020/lib/utils/commonVectorStyle.mjs +74 -74
  403. package/esm2020/lib/utils/googleLinks.mjs +12 -12
  404. package/esm2020/lib/utils/id-generator.mjs +109 -109
  405. package/esm2020/lib/utils/index.mjs +5 -5
  406. package/esm2020/lib/utils/osmLinks.mjs +9 -9
  407. package/esm2020/lib/wkt/index.mjs +1 -1
  408. package/esm2020/lib/wkt/shared/index.mjs +1 -1
  409. package/esm2020/lib/wkt/shared/wkt.service.mjs +224 -224
  410. package/esm2020/lib/wkt/wkt.module.mjs +21 -21
  411. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +47 -47
  412. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +35 -35
  413. package/esm2020/lib/workspace/confirmation-popup/index.mjs +2 -2
  414. package/esm2020/lib/workspace/index.mjs +7 -7
  415. package/esm2020/lib/workspace/shared/edition-workspace.mjs +279 -279
  416. package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +656 -656
  417. package/esm2020/lib/workspace/shared/feature-workspace.mjs +34 -34
  418. package/esm2020/lib/workspace/shared/feature-workspace.service.mjs +149 -149
  419. package/esm2020/lib/workspace/shared/index.mjs +7 -7
  420. package/esm2020/lib/workspace/shared/wfs-workspace.mjs +34 -34
  421. package/esm2020/lib/workspace/shared/wfs-workspace.service.mjs +149 -149
  422. package/esm2020/lib/workspace/shared/wms-workspace.service.mjs +259 -259
  423. package/esm2020/lib/workspace/shared/workspace.utils.mjs +23 -23
  424. package/esm2020/lib/workspace/widgets/index.mjs +3 -3
  425. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +46 -46
  426. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +35 -35
  427. package/esm2020/lib/workspace/widgets/widgets.mjs +14 -14
  428. package/esm2020/lib/workspace/workspace-selector/workspace-selector.directive.mjs +132 -132
  429. package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +27 -27
  430. package/esm2020/lib/workspace/workspace-updator/workspace-updator.directive.mjs +112 -112
  431. package/esm2020/lib/workspace/workspace-updator/workspace-updator.module.mjs +27 -27
  432. package/esm2020/lib/workspace/workspace.module.mjs +61 -61
  433. package/esm2020/public_api.mjs +54 -54
  434. package/fesm2015/igo2-geo.mjs +44993 -44364
  435. package/fesm2015/igo2-geo.mjs.map +1 -1
  436. package/fesm2020/igo2-geo.mjs +43075 -42470
  437. package/fesm2020/igo2-geo.mjs.map +1 -1
  438. package/index.d.ts +5 -5
  439. package/lib/catalog/catalog-browser/catalog-browser-group.component.d.ts +126 -124
  440. package/lib/catalog/catalog-browser/catalog-browser-layer.component.d.ts +80 -73
  441. package/lib/catalog/catalog-browser/catalog-browser.component.d.ts +105 -105
  442. package/lib/catalog/catalog-browser/catalog-browser.module.d.ts +22 -22
  443. package/lib/catalog/catalog-library/add-catalog-dialog.component.d.ts +45 -45
  444. package/lib/catalog/catalog-library/catalog-library-item.component.d.ts +25 -25
  445. package/lib/catalog/catalog-library/catalog-library.component.d.ts +65 -65
  446. package/lib/catalog/catalog-library/catalog-library.module.d.ts +26 -26
  447. package/lib/catalog/catalog.module.d.ts +14 -14
  448. package/lib/catalog/index.d.ts +4 -4
  449. package/lib/catalog/shared/catalog.abstract.d.ts +50 -50
  450. package/lib/catalog/shared/catalog.enum.d.ts +14 -14
  451. package/lib/catalog/shared/catalog.interface.d.ts +66 -66
  452. package/lib/catalog/shared/catalog.service.d.ts +36 -36
  453. package/lib/catalog/shared/index.d.ts +4 -4
  454. package/lib/datasource/datasource.module.d.ts +8 -8
  455. package/lib/datasource/index.d.ts +2 -2
  456. package/lib/datasource/shared/capabilities.service.d.ts +37 -37
  457. package/lib/datasource/shared/datasource.service.d.ts +37 -37
  458. package/lib/datasource/shared/datasources/any-datasource.d.ts +16 -16
  459. package/lib/datasource/shared/datasources/any-datasource.interface.d.ts +15 -15
  460. package/lib/datasource/shared/datasources/arcgisrest-datasource.d.ts +14 -14
  461. package/lib/datasource/shared/datasources/arcgisrest-datasource.interface.d.ts +14 -14
  462. package/lib/datasource/shared/datasources/carto-datasource.d.ts +15 -15
  463. package/lib/datasource/shared/datasources/carto-datasource.interface.d.ts +13 -13
  464. package/lib/datasource/shared/datasources/cluster-datasource.d.ts +10 -10
  465. package/lib/datasource/shared/datasources/cluster-datasource.interface.d.ts +11 -11
  466. package/lib/datasource/shared/datasources/data.service.d.ts +3 -3
  467. package/lib/datasource/shared/datasources/datasource.d.ts +20 -20
  468. package/lib/datasource/shared/datasources/datasource.interface.d.ts +100 -100
  469. package/lib/datasource/shared/datasources/feature-datasource.d.ts +12 -12
  470. package/lib/datasource/shared/datasources/feature-datasource.interface.d.ts +18 -18
  471. package/lib/datasource/shared/datasources/imagearcgisrest-datasource.d.ts +15 -15
  472. package/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.d.ts +15 -15
  473. package/lib/datasource/shared/datasources/index.d.ts +35 -35
  474. package/lib/datasource/shared/datasources/mvt-datasource.d.ts +10 -10
  475. package/lib/datasource/shared/datasources/mvt-datasource.interface.d.ts +13 -13
  476. package/lib/datasource/shared/datasources/osm-datasource.d.ts +9 -9
  477. package/lib/datasource/shared/datasources/osm-datasource.interface.d.ts +7 -7
  478. package/lib/datasource/shared/datasources/tilearcgisrest-datasource.d.ts +15 -15
  479. package/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.d.ts +14 -14
  480. package/lib/datasource/shared/datasources/tiledebug-datasource.d.ts +9 -9
  481. package/lib/datasource/shared/datasources/tiledebug-datasource.interface.d.ts +9 -9
  482. package/lib/datasource/shared/datasources/websocket-datasource.d.ts +15 -15
  483. package/lib/datasource/shared/datasources/websocket-datasource.interface.d.ts +7 -7
  484. package/lib/datasource/shared/datasources/wfs-datasource.d.ts +20 -20
  485. package/lib/datasource/shared/datasources/wfs-datasource.interface.d.ts +20 -20
  486. package/lib/datasource/shared/datasources/wfs.service.d.ts +17 -17
  487. package/lib/datasource/shared/datasources/wms-datasource.d.ts +31 -31
  488. package/lib/datasource/shared/datasources/wms-datasource.interface.d.ts +32 -32
  489. package/lib/datasource/shared/datasources/wms-wfs.utils.d.ts +41 -41
  490. package/lib/datasource/shared/datasources/wmts-datasource.d.ts +10 -10
  491. package/lib/datasource/shared/datasources/wmts-datasource.interface.d.ts +13 -13
  492. package/lib/datasource/shared/datasources/xyz-datasource.d.ts +9 -9
  493. package/lib/datasource/shared/datasources/xyz-datasource.interface.d.ts +11 -11
  494. package/lib/datasource/shared/index.d.ts +4 -4
  495. package/lib/datasource/shared/options/index.d.ts +4 -4
  496. package/lib/datasource/shared/options/options-api.interface.d.ts +4 -4
  497. package/lib/datasource/shared/options/options-api.providers.d.ts +10 -10
  498. package/lib/datasource/shared/options/options-api.service.d.ts +16 -16
  499. package/lib/datasource/shared/options/options.service.d.ts +6 -6
  500. package/lib/datasource/utils/esri-style-generator.d.ts +21 -21
  501. package/lib/datasource/utils/index.d.ts +2 -2
  502. package/lib/datasource/utils/tilegrid.d.ts +2 -2
  503. package/lib/directions/directions-buttons/directions-buttons.component.d.ts +30 -30
  504. package/lib/directions/directions-buttons/index.d.ts +1 -1
  505. package/lib/directions/directions-inputs/directions-inputs.component.d.ts +45 -45
  506. package/lib/directions/directions-inputs/index.d.ts +1 -1
  507. package/lib/directions/directions-results/directions-results.component.d.ts +30 -30
  508. package/lib/directions/directions-results/index.d.ts +1 -1
  509. package/lib/directions/directions-sources/directions-source.d.ts +7 -7
  510. package/lib/directions/directions-sources/directions-source.interface.d.ts +11 -11
  511. package/lib/directions/directions-sources/directions-source.provider.d.ts +11 -11
  512. package/lib/directions/directions-sources/index.d.ts +4 -4
  513. package/lib/directions/directions-sources/osrm-directions-source.d.ts +23 -23
  514. package/lib/directions/directions.component.d.ts +56 -56
  515. package/lib/directions/directions.module.d.ts +26 -26
  516. package/lib/directions/index.d.ts +6 -6
  517. package/lib/directions/shared/directions-source.service.d.ts +11 -11
  518. package/lib/directions/shared/directions.enum.d.ts +22 -22
  519. package/lib/directions/shared/directions.interface.d.ts +126 -126
  520. package/lib/directions/shared/directions.service.d.ts +13 -13
  521. package/lib/directions/shared/directions.utils.d.ts +42 -42
  522. package/lib/directions/shared/index.d.ts +5 -5
  523. package/lib/directions/shared/store.d.ts +18 -18
  524. package/lib/download/download-button/download-button.component.d.ts +18 -18
  525. package/lib/download/download-button/index.d.ts +1 -1
  526. package/lib/download/download.module.d.ts +14 -14
  527. package/lib/download/index.d.ts +2 -2
  528. package/lib/download/shared/download.interface.d.ts +10 -10
  529. package/lib/download/shared/download.service.d.ts +11 -11
  530. package/lib/download/shared/index.d.ts +2 -2
  531. package/lib/draw/draw/draw-layer-popup.component.d.ts +14 -14
  532. package/lib/draw/draw/draw-popup.component.d.ts +63 -63
  533. package/lib/draw/draw/draw-shorcuts.component.d.ts +5 -5
  534. package/lib/draw/draw/draw.component.d.ts +239 -239
  535. package/lib/draw/draw/draw.module.d.ts +34 -34
  536. package/lib/draw/drawingTool.module.d.ts +7 -7
  537. package/lib/draw/index.d.ts +2 -2
  538. package/lib/draw/shared/draw-icon.service.d.ts +12 -12
  539. package/lib/draw/shared/draw-style.service.d.ts +36 -36
  540. package/lib/draw/shared/draw.enum.d.ts +32 -32
  541. package/lib/draw/shared/draw.interface.d.ts +40 -40
  542. package/lib/draw/shared/draw.utils.d.ts +35 -35
  543. package/lib/draw/shared/index.d.ts +5 -5
  544. package/lib/feature/feature-details/feature-details.component.d.ts +60 -60
  545. package/lib/feature/feature-details/feature-details.directive.d.ts +19 -19
  546. package/lib/feature/feature-details/feature-details.module.d.ts +15 -15
  547. package/lib/feature/feature-form/feature-form.component.d.ts +50 -50
  548. package/lib/feature/feature-form/feature-form.module.d.ts +12 -12
  549. package/lib/feature/feature.module.d.ts +9 -9
  550. package/lib/feature/index.d.ts +3 -3
  551. package/lib/feature/shared/feature.enums.d.ts +7 -7
  552. package/lib/feature/shared/feature.interfaces.d.ts +74 -74
  553. package/lib/feature/shared/feature.utils.d.ts +104 -104
  554. package/lib/feature/shared/index.d.ts +6 -6
  555. package/lib/feature/shared/store.d.ts +71 -71
  556. package/lib/feature/shared/strategies/in-map-extent.d.ts +52 -52
  557. package/lib/feature/shared/strategies/in-map-resolution.d.ts +52 -52
  558. package/lib/feature/shared/strategies/index.d.ts +5 -5
  559. package/lib/feature/shared/strategies/loading-layer.d.ts +59 -59
  560. package/lib/feature/shared/strategies/loading.d.ts +75 -75
  561. package/lib/feature/shared/strategies/selection.d.ts +176 -176
  562. package/lib/feature/shared/strategies.utils.d.ts +17 -17
  563. package/lib/filter/filter.module.d.ts +53 -53
  564. package/lib/filter/index.d.ts +15 -15
  565. package/lib/filter/ogc-filter-button/index.d.ts +1 -1
  566. package/lib/filter/ogc-filter-button/ogc-filter-button.component.d.ts +20 -20
  567. package/lib/filter/ogc-filter-form/index.d.ts +1 -1
  568. package/lib/filter/ogc-filter-form/ogc-filter-form.component.d.ts +65 -65
  569. package/lib/filter/ogc-filter-selection/index.d.ts +1 -1
  570. package/lib/filter/ogc-filter-selection/ogc-filter-selection.component.d.ts +93 -93
  571. package/lib/filter/ogc-filter-time/index.d.ts +2 -2
  572. package/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.d.ts +39 -39
  573. package/lib/filter/ogc-filter-time/ogc-filter-time.component.d.ts +86 -86
  574. package/lib/filter/ogc-filterable-form/index.d.ts +1 -1
  575. package/lib/filter/ogc-filterable-form/ogc-filterable-form.component.d.ts +15 -15
  576. package/lib/filter/ogc-filterable-item/index.d.ts +1 -1
  577. package/lib/filter/ogc-filterable-item/ogc-filterable-item.component.d.ts +41 -41
  578. package/lib/filter/ogc-filterable-list/index.d.ts +2 -2
  579. package/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.d.ts +14 -14
  580. package/lib/filter/ogc-filterable-list/ogc-filterable-list.component.d.ts +10 -10
  581. package/lib/filter/shared/filterable-datasource.pipe.d.ts +10 -10
  582. package/lib/filter/shared/index.d.ts +11 -11
  583. package/lib/filter/shared/ogc-filter-time.service.d.ts +19 -19
  584. package/lib/filter/shared/ogc-filter.d.ts +29 -29
  585. package/lib/filter/shared/ogc-filter.enum.d.ts +27 -27
  586. package/lib/filter/shared/ogc-filter.interface.d.ts +200 -200
  587. package/lib/filter/shared/ogc-filter.service.d.ts +11 -11
  588. package/lib/filter/shared/spatial-filter.enum.d.ts +19 -19
  589. package/lib/filter/shared/spatial-filter.interface.d.ts +10 -10
  590. package/lib/filter/shared/spatial-filter.service.d.ts +37 -37
  591. package/lib/filter/shared/time-filter.enum.d.ts +10 -10
  592. package/lib/filter/shared/time-filter.interface.d.ts +29 -29
  593. package/lib/filter/shared/time-filter.service.d.ts +11 -11
  594. package/lib/filter/spatial-filter/spatial-filter-item/index.d.ts +1 -1
  595. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +166 -166
  596. package/lib/filter/spatial-filter/spatial-filter-list/index.d.ts +1 -1
  597. package/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.d.ts +58 -58
  598. package/lib/filter/spatial-filter/spatial-filter-type/index.d.ts +1 -1
  599. package/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.d.ts +45 -45
  600. package/lib/filter/time-filter-button/index.d.ts +1 -1
  601. package/lib/filter/time-filter-button/time-filter-button.component.d.ts +20 -20
  602. package/lib/filter/time-filter-form/index.d.ts +1 -1
  603. package/lib/filter/time-filter-form/time-filter-form.component.d.ts +77 -77
  604. package/lib/filter/time-filter-item/index.d.ts +1 -1
  605. package/lib/filter/time-filter-item/time-filter-item.component.d.ts +28 -28
  606. package/lib/filter/time-filter-list/index.d.ts +2 -2
  607. package/lib/filter/time-filter-list/time-filter-list-binding.directive.d.ts +14 -14
  608. package/lib/filter/time-filter-list/time-filter-list.component.d.ts +12 -12
  609. package/lib/geo.module.d.ts +28 -28
  610. package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +206 -206
  611. package/lib/geometry/geometry-form-field/geometry-form-field.component.d.ts +88 -88
  612. package/lib/geometry/geometry-form-field/geometry-form-field.module.d.ts +19 -19
  613. package/lib/geometry/geometry.module.d.ts +8 -8
  614. package/lib/geometry/index.d.ts +3 -3
  615. package/lib/geometry/shared/controls/draw.d.ts +150 -150
  616. package/lib/geometry/shared/controls/index.d.ts +3 -3
  617. package/lib/geometry/shared/controls/modify.d.ts +228 -228
  618. package/lib/geometry/shared/controls/slice.d.ts +99 -99
  619. package/lib/geometry/shared/geometry.errors.d.ts +11 -11
  620. package/lib/geometry/shared/geometry.interfaces.d.ts +13 -13
  621. package/lib/geometry/shared/geometry.utils.d.ts +45 -45
  622. package/lib/geometry/shared/index.d.ts +4 -4
  623. package/lib/import-export/export-button/export-button.component.d.ts +16 -16
  624. package/lib/import-export/export-button/index.d.ts +1 -1
  625. package/lib/import-export/import-export/import-export.component.d.ts +104 -104
  626. package/lib/import-export/import-export/index.d.ts +1 -1
  627. package/lib/import-export/import-export.module.d.ts +26 -26
  628. package/lib/import-export/index.d.ts +4 -4
  629. package/lib/import-export/shared/drop-geo-file.directive.d.ts +36 -36
  630. package/lib/import-export/shared/export.errors.d.ts +8 -8
  631. package/lib/import-export/shared/export.interface.d.ts +11 -11
  632. package/lib/import-export/shared/export.service.d.ts +30 -30
  633. package/lib/import-export/shared/export.type.d.ts +16 -16
  634. package/lib/import-export/shared/export.utils.d.ts +19 -19
  635. package/lib/import-export/shared/import.errors.d.ts +20 -20
  636. package/lib/import-export/shared/import.interface.d.ts +8 -8
  637. package/lib/import-export/shared/import.service.d.ts +31 -31
  638. package/lib/import-export/shared/import.utils.d.ts +18 -18
  639. package/lib/import-export/shared/index.d.ts +10 -10
  640. package/lib/import-export/style-list/index.d.ts +4 -4
  641. package/lib/import-export/style-list/style-list.interface.d.ts +6 -6
  642. package/lib/import-export/style-list/style-list.module.d.ts +8 -8
  643. package/lib/import-export/style-list/style-list.provider.d.ts +15 -15
  644. package/lib/import-export/style-list/style-list.service.d.ts +18 -18
  645. package/lib/layer/index.d.ts +10 -10
  646. package/lib/layer/layer-item/index.d.ts +1 -1
  647. package/lib/layer/layer-item/layer-item.component.d.ts +62 -62
  648. package/lib/layer/layer-legend/index.d.ts +1 -1
  649. package/lib/layer/layer-legend/layer-legend.component.d.ts +90 -90
  650. package/lib/layer/layer-legend-item/index.d.ts +1 -1
  651. package/lib/layer/layer-legend-item/layer-legend-item.component.d.ts +22 -22
  652. package/lib/layer/layer-legend-list/index.d.ts +2 -2
  653. package/lib/layer/layer-legend-list/layer-legend-list-binding.directive.d.ts +16 -16
  654. package/lib/layer/layer-legend-list/layer-legend-list.component.d.ts +31 -31
  655. package/lib/layer/layer-list/index.d.ts +3 -3
  656. package/lib/layer/layer-list/layer-list-binding.directive.d.ts +19 -19
  657. package/lib/layer/layer-list/layer-list.component.d.ts +127 -127
  658. package/lib/layer/layer-list/layer-list.enum.d.ts +15 -15
  659. package/lib/layer/layer-list-tool/index.d.ts +4 -4
  660. package/lib/layer/layer-list-tool/layer-list-tool.component.d.ts +32 -32
  661. package/lib/layer/layer-list-tool/layer-list-tool.enum.d.ts +5 -5
  662. package/lib/layer/layer-list-tool/layer-list-tool.interface.d.ts +8 -8
  663. package/lib/layer/layer-list-tool/layer-list-tool.service.d.ts +14 -14
  664. package/lib/layer/layer.module.d.ts +36 -36
  665. package/lib/layer/shared/clusterParam.d.ts +13 -13
  666. package/lib/layer/shared/index.d.ts +6 -6
  667. package/lib/layer/shared/layer.enums.d.ts +1 -1
  668. package/lib/layer/shared/layer.service.d.ts +30 -30
  669. package/lib/layer/shared/layers/any-layer.d.ts +6 -6
  670. package/lib/layer/shared/layers/any-layer.interface.d.ts +6 -6
  671. package/lib/layer/shared/layers/image-layer.d.ts +22 -22
  672. package/lib/layer/shared/layers/image-layer.interface.d.ts +19 -19
  673. package/lib/layer/shared/layers/index.d.ts +12 -12
  674. package/lib/layer/shared/layers/layer.d.ts +62 -62
  675. package/lib/layer/shared/layers/layer.interface.d.ts +109 -107
  676. package/lib/layer/shared/layers/tile-layer.d.ts +31 -31
  677. package/lib/layer/shared/layers/tile-layer.interface.d.ts +20 -20
  678. package/lib/layer/shared/layers/vector-layer.d.ts +78 -78
  679. package/lib/layer/shared/layers/vector-layer.interface.d.ts +41 -41
  680. package/lib/layer/shared/layers/vectortile-layer.d.ts +28 -28
  681. package/lib/layer/shared/layers/vectortile-layer.interface.d.ts +18 -18
  682. package/lib/layer/shared/style.service.d.ts +57 -57
  683. package/lib/layer/shared/vector-style.interface.d.ts +38 -38
  684. package/lib/layer/style-modal/index.d.ts +1 -1
  685. package/lib/layer/style-modal/style-modal.component.d.ts +42 -42
  686. package/lib/layer/track-feature-button/index.d.ts +1 -1
  687. package/lib/layer/track-feature-button/track-feature-button.component.d.ts +15 -15
  688. package/lib/layer/utils/image-watcher.d.ts +17 -17
  689. package/lib/layer/utils/index.d.ts +5 -5
  690. package/lib/layer/utils/layer.utils.d.ts +2 -2
  691. package/lib/layer/utils/outputLegend.d.ts +7 -7
  692. package/lib/layer/utils/tile-watcher.d.ts +14 -14
  693. package/lib/layer/utils/vector-watcher.d.ts +13 -13
  694. package/lib/map/baselayers-switcher/baselayers-switcher.animation.d.ts +2 -2
  695. package/lib/map/baselayers-switcher/baselayers-switcher.component.d.ts +21 -21
  696. package/lib/map/baselayers-switcher/index.d.ts +2 -2
  697. package/lib/map/baselayers-switcher/mini-basemap.component.d.ts +29 -26
  698. package/lib/map/geolocate-button/geolocate-button.component.d.ts +22 -22
  699. package/lib/map/geolocate-button/index.d.ts +1 -1
  700. package/lib/map/home-extent-button/home-extent-button.component.d.ts +20 -20
  701. package/lib/map/home-extent-button/index.d.ts +1 -1
  702. package/lib/map/index.d.ts +13 -13
  703. package/lib/map/info-section/index.d.ts +1 -1
  704. package/lib/map/info-section/info-section.component.d.ts +7 -7
  705. package/lib/map/map-browser/index.d.ts +1 -1
  706. package/lib/map/map-browser/map-browser.component.d.ts +25 -25
  707. package/lib/map/map-center/index.d.ts +1 -1
  708. package/lib/map/map-center/map-center.component.d.ts +31 -31
  709. package/lib/map/map.module.d.ts +28 -28
  710. package/lib/map/menu-button/index.d.ts +1 -1
  711. package/lib/map/menu-button/menu-button.component.d.ts +17 -17
  712. package/lib/map/offline-button/index.d.ts +1 -1
  713. package/lib/map/offline-button/offline-button.component.d.ts +23 -23
  714. package/lib/map/rotation-button/index.d.ts +1 -1
  715. package/lib/map/rotation-button/rotation-button.component.d.ts +17 -17
  716. package/lib/map/shared/controllers/controller.d.ts +29 -29
  717. package/lib/map/shared/controllers/geolocation.d.ts +112 -112
  718. package/lib/map/shared/controllers/index.d.ts +3 -3
  719. package/lib/map/shared/controllers/view.d.ts +200 -200
  720. package/lib/map/shared/hover-feature.directive.d.ts +132 -132
  721. package/lib/map/shared/index.d.ts +13 -13
  722. package/lib/map/shared/linkedLayers.utils.d.ts +17 -17
  723. package/lib/map/shared/map-pointer-position.directive.d.ts +71 -71
  724. package/lib/map/shared/map.d.ts +135 -135
  725. package/lib/map/shared/map.enums.d.ts +4 -4
  726. package/lib/map/shared/map.interface.d.ts +57 -57
  727. package/lib/map/shared/map.service.d.ts +19 -19
  728. package/lib/map/shared/map.utils.d.ts +90 -89
  729. package/lib/map/shared/mapOffline.directive.d.ts +21 -21
  730. package/lib/map/shared/projection.interfaces.d.ts +29 -29
  731. package/lib/map/shared/projection.service.d.ts +19 -19
  732. package/lib/map/shared/projection.utils.d.ts +19 -19
  733. package/lib/map/swipe-control/index.d.ts +1 -1
  734. package/lib/map/swipe-control/swipe-control.component.d.ts +97 -97
  735. package/lib/map/utils/layer-watcher.d.ts +20 -20
  736. package/lib/map/wake-lock-button/index.d.ts +1 -1
  737. package/lib/map/wake-lock-button/wake-lock-button.component.d.ts +30 -30
  738. package/lib/map/zoom-button/index.d.ts +1 -1
  739. package/lib/map/zoom-button/zoom-button.component.d.ts +12 -12
  740. package/lib/measure/index.d.ts +3 -3
  741. package/lib/measure/measure.module.d.ts +7 -7
  742. package/lib/measure/measurer/measure-format.pipe.d.ts +15 -15
  743. package/lib/measure/measurer/measurer-dialog.component.d.ts +14 -14
  744. package/lib/measure/measurer/measurer-item.component.d.ts +66 -66
  745. package/lib/measure/measurer/measurer.component.d.ts +405 -405
  746. package/lib/measure/measurer/measurer.module.d.ts +25 -25
  747. package/lib/measure/shared/index.d.ts +3 -3
  748. package/lib/measure/shared/measure.enum.d.ts +33 -33
  749. package/lib/measure/shared/measure.interfaces.d.ts +21 -21
  750. package/lib/measure/shared/measure.utils.d.ts +180 -180
  751. package/lib/metadata/index.d.ts +2 -2
  752. package/lib/metadata/metadata-button/index.d.ts +1 -1
  753. package/lib/metadata/metadata-button/metadata-button.component.d.ts +26 -26
  754. package/lib/metadata/metadata.module.d.ts +15 -15
  755. package/lib/metadata/shared/index.d.ts +2 -2
  756. package/lib/metadata/shared/metadata.interface.d.ts +13 -13
  757. package/lib/metadata/shared/metadata.service.d.ts +8 -8
  758. package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +14 -14
  759. package/lib/offline/geoDB/geoDB.enums.d.ts +4 -4
  760. package/lib/offline/geoDB/geoDB.interface.d.ts +19 -19
  761. package/lib/offline/geoDB/geoDB.service.d.ts +37 -37
  762. package/lib/offline/geoDB/index.d.ts +4 -4
  763. package/lib/offline/index.d.ts +2 -2
  764. package/lib/offline/shared/geo-network.service.d.ts +28 -28
  765. package/lib/offline/shared/index.d.ts +1 -1
  766. package/lib/overlay/index.d.ts +1 -1
  767. package/lib/overlay/overlay.module.d.ts +9 -9
  768. package/lib/overlay/shared/index.d.ts +6 -6
  769. package/lib/overlay/shared/overlay-marker-style.utils.d.ts +11 -11
  770. package/lib/overlay/shared/overlay.d.ts +81 -81
  771. package/lib/overlay/shared/overlay.directive.d.ts +18 -18
  772. package/lib/overlay/shared/overlay.enum.d.ts +6 -6
  773. package/lib/overlay/shared/overlay.service.d.ts +14 -14
  774. package/lib/overlay/shared/overlay.utils.d.ts +17 -17
  775. package/lib/print/index.d.ts +3 -3
  776. package/lib/print/print/print.component.d.ts +35 -35
  777. package/lib/print/print-form/index.d.ts +1 -1
  778. package/lib/print/print-form/print-form.component.d.ts +97 -97
  779. package/lib/print/print.module.d.ts +19 -19
  780. package/lib/print/shared/geopdf.d.ts +1 -1
  781. package/lib/print/shared/index.d.ts +4 -4
  782. package/lib/print/shared/print.interface.d.ts +22 -22
  783. package/lib/print/shared/print.service.d.ts +168 -159
  784. package/lib/print/shared/print.type.d.ts +45 -45
  785. package/lib/query/index.d.ts +1 -1
  786. package/lib/query/query.module.d.ts +11 -11
  787. package/lib/query/shared/index.d.ts +6 -6
  788. package/lib/query/shared/query-search-source.d.ts +17 -17
  789. package/lib/query/shared/query-search-source.providers.d.ts +17 -17
  790. package/lib/query/shared/query.directive.d.ts +105 -105
  791. package/lib/query/shared/query.enums.d.ts +26 -26
  792. package/lib/query/shared/query.interfaces.d.ts +35 -28
  793. package/lib/query/shared/query.service.d.ts +56 -54
  794. package/lib/query/shared/query.utils.d.ts +27 -27
  795. package/lib/search/index.d.ts +11 -11
  796. package/lib/search/search-bar/search-bar.component.d.ts +230 -220
  797. package/lib/search/search-bar/search-bar.module.d.ts +23 -23
  798. package/lib/search/search-bar/search-url-param.directive.d.ts +13 -13
  799. package/lib/search/search-results/save-feature-dialog.component.d.ts +32 -0
  800. package/lib/search/search-results/search-results-add-button.component.d.ts +76 -58
  801. package/lib/search/search-results/search-results-item.component.d.ts +47 -48
  802. package/lib/search/search-results/search-results.component.d.ts +161 -161
  803. package/lib/search/search-results/search-results.module.d.ts +28 -21
  804. package/lib/search/search-selector/search-selector.component.d.ts +58 -58
  805. package/lib/search/search-selector/search-selector.module.d.ts +19 -19
  806. package/lib/search/search-settings/search-settings.component.d.ts +102 -96
  807. package/lib/search/search-settings/search-settings.module.d.ts +20 -20
  808. package/lib/search/search.module.d.ts +14 -14
  809. package/lib/search/shared/index.d.ts +8 -8
  810. package/lib/search/shared/search-pointer-summary.directive.d.ts +133 -133
  811. package/lib/search/shared/search-source-service.providers.d.ts +15 -15
  812. package/lib/search/shared/search-source.service.d.ts +32 -32
  813. package/lib/search/shared/search.enums.d.ts +1 -1
  814. package/lib/search/shared/search.interfaces.d.ts +29 -29
  815. package/lib/search/shared/search.service.d.ts +53 -51
  816. package/lib/search/shared/search.utils.d.ts +39 -39
  817. package/lib/search/shared/sources/coordinates.d.ts +40 -40
  818. package/lib/search/shared/sources/coordinates.interfaces.d.ts +12 -12
  819. package/lib/search/shared/sources/coordinates.providers.d.ts +31 -31
  820. package/lib/search/shared/sources/icherche.d.ts +96 -96
  821. package/lib/search/shared/sources/icherche.interfaces.d.ts +30 -30
  822. package/lib/search/shared/sources/icherche.providers.d.ts +46 -46
  823. package/lib/search/shared/sources/ilayer.d.ts +55 -55
  824. package/lib/search/shared/sources/ilayer.interfaces.d.ts +47 -47
  825. package/lib/search/shared/sources/ilayer.providers.d.ts +31 -31
  826. package/lib/search/shared/sources/index.d.ts +17 -17
  827. package/lib/search/shared/sources/nominatim.d.ts +45 -45
  828. package/lib/search/shared/sources/nominatim.interfaces.d.ts +10 -10
  829. package/lib/search/shared/sources/nominatim.providers.d.ts +18 -18
  830. package/lib/search/shared/sources/source.d.ts +108 -108
  831. package/lib/search/shared/sources/source.interfaces.d.ts +47 -47
  832. package/lib/search/shared/sources/storedqueries.d.ts +73 -73
  833. package/lib/search/shared/sources/storedqueries.interfaces.d.ts +42 -42
  834. package/lib/search/shared/sources/storedqueries.providers.d.ts +32 -32
  835. package/lib/toast/index.d.ts +1 -1
  836. package/lib/toast/toast.component.d.ts +33 -33
  837. package/lib/toast/toast.module.d.ts +14 -14
  838. package/lib/utils/commonVectorStyle.d.ts +14 -14
  839. package/lib/utils/commonVectorStyle.interface.d.ts +16 -16
  840. package/lib/utils/googleLinks.d.ts +5 -5
  841. package/lib/utils/id-generator.d.ts +54 -54
  842. package/lib/utils/index.d.ts +5 -5
  843. package/lib/utils/osmLinks.d.ts +4 -4
  844. package/lib/wkt/index.d.ts +1 -1
  845. package/lib/wkt/shared/index.d.ts +1 -1
  846. package/lib/wkt/shared/wkt.service.d.ts +19 -19
  847. package/lib/wkt/wkt.module.d.ts +8 -8
  848. package/lib/workspace/confirmation-popup/confirmation-popup.component.d.ts +23 -23
  849. package/lib/workspace/confirmation-popup/confirmation-popup.module.d.ts +14 -14
  850. package/lib/workspace/confirmation-popup/index.d.ts +2 -2
  851. package/lib/workspace/index.d.ts +7 -7
  852. package/lib/workspace/shared/edition-workspace.d.ts +82 -82
  853. package/lib/workspace/shared/edition-workspace.service.d.ts +52 -52
  854. package/lib/workspace/shared/feature-workspace.d.ts +18 -18
  855. package/lib/workspace/shared/feature-workspace.service.d.ts +19 -19
  856. package/lib/workspace/shared/index.d.ts +7 -7
  857. package/lib/workspace/shared/wfs-workspace.d.ts +18 -18
  858. package/lib/workspace/shared/wfs-workspace.service.d.ts +19 -19
  859. package/lib/workspace/shared/wms-workspace.service.d.ts +22 -22
  860. package/lib/workspace/shared/workspace.utils.d.ts +10 -10
  861. package/lib/workspace/widgets/index.d.ts +3 -3
  862. package/lib/workspace/widgets/ogc-filter/ogc-filter.component.d.ts +29 -29
  863. package/lib/workspace/widgets/ogc-filter/ogc-filter.module.d.ts +14 -14
  864. package/lib/workspace/widgets/widgets.d.ts +9 -9
  865. package/lib/workspace/workspace-selector/workspace-selector.directive.d.ts +32 -32
  866. package/lib/workspace/workspace-selector/workspace-selector.module.d.ts +11 -11
  867. package/lib/workspace/workspace-updator/workspace-updator.directive.d.ts +26 -26
  868. package/lib/workspace/workspace-updator/workspace-updator.module.d.ts +11 -11
  869. package/lib/workspace/workspace.module.d.ts +14 -14
  870. package/package.json +4 -4
  871. package/public_api.d.ts +51 -51
@@ -1,1302 +1,1302 @@
1
- import { Component, Input, ViewChild } from '@angular/core';
2
- import { DOMService } from '@igo2/common';
3
- import { OgcFilterWriter } from '../../filter/shared/ogc-filter';
4
- import { Validators } from '@angular/forms';
5
- import { debounceTime, map } from 'rxjs/operators';
6
- import { OgcFilterOperator } from '../shared/ogc-filter.enum';
7
- import { BehaviorSubject, Observable } from 'rxjs';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../shared/ogc-filter.service";
10
- import * as i2 from "@angular/forms";
11
- import * as i3 from "@igo2/common";
12
- import * as i4 from "@igo2/core";
13
- const _c0 = ["selection"];
14
- function OgcFilterSelectionComponent_div_1_div_1_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
15
- i0.ɵɵelementStart(0, "mat-option", 13);
16
- i0.ɵɵtext(1);
17
- i0.ɵɵelementEnd();
18
- } if (rf & 2) {
19
- const selectorGroup_r11 = ctx.$implicit;
20
- i0.ɵɵproperty("value", selectorGroup_r11);
21
- i0.ɵɵadvance(1);
22
- i0.ɵɵtextInterpolate1("", selectorGroup_r11.title, " ");
23
- } }
24
- function OgcFilterSelectionComponent_div_1_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
25
- const _r13 = i0.ɵɵgetCurrentView();
26
- i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 11);
27
- i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_1_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r12.currentPushButtonsGroup = $event); });
28
- i0.ɵɵpipe(3, "translate");
29
- i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_1_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
30
- i0.ɵɵelementEnd()()();
31
- } if (rf & 2) {
32
- const ctx_r8 = i0.ɵɵnextContext(3);
33
- i0.ɵɵadvance(2);
34
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r8.currentPushButtonsGroup);
35
- i0.ɵɵadvance(2);
36
- i0.ɵɵproperty("ngForOf", ctx_r8.getPushButtonsGroups());
37
- } }
38
- function OgcFilterSelectionComponent_div_1_div_1_ng_container_3_mat_button_toggle_4_Template(rf, ctx) { if (rf & 1) {
39
- const _r18 = i0.ɵɵgetCurrentView();
40
- i0.ɵɵelementStart(0, "mat-button-toggle", 16);
41
- i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_1_ng_container_3_mat_button_toggle_4_Template_mat_button_toggle_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r18); const ogcPushButton_r16 = restoredCtx.$implicit; const selector_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r17 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r17.onSelectionChange(ogcPushButton_r16, selector_r2.selectorType)); });
42
- i0.ɵɵtext(1);
43
- i0.ɵɵelementEnd();
44
- } if (rf & 2) {
45
- const ogcPushButton_r16 = ctx.$implicit;
46
- const ctx_r15 = i0.ɵɵnextContext(4);
47
- i0.ɵɵproperty("matTooltip", ctx_r15.getToolTip(ogcPushButton_r16))("ngStyle", ctx_r15.getButtonColor(ogcPushButton_r16))("checked", ogcPushButton_r16.enabled)("value", ogcPushButton_r16);
48
- i0.ɵɵadvance(1);
49
- i0.ɵɵtextInterpolate1("", ogcPushButton_r16.title, " ");
50
- } }
51
- function OgcFilterSelectionComponent_div_1_div_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
52
- i0.ɵɵelementContainerStart(0);
53
- i0.ɵɵelementStart(1, "h4");
54
- i0.ɵɵtext(2);
55
- i0.ɵɵelementEnd();
56
- i0.ɵɵelementStart(3, "mat-button-toggle-group", 14);
57
- i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_1_ng_container_3_mat_button_toggle_4_Template, 2, 5, "mat-button-toggle", 15);
58
- i0.ɵɵelementEnd();
59
- i0.ɵɵelementContainerEnd();
60
- } if (rf & 2) {
61
- const bundle_r14 = ctx.$implicit;
62
- const ctx_r9 = i0.ɵɵnextContext(3);
63
- i0.ɵɵadvance(2);
64
- i0.ɵɵtextInterpolate(bundle_r14.title);
65
- i0.ɵɵadvance(1);
66
- i0.ɵɵpropertyInterpolate("vertical", ctx_r9.bundleIsVertical(bundle_r14));
67
- i0.ɵɵadvance(1);
68
- i0.ɵɵproperty("ngForOf", bundle_r14.selectors);
69
- } }
70
- function OgcFilterSelectionComponent_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
71
- i0.ɵɵelementStart(0, "div", 8);
72
- i0.ɵɵelement(1, "mat-divider");
73
- i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_1_div_2_Template, 5, 5, "div", 9);
74
- i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_1_ng_container_3_Template, 5, 3, "ng-container", 1);
75
- i0.ɵɵelementEnd();
76
- } if (rf & 2) {
77
- const ctx_r3 = i0.ɵɵnextContext(2);
78
- i0.ɵɵadvance(2);
79
- i0.ɵɵproperty("ngIf", ctx_r3.getPushButtonsGroups().length > 1);
80
- i0.ɵɵadvance(1);
81
- i0.ɵɵproperty("ngForOf", ctx_r3.currentPushButtonsGroup.computedSelectors);
82
- } }
83
- function OgcFilterSelectionComponent_div_1_div_2_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
84
- i0.ɵɵelementStart(0, "mat-option", 13);
85
- i0.ɵɵtext(1);
86
- i0.ɵɵelementEnd();
87
- } if (rf & 2) {
88
- const selectorGroup_r23 = ctx.$implicit;
89
- i0.ɵɵproperty("value", selectorGroup_r23);
90
- i0.ɵɵadvance(1);
91
- i0.ɵɵtextInterpolate1("", selectorGroup_r23.title, " ");
92
- } }
93
- function OgcFilterSelectionComponent_div_1_div_2_div_2_Template(rf, ctx) { if (rf & 1) {
94
- const _r25 = i0.ɵɵgetCurrentView();
95
- i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 18);
96
- i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_2_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r24.currentCheckboxesGroup = $event); });
97
- i0.ɵɵpipe(3, "translate");
98
- i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_2_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
99
- i0.ɵɵelementEnd()()();
100
- } if (rf & 2) {
101
- const ctx_r20 = i0.ɵɵnextContext(3);
102
- i0.ɵɵadvance(2);
103
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r20.currentCheckboxesGroup);
104
- i0.ɵɵadvance(2);
105
- i0.ɵɵproperty("ngForOf", ctx_r20.getCheckboxesGroups());
106
- } }
107
- function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_mat_checkbox_4_Template(rf, ctx) { if (rf & 1) {
108
- const _r31 = i0.ɵɵgetCurrentView();
109
- i0.ɵɵelementStart(0, "mat-checkbox", 21);
110
- i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_mat_checkbox_4_Template_mat_checkbox_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r31); const ogcCheckbox_r29 = restoredCtx.$implicit; const selector_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r30 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r30.onSelectionChange(ogcCheckbox_r29, selector_r2.selectorType)); });
111
- i0.ɵɵtext(1);
112
- i0.ɵɵelementEnd();
113
- } if (rf & 2) {
114
- const ogcCheckbox_r29 = ctx.$implicit;
115
- const ctx_r27 = i0.ɵɵnextContext(4);
116
- i0.ɵɵproperty("matTooltip", ctx_r27.getToolTip(ogcCheckbox_r29))("checked", ogcCheckbox_r29.enabled)("value", ogcCheckbox_r29);
117
- i0.ɵɵadvance(1);
118
- i0.ɵɵtextInterpolate1("", ogcCheckbox_r29.title, " ");
119
- } }
120
- function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_1_Template(rf, ctx) { if (rf & 1) {
121
- const _r36 = i0.ɵɵgetCurrentView();
122
- i0.ɵɵelementStart(0, "u", 24);
123
- i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_1_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r35.displayLessResults("checkbox")); });
124
- i0.ɵɵtext(1);
125
- i0.ɵɵpipe(2, "translate");
126
- i0.ɵɵelementEnd();
127
- } if (rf & 2) {
128
- i0.ɵɵadvance(1);
129
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayLessResults"), " ");
130
- } }
131
- function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_2_Template(rf, ctx) { if (rf & 1) {
132
- const _r38 = i0.ɵɵgetCurrentView();
133
- i0.ɵɵelementStart(0, "u", 25);
134
- i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_2_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r38); const ctx_r37 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r37.displayMoreResults("checkbox")); });
135
- i0.ɵɵtext(1);
136
- i0.ɵɵpipe(2, "translate");
137
- i0.ɵɵelementEnd();
138
- } if (rf & 2) {
139
- i0.ɵɵadvance(1);
140
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayMoreResults"), " ");
141
- } }
142
- function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_Template(rf, ctx) { if (rf & 1) {
143
- i0.ɵɵelementStart(0, "p");
144
- i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_1_Template, 3, 3, "u", 22);
145
- i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_2_Template, 3, 3, "u", 23);
146
- i0.ɵɵelementEnd();
147
- } if (rf & 2) {
148
- const bundle_r26 = i0.ɵɵnextContext().$implicit;
149
- const ctx_r28 = i0.ɵɵnextContext(3);
150
- i0.ɵɵadvance(1);
151
- i0.ɵɵproperty("ngIf", ctx_r28.isLessResults(bundle_r26, "checkbox"));
152
- i0.ɵɵadvance(1);
153
- i0.ɵɵproperty("ngIf", ctx_r28.isMoreResults(bundle_r26, "checkbox"));
154
- } }
155
- function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
156
- i0.ɵɵelementContainerStart(0);
157
- i0.ɵɵelementStart(1, "h4");
158
- i0.ɵɵtext(2);
159
- i0.ɵɵelementEnd();
160
- i0.ɵɵelementStart(3, "div", 19);
161
- i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_mat_checkbox_4_Template, 2, 4, "mat-checkbox", 20);
162
- i0.ɵɵelementEnd();
163
- i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_Template, 3, 2, "p", 2);
164
- i0.ɵɵelementContainerEnd();
165
- } if (rf & 2) {
166
- const bundle_r26 = ctx.$implicit;
167
- const ctx_r21 = i0.ɵɵnextContext(3);
168
- i0.ɵɵadvance(2);
169
- i0.ɵɵtextInterpolate(bundle_r26.title);
170
- i0.ɵɵadvance(2);
171
- i0.ɵɵproperty("ngForOf", bundle_r26.selectors);
172
- i0.ɵɵadvance(1);
173
- i0.ɵɵproperty("ngIf", ctx_r21.isLessResults(bundle_r26, "checkbox") || ctx_r21.isMoreResults(bundle_r26, "checkbox"));
174
- } }
175
- function OgcFilterSelectionComponent_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
176
- i0.ɵɵelementStart(0, "div", 17);
177
- i0.ɵɵelement(1, "mat-divider");
178
- i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_2_div_2_Template, 5, 5, "div", 9);
179
- i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_Template, 6, 3, "ng-container", 1);
180
- i0.ɵɵelementEnd();
181
- } if (rf & 2) {
182
- const ctx_r4 = i0.ɵɵnextContext(2);
183
- i0.ɵɵadvance(2);
184
- i0.ɵɵproperty("ngIf", ctx_r4.getCheckboxesGroups().length > 1);
185
- i0.ɵɵadvance(1);
186
- i0.ɵɵproperty("ngForOf", ctx_r4.currentCheckboxesGroup.computedSelectors);
187
- } }
188
- function OgcFilterSelectionComponent_div_1_div_3_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
189
- i0.ɵɵelementStart(0, "mat-option", 13);
190
- i0.ɵɵtext(1);
191
- i0.ɵɵelementEnd();
192
- } if (rf & 2) {
193
- const selectorGroup_r43 = ctx.$implicit;
194
- i0.ɵɵproperty("value", selectorGroup_r43);
195
- i0.ɵɵadvance(1);
196
- i0.ɵɵtextInterpolate1("", selectorGroup_r43.title, " ");
197
- } }
198
- function OgcFilterSelectionComponent_div_1_div_3_div_2_Template(rf, ctx) { if (rf & 1) {
199
- const _r45 = i0.ɵɵgetCurrentView();
200
- i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 27);
201
- i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_3_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r45); const ctx_r44 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r44.currentRadioButtonsGroup = $event); });
202
- i0.ɵɵpipe(3, "translate");
203
- i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_3_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
204
- i0.ɵɵelementEnd()()();
205
- } if (rf & 2) {
206
- const ctx_r40 = i0.ɵɵnextContext(3);
207
- i0.ɵɵadvance(2);
208
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r40.currentRadioButtonsGroup);
209
- i0.ɵɵadvance(2);
210
- i0.ɵɵproperty("ngForOf", ctx_r40.getRadioButtonsGroups());
211
- } }
212
- function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_4_Template(rf, ctx) { if (rf & 1) {
213
- const _r51 = i0.ɵɵgetCurrentView();
214
- i0.ɵɵelementStart(0, "mat-radio-button", 30);
215
- i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_4_Template_mat_radio_button_change_0_listener() { i0.ɵɵrestoreView(_r51); const ctx_r50 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r50.emptyRadioButtons()); });
216
- i0.ɵɵpipe(1, "translate");
217
- i0.ɵɵtext(2);
218
- i0.ɵɵpipe(3, "translate");
219
- i0.ɵɵelementEnd();
220
- } if (rf & 2) {
221
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 2, "igo.geo.filter.resetFilters"));
222
- i0.ɵɵadvance(2);
223
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(3, 4, "igo.geo.filter.resetFilters"), " ");
224
- } }
225
- function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_5_Template(rf, ctx) { if (rf & 1) {
226
- const _r54 = i0.ɵɵgetCurrentView();
227
- i0.ɵɵelementStart(0, "mat-radio-button", 21);
228
- i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_5_Template_mat_radio_button_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r54); const ogcRadioButton_r52 = restoredCtx.$implicit; const selector_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r53 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r53.onSelectionChange(ogcRadioButton_r52, selector_r2.selectorType)); });
229
- i0.ɵɵtext(1);
230
- i0.ɵɵelementEnd();
231
- } if (rf & 2) {
232
- const ogcRadioButton_r52 = ctx.$implicit;
233
- const ctx_r48 = i0.ɵɵnextContext(4);
234
- i0.ɵɵproperty("matTooltip", ctx_r48.getToolTip(ogcRadioButton_r52))("checked", ogcRadioButton_r52.enabled)("value", ogcRadioButton_r52);
235
- i0.ɵɵadvance(1);
236
- i0.ɵɵtextInterpolate1("", ogcRadioButton_r52.title, " ");
237
- } }
238
- function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_1_Template(rf, ctx) { if (rf & 1) {
239
- const _r59 = i0.ɵɵgetCurrentView();
240
- i0.ɵɵelementStart(0, "u", 24);
241
- i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_1_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r59); const ctx_r58 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r58.displayLessResults("radio")); });
242
- i0.ɵɵtext(1);
243
- i0.ɵɵpipe(2, "translate");
244
- i0.ɵɵelementEnd();
245
- } if (rf & 2) {
246
- i0.ɵɵadvance(1);
247
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayLessResults"), " ");
248
- } }
249
- function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_2_Template(rf, ctx) { if (rf & 1) {
250
- const _r61 = i0.ɵɵgetCurrentView();
251
- i0.ɵɵelementStart(0, "u", 25);
252
- i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_2_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r61); const ctx_r60 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r60.displayMoreResults("radio")); });
253
- i0.ɵɵtext(1);
254
- i0.ɵɵpipe(2, "translate");
255
- i0.ɵɵelementEnd();
256
- } if (rf & 2) {
257
- i0.ɵɵadvance(1);
258
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayMoreResults"), " ");
259
- } }
260
- function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_Template(rf, ctx) { if (rf & 1) {
261
- i0.ɵɵelementStart(0, "p");
262
- i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_1_Template, 3, 3, "u", 22);
263
- i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_2_Template, 3, 3, "u", 23);
264
- i0.ɵɵelementEnd();
265
- } if (rf & 2) {
266
- const bundle_r46 = i0.ɵɵnextContext().$implicit;
267
- const ctx_r49 = i0.ɵɵnextContext(3);
268
- i0.ɵɵadvance(1);
269
- i0.ɵɵproperty("ngIf", ctx_r49.isLessResults(bundle_r46, "radio"));
270
- i0.ɵɵadvance(1);
271
- i0.ɵɵproperty("ngIf", ctx_r49.isMoreResults(bundle_r46, "radio"));
272
- } }
273
- function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
274
- i0.ɵɵelementContainerStart(0);
275
- i0.ɵɵelementStart(1, "h4");
276
- i0.ɵɵtext(2);
277
- i0.ɵɵelementEnd();
278
- i0.ɵɵelementStart(3, "mat-radio-group", 28);
279
- i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_4_Template, 4, 6, "mat-radio-button", 29);
280
- i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_5_Template, 2, 4, "mat-radio-button", 20);
281
- i0.ɵɵtemplate(6, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_Template, 3, 2, "p", 2);
282
- i0.ɵɵelementEnd();
283
- i0.ɵɵelementContainerEnd();
284
- } if (rf & 2) {
285
- const bundle_r46 = ctx.$implicit;
286
- const ctx_r41 = i0.ɵɵnextContext(3);
287
- i0.ɵɵadvance(2);
288
- i0.ɵɵtextInterpolate(bundle_r46.title);
289
- i0.ɵɵadvance(2);
290
- i0.ɵɵproperty("ngIf", bundle_r46.unfiltered);
291
- i0.ɵɵadvance(1);
292
- i0.ɵɵproperty("ngForOf", bundle_r46.selectors);
293
- i0.ɵɵadvance(1);
294
- i0.ɵɵproperty("ngIf", ctx_r41.isLessResults(bundle_r46, "radio") || ctx_r41.isMoreResults(bundle_r46, "radio"));
295
- } }
296
- function OgcFilterSelectionComponent_div_1_div_3_Template(rf, ctx) { if (rf & 1) {
297
- i0.ɵɵelementStart(0, "div", 26);
298
- i0.ɵɵelement(1, "mat-divider");
299
- i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_3_div_2_Template, 5, 5, "div", 9);
300
- i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_Template, 7, 4, "ng-container", 1);
301
- i0.ɵɵelementEnd();
302
- } if (rf & 2) {
303
- const ctx_r5 = i0.ɵɵnextContext(2);
304
- i0.ɵɵadvance(2);
305
- i0.ɵɵproperty("ngIf", ctx_r5.getRadioButtonsGroups().length > 1);
306
- i0.ɵɵadvance(1);
307
- i0.ɵɵproperty("ngForOf", ctx_r5.currentRadioButtonsGroup.computedSelectors);
308
- } }
309
- function OgcFilterSelectionComponent_div_1_div_4_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
310
- i0.ɵɵelementStart(0, "mat-option", 13);
311
- i0.ɵɵtext(1);
312
- i0.ɵɵelementEnd();
313
- } if (rf & 2) {
314
- const selectorGroup_r66 = ctx.$implicit;
315
- i0.ɵɵproperty("value", selectorGroup_r66);
316
- i0.ɵɵadvance(1);
317
- i0.ɵɵtextInterpolate1("", selectorGroup_r66.title, " ");
318
- } }
319
- function OgcFilterSelectionComponent_div_1_div_4_div_2_Template(rf, ctx) { if (rf & 1) {
320
- const _r68 = i0.ɵɵgetCurrentView();
321
- i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 32);
322
- i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_4_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r68); const ctx_r67 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r67.currentSelectGroup = $event); });
323
- i0.ɵɵpipe(3, "translate");
324
- i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
325
- i0.ɵɵelementEnd()()();
326
- } if (rf & 2) {
327
- const ctx_r63 = i0.ɵɵnextContext(3);
328
- i0.ɵɵadvance(2);
329
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r63.currentSelectGroup);
330
- i0.ɵɵadvance(2);
331
- i0.ɵɵproperty("ngForOf", ctx_r63.getSelectGroups());
332
- } }
333
- function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_mat_button_4_Template(rf, ctx) { if (rf & 1) {
334
- const _r75 = i0.ɵɵgetCurrentView();
335
- i0.ɵɵelementStart(0, "mat-button", 36);
336
- i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_mat_button_4_Template_mat_button_click_0_listener() { i0.ɵɵrestoreView(_r75); const ctx_r74 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r74.emptySelect()); });
337
- i0.ɵɵpipe(1, "translate");
338
- i0.ɵɵelement(2, "mat-icon", 37);
339
- i0.ɵɵelementEnd();
340
- } if (rf & 2) {
341
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.filter.resetFilters"));
342
- } }
343
- const _c1 = function () { return { standalone: true }; };
344
- function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template(rf, ctx) { if (rf & 1) {
345
- const _r80 = i0.ɵɵgetCurrentView();
346
- i0.ɵɵelementStart(0, "mat-checkbox", 42);
347
- i0.ɵɵlistener("ngModelChange", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template_mat_checkbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r80); const ctx_r79 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r79.selectAllSelected = $event); })("change", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template_mat_checkbox_change_0_listener() { i0.ɵɵrestoreView(_r80); const ctx_r81 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r81.toggleAllSelection()); });
348
- i0.ɵɵtext(1, "Tous ");
349
- i0.ɵɵelementEnd();
350
- } if (rf & 2) {
351
- const ctx_r77 = i0.ɵɵnextContext(5);
352
- i0.ɵɵproperty("ngModel", ctx_r77.selectAllSelected)("ngModelOptions", i0.ɵɵpureFunction0(2, _c1));
353
- } }
354
- function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_option_5_Template(rf, ctx) { if (rf & 1) {
355
- const _r85 = i0.ɵɵgetCurrentView();
356
- i0.ɵɵelementStart(0, "mat-option", 43);
357
- i0.ɵɵlistener("onSelectionChange", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_option_5_Template_mat_option_onSelectionChange_0_listener($event) { i0.ɵɵrestoreView(_r85); const bundle_r69 = i0.ɵɵnextContext(2).$implicit; const ctx_r83 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r83.selectOptionClick($event.source.value, bundle_r69, $event)); });
358
- i0.ɵɵtext(1);
359
- i0.ɵɵelementEnd();
360
- } if (rf & 2) {
361
- const ogcSelect_r82 = ctx.$implicit;
362
- const ctx_r78 = i0.ɵɵnextContext(5);
363
- i0.ɵɵproperty("matTooltip", ctx_r78.getToolTip(ogcSelect_r82))("value", ogcSelect_r82);
364
- i0.ɵɵadvance(1);
365
- i0.ɵɵtextInterpolate1("", ogcSelect_r82.title, " ");
366
- } }
367
- function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_Template(rf, ctx) { if (rf & 1) {
368
- i0.ɵɵelementStart(0, "div")(1, "mat-select", 38, 39)(3, "div", 19);
369
- i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template, 2, 3, "mat-checkbox", 40);
370
- i0.ɵɵelementEnd();
371
- i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_option_5_Template, 2, 3, "mat-option", 41);
372
- i0.ɵɵelementEnd()();
373
- } if (rf & 2) {
374
- const bundle_r69 = i0.ɵɵnextContext().$implicit;
375
- i0.ɵɵadvance(1);
376
- i0.ɵɵproperty("multiple", bundle_r69.multiple)("placeholder", bundle_r69.title);
377
- i0.ɵɵadvance(3);
378
- i0.ɵɵproperty("ngIf", bundle_r69.multiple);
379
- i0.ɵɵadvance(1);
380
- i0.ɵɵproperty("ngForOf", bundle_r69.selectors);
381
- } }
382
- function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_mat_option_1_Template(rf, ctx) { if (rf & 1) {
383
- const _r91 = i0.ɵɵgetCurrentView();
384
- i0.ɵɵelementStart(0, "mat-option", 43);
385
- i0.ɵɵlistener("onSelectionChange", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_mat_option_1_Template_mat_option_onSelectionChange_0_listener($event) { i0.ɵɵrestoreView(_r91); const bundle_r69 = i0.ɵɵnextContext(2).$implicit; const ctx_r89 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r89.selectOptionClick($event.source.value, bundle_r69)); });
386
- i0.ɵɵtext(1);
387
- i0.ɵɵelementEnd();
388
- } if (rf & 2) {
389
- const ogcSelect_r88 = ctx.$implicit;
390
- const ctx_r87 = i0.ɵɵnextContext(5);
391
- i0.ɵɵproperty("matTooltip", ctx_r87.getToolTip(ogcSelect_r88))("value", ogcSelect_r88);
392
- i0.ɵɵadvance(1);
393
- i0.ɵɵtextInterpolate1("", ogcSelect_r88.title, " ");
394
- } }
395
- function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_Template(rf, ctx) { if (rf & 1) {
396
- i0.ɵɵelementStart(0, "mat-select", 44);
397
- i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_mat_option_1_Template, 2, 3, "mat-option", 41);
398
- i0.ɵɵelementEnd();
399
- } if (rf & 2) {
400
- const bundle_r69 = i0.ɵɵnextContext().$implicit;
401
- i0.ɵɵproperty("placeholder", bundle_r69.title);
402
- i0.ɵɵadvance(1);
403
- i0.ɵɵproperty("ngForOf", bundle_r69.selectors);
404
- } }
405
- function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_Template(rf, ctx) { if (rf & 1) {
406
- i0.ɵɵelementContainerStart(0);
407
- i0.ɵɵelementStart(1, "h4");
408
- i0.ɵɵtext(2);
409
- i0.ɵɵelementEnd();
410
- i0.ɵɵelementStart(3, "div", 10);
411
- i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_mat_button_4_Template, 3, 3, "mat-button", 33);
412
- i0.ɵɵelementStart(5, "mat-form-field");
413
- i0.ɵɵtemplate(6, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_Template, 6, 4, "div", 34);
414
- i0.ɵɵtemplate(7, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_Template, 2, 2, "ng-template", null, 35, i0.ɵɵtemplateRefExtractor);
415
- i0.ɵɵelementEnd()();
416
- i0.ɵɵelementContainerEnd();
417
- } if (rf & 2) {
418
- const bundle_r69 = ctx.$implicit;
419
- const _r72 = i0.ɵɵreference(8);
420
- i0.ɵɵadvance(2);
421
- i0.ɵɵtextInterpolate(bundle_r69.title);
422
- i0.ɵɵadvance(2);
423
- i0.ɵɵproperty("ngIf", bundle_r69.unfiltered && !bundle_r69.multiple);
424
- i0.ɵɵadvance(1);
425
- i0.ɵɵstyleProp("width", bundle_r69.width ? bundle_r69.width : undefined, "%");
426
- i0.ɵɵadvance(1);
427
- i0.ɵɵproperty("ngIf", bundle_r69.multiple)("ngIfElse", _r72);
428
- } }
429
- function OgcFilterSelectionComponent_div_1_div_4_Template(rf, ctx) { if (rf & 1) {
430
- i0.ɵɵelementStart(0, "div", 31);
431
- i0.ɵɵelement(1, "mat-divider");
432
- i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_4_div_2_Template, 5, 5, "div", 9);
433
- i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_Template, 9, 6, "ng-container", 1);
434
- i0.ɵɵelementEnd();
435
- } if (rf & 2) {
436
- const ctx_r6 = i0.ɵɵnextContext(2);
437
- i0.ɵɵadvance(2);
438
- i0.ɵɵproperty("ngIf", ctx_r6.getSelectGroups().length > 1);
439
- i0.ɵɵadvance(1);
440
- i0.ɵɵproperty("ngForOf", ctx_r6.currentSelectGroup.computedSelectors);
441
- } }
442
- function OgcFilterSelectionComponent_div_1_div_5_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
443
- i0.ɵɵelementStart(0, "mat-option", 13);
444
- i0.ɵɵtext(1);
445
- i0.ɵɵelementEnd();
446
- } if (rf & 2) {
447
- const autocompleteGroup_r96 = ctx.$implicit;
448
- i0.ɵɵproperty("value", autocompleteGroup_r96);
449
- i0.ɵɵadvance(1);
450
- i0.ɵɵtextInterpolate1("", autocompleteGroup_r96.title, " ");
451
- } }
452
- function OgcFilterSelectionComponent_div_1_div_5_div_2_Template(rf, ctx) { if (rf & 1) {
453
- const _r98 = i0.ɵɵgetCurrentView();
454
- i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 46);
455
- i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_5_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r98); const ctx_r97 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r97.currentAutocompleteGroup = $event); });
456
- i0.ɵɵpipe(3, "translate");
457
- i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_5_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
458
- i0.ɵɵelementEnd()()();
459
- } if (rf & 2) {
460
- const ctx_r93 = i0.ɵɵnextContext(3);
461
- i0.ɵɵadvance(2);
462
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r93.currentAutocompleteGroup);
463
- i0.ɵɵadvance(2);
464
- i0.ɵɵproperty("ngForOf", ctx_r93.getAutocompleteGroups());
465
- } }
466
- function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_button_4_Template(rf, ctx) { if (rf & 1) {
467
- const _r103 = i0.ɵɵgetCurrentView();
468
- i0.ɵɵelementStart(0, "mat-button", 36);
469
- i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_button_4_Template_mat_button_click_0_listener() { i0.ɵɵrestoreView(_r103); const ctx_r102 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r102.emptyAutocomplete()); });
470
- i0.ɵɵpipe(1, "translate");
471
- i0.ɵɵelement(2, "mat-icon", 37);
472
- i0.ɵɵelementEnd();
473
- } if (rf & 2) {
474
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.filter.resetFilters"));
475
- } }
476
- function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_mat_option_6_Template(rf, ctx) { if (rf & 1) {
477
- i0.ɵɵelementStart(0, "mat-option", 13);
478
- i0.ɵɵtext(1);
479
- i0.ɵɵelementEnd();
480
- } if (rf & 2) {
481
- const ogcAutocomplete_r108 = ctx.$implicit;
482
- i0.ɵɵproperty("value", ogcAutocomplete_r108);
483
- i0.ɵɵadvance(1);
484
- i0.ɵɵtextInterpolate1(" ", ogcAutocomplete_r108.value, " ");
485
- } }
486
- function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_Template(rf, ctx) { if (rf & 1) {
487
- const _r110 = i0.ɵɵgetCurrentView();
488
- i0.ɵɵelementStart(0, "mat-form-field");
489
- i0.ɵɵelement(1, "input", 48, 49);
490
- i0.ɵɵelementStart(3, "mat-autocomplete", 50, 51);
491
- i0.ɵɵlistener("optionSelected", function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_Template_mat_autocomplete_optionSelected_3_listener($event) { i0.ɵɵrestoreView(_r110); const ctx_r109 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r109.autocompleteOptionClick($event.option.value)); });
492
- i0.ɵɵtemplate(6, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_mat_option_6_Template, 2, 2, "mat-option", 12);
493
- i0.ɵɵpipe(7, "async");
494
- i0.ɵɵelementEnd()();
495
- } if (rf & 2) {
496
- const _r105 = i0.ɵɵreference(4);
497
- const bundle_r99 = i0.ɵɵnextContext().$implicit;
498
- const ctx_r101 = i0.ɵɵnextContext(3);
499
- i0.ɵɵstyleProp("width", bundle_r99.width ? bundle_r99.width : undefined, "%");
500
- i0.ɵɵadvance(1);
501
- i0.ɵɵproperty("matAutocomplete", _r105)("placeholder", bundle_r99.title);
502
- i0.ɵɵadvance(2);
503
- i0.ɵɵproperty("displayWith", ctx_r101.displayFn);
504
- i0.ɵɵadvance(3);
505
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(7, 6, ctx_r101.filteredOgcAutocomplete[bundle_r99.id]));
506
- } }
507
- function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_Template(rf, ctx) { if (rf & 1) {
508
- i0.ɵɵelementContainerStart(0);
509
- i0.ɵɵelementStart(1, "h4");
510
- i0.ɵɵtext(2);
511
- i0.ɵɵelementEnd();
512
- i0.ɵɵelementStart(3, "div", 10);
513
- i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_button_4_Template, 3, 3, "mat-button", 33);
514
- i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_Template, 8, 8, "mat-form-field", 47);
515
- i0.ɵɵelementEnd();
516
- i0.ɵɵelementContainerEnd();
517
- } if (rf & 2) {
518
- const bundle_r99 = ctx.$implicit;
519
- const ctx_r94 = i0.ɵɵnextContext(3);
520
- i0.ɵɵadvance(2);
521
- i0.ɵɵtextInterpolate(bundle_r99.title);
522
- i0.ɵɵadvance(2);
523
- i0.ɵɵproperty("ngIf", bundle_r99.unfiltered);
524
- i0.ɵɵadvance(1);
525
- i0.ɵɵproperty("ngIf", ctx_r94.filteredOgcAutocomplete[bundle_r99.id]);
526
- } }
527
- function OgcFilterSelectionComponent_div_1_div_5_Template(rf, ctx) { if (rf & 1) {
528
- i0.ɵɵelementStart(0, "div", 45);
529
- i0.ɵɵelement(1, "mat-divider");
530
- i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_5_div_2_Template, 5, 5, "div", 9);
531
- i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_Template, 6, 3, "ng-container", 1);
532
- i0.ɵɵelementEnd();
533
- } if (rf & 2) {
534
- const ctx_r7 = i0.ɵɵnextContext(2);
535
- i0.ɵɵadvance(2);
536
- i0.ɵɵproperty("ngIf", ctx_r7.getAutocompleteGroups().length > 1);
537
- i0.ɵɵadvance(1);
538
- i0.ɵɵproperty("ngForOf", ctx_r7.currentAutocompleteGroup.computedSelectors);
539
- } }
540
- function OgcFilterSelectionComponent_div_1_Template(rf, ctx) { if (rf & 1) {
541
- i0.ɵɵelementStart(0, "div");
542
- i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_1_Template, 4, 2, "div", 3);
543
- i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_2_Template, 4, 2, "div", 4);
544
- i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_3_Template, 4, 2, "div", 5);
545
- i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_Template, 4, 2, "div", 6);
546
- i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_5_Template, 4, 2, "div", 7);
547
- i0.ɵɵelementEnd();
548
- } if (rf & 2) {
549
- const selector_r2 = ctx.$implicit;
550
- i0.ɵɵadvance(1);
551
- i0.ɵɵproperty("ngIf", selector_r2.selectorType === "pushButton");
552
- i0.ɵɵadvance(1);
553
- i0.ɵɵproperty("ngIf", selector_r2.selectorType === "checkbox");
554
- i0.ɵɵadvance(1);
555
- i0.ɵɵproperty("ngIf", selector_r2.selectorType === "radioButton");
556
- i0.ɵɵadvance(1);
557
- i0.ɵɵproperty("ngIf", selector_r2.selectorType === "select");
558
- i0.ɵɵadvance(1);
559
- i0.ɵɵproperty("ngIf", selector_r2.selectorType === "autocomplete");
560
- } }
561
- function OgcFilterSelectionComponent_div_2_h4_2_Template(rf, ctx) { if (rf & 1) {
562
- i0.ɵɵelementStart(0, "h4");
563
- i0.ɵɵtext(1);
564
- i0.ɵɵpipe(2, "translate");
565
- i0.ɵɵelementEnd();
566
- } if (rf & 2) {
567
- i0.ɵɵadvance(1);
568
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.reportingDate"));
569
- } }
570
- function OgcFilterSelectionComponent_div_2_h4_3_Template(rf, ctx) { if (rf & 1) {
571
- i0.ɵɵelementStart(0, "h4");
572
- i0.ɵɵtext(1);
573
- i0.ɵɵelementEnd();
574
- } if (rf & 2) {
575
- const ctx_r113 = i0.ɵɵnextContext(2);
576
- i0.ɵɵadvance(1);
577
- i0.ɵɵtextInterpolate(ctx_r113.currentFilter.title);
578
- } }
579
- function OgcFilterSelectionComponent_div_2_Template(rf, ctx) { if (rf & 1) {
580
- const _r115 = i0.ɵɵgetCurrentView();
581
- i0.ɵɵelementStart(0, "div");
582
- i0.ɵɵelement(1, "mat-divider");
583
- i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_2_h4_2_Template, 3, 3, "h4", 2);
584
- i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_2_h4_3_Template, 2, 1, "h4", 2);
585
- i0.ɵɵelementStart(4, "igo-ogc-filter-time", 52);
586
- i0.ɵɵlistener("datasourceChange", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_datasourceChange_4_listener($event) { i0.ɵɵrestoreView(_r115); const ctx_r114 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r114.datasource = $event); })("currentFilterChange", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_currentFilterChange_4_listener($event) { i0.ɵɵrestoreView(_r115); const ctx_r116 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r116.currentFilter = $event); })("changeProperty", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_changeProperty_4_listener($event) { i0.ɵɵrestoreView(_r115); const ctx_r117 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r117.changeProperty($event.value, $event.pos)); });
587
- i0.ɵɵelementEnd()();
588
- } if (rf & 2) {
589
- const ctx_r1 = i0.ɵɵnextContext();
590
- i0.ɵɵadvance(2);
591
- i0.ɵɵproperty("ngIf", !ctx_r1.currentFilter.title);
592
- i0.ɵɵadvance(1);
593
- i0.ɵɵproperty("ngIf", ctx_r1.currentFilter.title);
594
- i0.ɵɵadvance(1);
595
- i0.ɵɵproperty("datasource", ctx_r1.datasource)("currentFilter", ctx_r1.currentFilter);
596
- } }
597
- export class OgcFilterSelectionComponent {
598
- constructor(ogcFilterService, formBuilder, domService, configService, cdRef) {
599
- this.ogcFilterService = ogcFilterService;
600
- this.formBuilder = formBuilder;
601
- this.domService = domService;
602
- this.configService = configService;
603
- this.cdRef = cdRef;
604
- this.checkboxesIndex = 5;
605
- this.radioButtonsIndex = 5;
606
- this.baseIndex = 5;
607
- this.ogcFilterOperator = OgcFilterOperator;
608
- this.color = 'primary';
609
- this.selectAllSelected = false;
610
- this.selectEnabled$ = new BehaviorSubject(undefined);
611
- this.selectEnableds$ = new BehaviorSubject([]);
612
- this.autocompleteEnabled$ = new BehaviorSubject(undefined);
613
- this.filteredOgcAutocomplete = {};
614
- this.ogcFilterWriter = new OgcFilterWriter();
615
- this.buildForm();
616
- }
617
- get currentFilter() {
618
- return this._currentFilter;
619
- }
620
- set currentFilter(value) {
621
- this._currentFilter = value;
622
- if (this._currentFilter?.sliderOptions) {
623
- this._currentFilter.sliderOptions.enabled = false; // remove slider toggle (animation temporelle)
624
- }
625
- }
626
- get ogcFiltersSelectors() {
627
- const ogcSelector = [];
628
- if (this.datasource?.options?.ogcFilters?.pushButtons) {
629
- ogcSelector.push(this.datasource?.options?.ogcFilters?.pushButtons);
630
- }
631
- if (this.datasource?.options?.ogcFilters?.checkboxes) {
632
- ogcSelector.push(this.datasource?.options?.ogcFilters?.checkboxes);
633
- }
634
- if (this.datasource?.options?.ogcFilters?.radioButtons) {
635
- ogcSelector.push(this.datasource?.options?.ogcFilters?.radioButtons);
636
- }
637
- if (this.datasource?.options?.ogcFilters?.select) {
638
- ogcSelector.push(this.datasource?.options?.ogcFilters?.select);
639
- }
640
- if (this.datasource?.options?.ogcFilters?.autocomplete) {
641
- ogcSelector.push(this.datasource?.options?.ogcFilters?.autocomplete);
642
- }
643
- ogcSelector.sort((a, b) => {
644
- if (a.order < b.order) {
645
- return -1;
646
- }
647
- if (a.order > b.order) {
648
- return 1;
649
- }
650
- return 0;
651
- });
652
- return ogcSelector;
653
- }
654
- get currentPushButtonsGroup() {
655
- return this.form.get('pushButtonsGroup').value;
656
- }
657
- set currentPushButtonsGroup(value) {
658
- this.form.patchValue({ pushButtonsGroup: value });
659
- }
660
- get currentCheckboxesGroup() {
661
- return this.form.get('checkboxesGroup').value;
662
- }
663
- set currentCheckboxesGroup(value) {
664
- this.form.patchValue({ checkboxesGroup: value });
665
- }
666
- get currentRadioButtonsGroup() {
667
- return this.form.get('radioButtonsGroup').value;
668
- }
669
- set currentRadioButtonsGroup(value) {
670
- this.form.patchValue({ radioButtonsGroup: value });
671
- }
672
- get currentSelectGroup() {
673
- return this.form.get('selectGroup').value;
674
- }
675
- set currentSelectGroup(value) {
676
- this.form.patchValue({ selectGroup: value });
677
- this.cdRef.detectChanges();
678
- }
679
- get currentAutocompleteGroup() {
680
- return this.form.get('autocompleteGroup').value;
681
- }
682
- set currentAutocompleteGroup(value) {
683
- this.form.patchValue({ autocompleteGroup: value });
684
- this.cdRef.detectChanges();
685
- }
686
- get selectEnabled() {
687
- return this.selectEnabled$.value;
688
- }
689
- set selectEnabled(value) {
690
- this.selectEnabled$.next(value);
691
- clearTimeout(this.applyFiltersTimeout);
692
- this.currentSelectGroup.computedSelectors.forEach(compSelect => {
693
- compSelect.selectors?.forEach(selector => {
694
- value === selector ? selector.enabled = true : selector.enabled = false;
695
- });
696
- });
697
- this.applyFiltersTimeout = setTimeout(() => {
698
- this.applyFilters();
699
- }, 750);
700
- }
701
- get selectEnableds() {
702
- return this.selectEnableds$.value;
703
- }
704
- set selectEnableds(value) {
705
- this.selectEnableds$.next(value);
706
- clearTimeout(this.applyFiltersTimeout);
707
- this.currentSelectGroup.computedSelectors.forEach(compSelect => {
708
- compSelect.selectors?.forEach(selector => {
709
- value.includes(selector) ? selector.enabled = true : selector.enabled = false;
710
- });
711
- });
712
- this.applyFiltersTimeout = setTimeout(() => {
713
- this.applyFilters();
714
- }, 750);
715
- }
716
- get autocompleteEnabled() {
717
- return this.autocompleteEnabled$.value;
718
- }
719
- set autocompleteEnabled(value) {
720
- this.autocompleteEnabled$.next(value);
721
- clearTimeout(this.applyFiltersTimeout);
722
- this.currentAutocompleteGroup.computedSelectors.forEach(compSelect => {
723
- compSelect.selectors?.forEach(selector => {
724
- value === selector.title ? selector.enabled = true : selector.enabled = false;
725
- });
726
- });
727
- this.applyFiltersTimeout = setTimeout(() => {
728
- this.applyFilters();
729
- }, 750);
730
- }
731
- buildForm() {
732
- this.form = this.formBuilder.group({
733
- pushButtons: ['', [Validators.required]],
734
- radioButtons: ['', [Validators.required]],
735
- pushButtonsGroup: ['', [Validators.required]],
736
- checkboxesGroup: ['', [Validators.required]],
737
- radioButtonsGroup: ['', [Validators.required]],
738
- selectGroup: ['', [Validators.required]],
739
- select: ['', [Validators.required]],
740
- selectMulti: ['', [Validators.required]],
741
- autocompleteGroup: ['', [Validators.required]],
742
- autocomplete: ['', [Validators.required]]
743
- });
744
- }
745
- getPushButtonsGroups() {
746
- if (this.datasource?.options?.ogcFilters?.pushButtons) {
747
- return this.datasource.options.ogcFilters.pushButtons.groups;
748
- }
749
- }
750
- getCheckboxesGroups() {
751
- if (this.datasource?.options?.ogcFilters?.checkboxes) {
752
- return this.datasource.options.ogcFilters.checkboxes.groups;
753
- }
754
- }
755
- getRadioButtonsGroups() {
756
- if (this.datasource?.options?.ogcFilters?.radioButtons) {
757
- return this.datasource.options.ogcFilters.radioButtons.groups;
758
- }
759
- }
760
- getSelectGroups() {
761
- if (this.datasource?.options?.ogcFilters?.select) {
762
- return this.datasource.options.ogcFilters.select.groups;
763
- }
764
- }
765
- getAutocompleteGroups() {
766
- if (this.datasource?.options?.ogcFilters?.autocomplete) {
767
- return this.datasource.options.ogcFilters.autocomplete.groups;
768
- }
769
- }
770
- async ngOnInit() {
771
- if (this.datasource.options.ogcFilters) {
772
- if (this.datasource.options.ogcFilters.pushButtons) {
773
- this.currentPushButtonsGroup =
774
- this.datasource.options.ogcFilters.pushButtons.groups.find(group => group.enabled) ||
775
- this.datasource.options.ogcFilters.pushButtons.groups[0];
776
- }
777
- if (this.datasource.options.ogcFilters.checkboxes) {
778
- this.currentCheckboxesGroup =
779
- this.datasource.options.ogcFilters.checkboxes.groups.find(group => group.enabled) ||
780
- this.datasource.options.ogcFilters.checkboxes.groups[0];
781
- }
782
- if (this.datasource.options.ogcFilters.radioButtons) {
783
- this.currentRadioButtonsGroup =
784
- this.datasource.options.ogcFilters.radioButtons.groups.find(group => group.enabled) ||
785
- this.datasource.options.ogcFilters.radioButtons.groups[0];
786
- }
787
- if (this.datasource.options.ogcFilters.select) {
788
- this.currentSelectGroup =
789
- this.datasource.options.ogcFilters.select.groups.find(group => group.enabled) ||
790
- this.datasource.options.ogcFilters.select.groups[0];
791
- this.getSelectEnabled();
792
- await this.getSelectDomValues();
793
- }
794
- if (this.datasource.options.ogcFilters.autocomplete) {
795
- this.currentAutocompleteGroup =
796
- this.datasource.options.ogcFilters.autocomplete.groups.find(group => group.enabled) ||
797
- this.datasource.options.ogcFilters.autocomplete.groups[0];
798
- this.getAutocompleteEnabled();
799
- await this.getAutocompleteDomValues();
800
- }
801
- this.applyFilters();
802
- }
803
- this.form
804
- .get('pushButtonsGroup')
805
- .valueChanges
806
- .pipe(debounceTime(750))
807
- .subscribe(() => {
808
- this.onPushButtonsChangeGroup();
809
- this.applyFilters();
810
- });
811
- this.form
812
- .get('checkboxesGroup')
813
- .valueChanges
814
- .pipe(debounceTime(750))
815
- .subscribe(() => {
816
- this.onCheckboxesChangeGroup();
817
- this.applyFilters();
818
- });
819
- this.form
820
- .get('radioButtonsGroup')
821
- .valueChanges
822
- .pipe(debounceTime(750))
823
- .subscribe(() => {
824
- this.onRadioButtonsChangeGroup();
825
- this.applyFilters();
826
- });
827
- this.form
828
- .get('selectGroup')
829
- .valueChanges
830
- .pipe(debounceTime(750))
831
- .subscribe(() => {
832
- this.onSelectChangeGroup();
833
- this.applyFilters();
834
- });
835
- this.form
836
- .get('autocompleteGroup')
837
- .valueChanges
838
- .pipe(debounceTime(750))
839
- .subscribe(() => {
840
- this.onAutocompleteChangeGroup();
841
- this.applyFilters();
842
- });
843
- this.form
844
- .get('pushButtons')
845
- .valueChanges
846
- .pipe(debounceTime(750))
847
- .subscribe(() => {
848
- this.applyFilters();
849
- });
850
- this.form
851
- .get('radioButtons')
852
- .valueChanges
853
- .pipe(debounceTime(750))
854
- .subscribe(() => {
855
- this.applyFilters();
856
- });
857
- }
858
- getSelectEnabled() {
859
- const enableds = [];
860
- let enabled;
861
- this.currentSelectGroup.computedSelectors.forEach(compSelect => {
862
- if (compSelect.multiple) {
863
- compSelect.selectors?.forEach(selector => {
864
- if (selector.enabled) {
865
- enableds.push(selector);
866
- }
867
- });
868
- this.selectEnableds = enableds;
869
- this.form.controls['selectMulti'].setValue(enableds);
870
- }
871
- else {
872
- compSelect.selectors?.forEach(selector => {
873
- if (selector.enabled) {
874
- enabled = selector;
875
- }
876
- });
877
- this.form.controls['select'].reset(enabled);
878
- this.selectEnabled$.subscribe((value) => {
879
- if (this.form.controls['select'].value !== value) {
880
- this.form.controls['select'].setValue(value);
881
- }
882
- });
883
- this.selectEnabled = enabled;
884
- }
885
- });
886
- }
887
- getAutocompleteEnabled() {
888
- let enabled;
889
- this.currentAutocompleteGroup.computedSelectors.forEach(compSelect => {
890
- compSelect.selectors?.forEach(selector => {
891
- if (selector.enabled) {
892
- const dom = {
893
- id: selector.filters.expression,
894
- value: selector.title
895
- };
896
- enabled = selector.title;
897
- this.form.controls['autocomplete'].setValue(dom);
898
- }
899
- });
900
- this.autocompleteEnabled = enabled;
901
- });
902
- }
903
- getToolTip(selector) {
904
- let toolTip;
905
- if (selector.tooltip) {
906
- if (Array.isArray(selector.tooltip)) {
907
- toolTip = selector.tooltip.join('\n');
908
- }
909
- else {
910
- toolTip = selector.tooltip;
911
- }
912
- }
913
- return toolTip || '';
914
- }
915
- async getSelectDomValues() {
916
- for (const bundle of this.datasource.options.ogcFilters.select.bundles) {
917
- if (bundle.domSelectors) {
918
- let domValues;
919
- for (const domSelector of bundle.domSelectors) {
920
- let filterDOM;
921
- for (const domOptions of this.configService.getConfig('dom')) {
922
- if (domSelector.id === domOptions.id || domSelector.name === domOptions.name) {
923
- filterDOM = {
924
- id: domOptions.id,
925
- url: domOptions.url,
926
- name: domOptions.name,
927
- values: domOptions.values
928
- };
929
- }
930
- }
931
- filterDOM.url ? domValues = await this.domService.getDom(filterDOM) :
932
- domValues = filterDOM.values;
933
- if (domValues) {
934
- let newBundle = bundle;
935
- newBundle.selectors = [];
936
- let selector;
937
- for (const value of domValues) {
938
- if (bundle.multiple) {
939
- let enabled;
940
- this.selectEnableds?.find(sel => sel.title === value.value) ? enabled = true : enabled = false;
941
- selector = {
942
- title: value.value,
943
- enabled,
944
- filters: {
945
- operator: domSelector.operator,
946
- propertyName: domSelector.propertyName,
947
- expression: value.id,
948
- }
949
- };
950
- }
951
- else {
952
- selector = {
953
- title: value.value,
954
- enabled: this.selectEnabled?.title === value.value ?
955
- true : false,
956
- filters: {
957
- operator: domSelector.operator,
958
- propertyName: domSelector.propertyName,
959
- expression: value.id,
960
- }
961
- };
962
- }
963
- newBundle.selectors.push(selector);
964
- }
965
- this.getSelectGroups().find(group => group.ids.includes(newBundle.id)).computedSelectors
966
- .find(comp => comp.title === newBundle.title).selectors = newBundle.selectors;
967
- }
968
- }
969
- this.getSelectEnabled();
970
- }
971
- }
972
- }
973
- async getAutocompleteDomValues() {
974
- for (const bundle of this.datasource.options.ogcFilters.autocomplete.bundles) {
975
- if (bundle.domSelectors) {
976
- let domValues;
977
- for (const domSelector of bundle.domSelectors) {
978
- let filterDOM;
979
- for (const domOptions of this.configService.getConfig('dom')) {
980
- if (domSelector.id === domOptions.id || domSelector.name === domOptions.name) {
981
- filterDOM = {
982
- id: domOptions.id,
983
- url: domOptions.url,
984
- name: domOptions.name,
985
- values: domOptions.values
986
- };
987
- }
988
- }
989
- filterDOM.url ? domValues = await this.domService.getDom(filterDOM) :
990
- domValues = filterDOM.values;
991
- if (domValues) {
992
- let newBundle = bundle;
993
- newBundle.selectors = [];
994
- let selector;
995
- for (const value of domValues) {
996
- selector = {
997
- title: value.value,
998
- enabled: this.autocompleteEnabled && this.autocompleteEnabled === value.value ?
999
- true : false,
1000
- filters: {
1001
- operator: domSelector.operator,
1002
- propertyName: domSelector.propertyName,
1003
- expression: value.id,
1004
- }
1005
- };
1006
- newBundle.selectors.push(selector);
1007
- }
1008
- this.getAutocompleteGroups().find(group => group.ids.includes(newBundle.id)).computedSelectors
1009
- .find(comp => comp.title === newBundle.title).selectors = newBundle.selectors;
1010
- }
1011
- }
1012
- this.filteredOgcAutocomplete[bundle.id] = new Observable();
1013
- this.cdRef.detectChanges();
1014
- this.filteredOgcAutocomplete[bundle.id] = this.form.controls['autocomplete'].valueChanges.pipe(map(value => {
1015
- if (value.length) {
1016
- return domValues?.filter((option) => {
1017
- const filterNormalized = value ? value.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '') : '';
1018
- const featureNameNormalized = option.value.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '');
1019
- return featureNameNormalized.includes(filterNormalized);
1020
- });
1021
- }
1022
- }));
1023
- }
1024
- }
1025
- }
1026
- // getButtonStyle(pb: OgcPushButton): {} {
1027
- // let styles;
1028
- // if (pb.color) {
1029
- // styles = {
1030
- // 'background-color': pb.enabled ? `rgba(${pb.color})` : `rgba(255,255,255,0)`
1031
- // };
1032
- // } else {
1033
- // styles = {
1034
- // 'background-color': pb.enabled ? 'accent': `rgba(255,255,255,0)`,
1035
- // 'color': pb.enabled ? `rgba(0,0,0,0.9)` : `rgba(33,33,33,0.38)`
1036
- // }
1037
- // }
1038
- // return styles;
1039
- // }
1040
- getButtonColor(pushButton) {
1041
- let styles;
1042
- if (pushButton.color && pushButton.enabled) {
1043
- styles = {
1044
- 'background-color': `rgba(${pushButton.color})`
1045
- };
1046
- }
1047
- return styles;
1048
- }
1049
- bundleIsVertical(bundle) {
1050
- return bundle.vertical ? bundle.vertical : false;
1051
- }
1052
- onPushButtonsChangeGroup() {
1053
- this.getPushButtonsGroups().map(group => group.enabled = false);
1054
- this.getPushButtonsGroups().find(group => group === this.currentPushButtonsGroup).enabled = true;
1055
- }
1056
- onCheckboxesChangeGroup() {
1057
- this.getCheckboxesGroups().map(group => group.enabled = false);
1058
- this.getCheckboxesGroups().find(group => group === this.currentCheckboxesGroup).enabled = true;
1059
- }
1060
- onRadioButtonsChangeGroup() {
1061
- this.getRadioButtonsGroups().map(group => group.enabled = false);
1062
- this.getRadioButtonsGroups().find(group => group === this.currentRadioButtonsGroup).enabled = true;
1063
- }
1064
- onSelectChangeGroup() {
1065
- this.getSelectGroups().map(group => group.enabled = false);
1066
- this.getSelectGroups().find(group => group === this.currentSelectGroup).enabled = true;
1067
- }
1068
- onAutocompleteChangeGroup() {
1069
- this.getAutocompleteGroups().map(group => group.enabled = false);
1070
- this.getAutocompleteGroups().find(group => group === this.currentAutocompleteGroup).enabled = true;
1071
- }
1072
- onSelectionChange(currentOgcSelection, selectorType) {
1073
- clearTimeout(this.applyFiltersTimeout);
1074
- if (selectorType === 'radioButton') {
1075
- this.emptyRadioButtons();
1076
- }
1077
- if (currentOgcSelection) {
1078
- currentOgcSelection.enabled = !currentOgcSelection.enabled;
1079
- }
1080
- this.applyFiltersTimeout = setTimeout(() => {
1081
- this.applyFilters();
1082
- }, 750);
1083
- }
1084
- emptyRadioButtons() {
1085
- this.currentRadioButtonsGroup.computedSelectors.forEach(compSelect => {
1086
- compSelect.selectors.map(selector => selector.enabled = false);
1087
- this.applyFiltersTimeout = setTimeout(() => {
1088
- this.applyFilters();
1089
- }, 750);
1090
- });
1091
- }
1092
- emptySelect() {
1093
- this.selectEnabled = undefined;
1094
- }
1095
- emptyAutocomplete() {
1096
- this.autocompleteEnabled = undefined;
1097
- this.form.controls['autocomplete'].setValue('');
1098
- this.form.controls['autocomplete'].markAsUntouched();
1099
- }
1100
- toggleAllSelection() {
1101
- if (this.selectAllSelected) {
1102
- const enableds = [];
1103
- this.currentSelectGroup.computedSelectors.forEach(compSelect => {
1104
- compSelect.selectors?.forEach(selector => {
1105
- enableds.push(selector);
1106
- });
1107
- });
1108
- this.sel.options.forEach((item) => item.select());
1109
- this.selectEnableds = enableds;
1110
- }
1111
- else {
1112
- this.sel.options.forEach((item) => item.deselect());
1113
- this.selectEnableds = [];
1114
- }
1115
- }
1116
- selectOptionClick(value, bundle, event) {
1117
- if (bundle.multiple) {
1118
- const enableds = this.selectEnableds;
1119
- let newStatus = true;
1120
- this.sel.options.forEach((item) => {
1121
- if (!item.selected) {
1122
- newStatus = false;
1123
- }
1124
- });
1125
- this.selectAllSelected = newStatus;
1126
- if (event.isUserInput) {
1127
- if (enableds.length) {
1128
- for (const enabled of enableds) {
1129
- if (enabled.title === value.title) {
1130
- if (enabled.enabled && value.enabled) {
1131
- enableds.splice(enableds.indexOf(enabled), 1);
1132
- this.selectEnableds = enableds;
1133
- break;
1134
- }
1135
- }
1136
- else if (enableds.indexOf(enabled) === enableds.length - 1) {
1137
- enableds.push(value);
1138
- this.selectEnableds = enableds;
1139
- break;
1140
- }
1141
- }
1142
- }
1143
- else {
1144
- enableds.push(value);
1145
- this.selectEnableds = enableds;
1146
- }
1147
- }
1148
- }
1149
- else {
1150
- this.selectEnabled = value;
1151
- }
1152
- }
1153
- autocompleteOptionClick(value) {
1154
- this.autocompleteEnabled = value.value;
1155
- }
1156
- displayFn(dom) {
1157
- return dom ? dom.value : undefined;
1158
- }
1159
- applyFilters() {
1160
- let filterQueryString = '';
1161
- const conditions = [];
1162
- const currentGroups = [this.currentPushButtonsGroup, this.currentCheckboxesGroup,
1163
- this.currentRadioButtonsGroup, this.currentSelectGroup, this.currentAutocompleteGroup];
1164
- for (const currentGroup of currentGroups) {
1165
- if (currentGroup.computedSelectors) {
1166
- currentGroup.computedSelectors.map(selectorBundle => {
1167
- const bundleCondition = [];
1168
- selectorBundle.selectors?.filter(ogcSelector => ogcSelector.enabled === true)
1169
- .forEach(enabledSelector => bundleCondition.push(enabledSelector.filters));
1170
- if (bundleCondition.length >= 1) {
1171
- if (bundleCondition.length === 1) {
1172
- conditions.push(bundleCondition[0]);
1173
- }
1174
- else {
1175
- conditions.push({ logical: selectorBundle.logical, filters: bundleCondition });
1176
- }
1177
- }
1178
- });
1179
- }
1180
- }
1181
- if (this.isTemporalOperator() && this._currentFilter.active) {
1182
- conditions.push(this.datasource.options.ogcFilters.interfaceOgcFilters[0]);
1183
- }
1184
- if (conditions.length >= 1) {
1185
- filterQueryString = this.ogcFilterWriter
1186
- .buildFilter(conditions.length === 1 ?
1187
- conditions[0] : { logical: 'And', filters: conditions });
1188
- }
1189
- if (this.datasource.options.type === 'wms') {
1190
- this.ogcFilterService.filterByOgc(this.datasource, filterQueryString);
1191
- }
1192
- if (this.datasource.options.type === 'wfs') {
1193
- // TODO: Check how to prevent wfs to refresh when filter icon is pushed...
1194
- this.datasource.ol.refresh();
1195
- }
1196
- this.datasource.setOgcFilters(this.datasource.options.ogcFilters, true);
1197
- }
1198
- isMoreResults(bundle, type) {
1199
- let selectorsLength = 0;
1200
- for (const selectors of bundle.selectors) {
1201
- selectorsLength++;
1202
- }
1203
- const index = type === 'radio' ? this.radioButtonsIndex : this.checkboxesIndex;
1204
- return selectorsLength > index;
1205
- }
1206
- displayMoreResults(type) {
1207
- type === 'radio' ? this.radioButtonsIndex += 5 : this.checkboxesIndex += 5;
1208
- return;
1209
- }
1210
- isLessResults(bundle, type) {
1211
- let selectorsLength = 0;
1212
- for (const selectors of bundle.selectors) {
1213
- selectorsLength++;
1214
- }
1215
- const index = type === 'radio' ? this.radioButtonsIndex : this.checkboxesIndex;
1216
- return this.baseIndex !== index && selectorsLength > this.baseIndex;
1217
- }
1218
- displayLessResults(type) {
1219
- type === 'radio' ? this.radioButtonsIndex = this.baseIndex : this.checkboxesIndex = this.baseIndex;
1220
- return;
1221
- }
1222
- isTemporalOperator() {
1223
- return (this.currentFilter?.operator?.toLowerCase() ===
1224
- this.ogcFilterOperator.During.toLowerCase());
1225
- }
1226
- changeProperty(value, pos, refreshFilter = true) {
1227
- const detectedProperty = this.detectProperty(pos);
1228
- if (detectedProperty) {
1229
- this.datasource.options.ogcFilters.interfaceOgcFilters.find(filter => filter.filterid === this.currentFilter.filterid)[detectedProperty] = value;
1230
- if (refreshFilter) {
1231
- this.applyFilters();
1232
- }
1233
- }
1234
- }
1235
- detectProperty(pos) {
1236
- switch (this.currentFilter.operator) {
1237
- case OgcFilterOperator.PropertyIsNotEqualTo:
1238
- case OgcFilterOperator.PropertyIsEqualTo:
1239
- case OgcFilterOperator.PropertyIsGreaterThan:
1240
- case OgcFilterOperator.PropertyIsGreaterThanOrEqualTo:
1241
- case OgcFilterOperator.PropertyIsLessThan:
1242
- case OgcFilterOperator.PropertyIsLessThanOrEqualTo:
1243
- return 'expression';
1244
- case OgcFilterOperator.PropertyIsLike:
1245
- return 'pattern';
1246
- case OgcFilterOperator.PropertyIsBetween:
1247
- return pos && pos === 1
1248
- ? 'lowerBoundary'
1249
- : pos && pos === 2
1250
- ? 'upperBoundary'
1251
- : undefined;
1252
- case OgcFilterOperator.During:
1253
- return pos && pos === 1
1254
- ? 'begin'
1255
- : pos && pos === 2
1256
- ? 'end'
1257
- : undefined;
1258
- default:
1259
- return;
1260
- }
1261
- }
1262
- }
1263
- OgcFilterSelectionComponent.ɵfac = function OgcFilterSelectionComponent_Factory(t) { return new (t || OgcFilterSelectionComponent)(i0.ɵɵdirectiveInject(i1.OGCFilterService), i0.ɵɵdirectiveInject(i2.UntypedFormBuilder), i0.ɵɵdirectiveInject(i3.DOMService), i0.ɵɵdirectiveInject(i4.ConfigService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
1264
- OgcFilterSelectionComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcFilterSelectionComponent, selectors: [["igo-ogc-filter-selection"]], viewQuery: function OgcFilterSelectionComponent_Query(rf, ctx) { if (rf & 1) {
1265
- i0.ɵɵviewQuery(_c0, 5);
1266
- } if (rf & 2) {
1267
- let _t;
1268
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sel = _t.first);
1269
- } }, inputs: { refreshFilters: "refreshFilters", datasource: "datasource", map: "map", checkboxesIndex: "checkboxesIndex", radioButtonsIndex: "radioButtonsIndex", baseIndex: "baseIndex", currentFilter: "currentFilter" }, features: [i0.ɵɵProvidersFeature([DOMService])], decls: 3, vars: 3, consts: [[3, "formGroup"], [4, "ngFor", "ngForOf"], [4, "ngIf"], ["class", "pushButtonGroups", 4, "ngIf"], ["class", "checkboxGroups", 4, "ngIf"], ["class", "radioButtonGroups", 4, "ngIf"], ["class", "selectGroups", 4, "ngIf"], ["class", "autocompleteGroups", 4, "ngIf"], [1, "pushButtonGroups"], ["class", "groupsSelector", 4, "ngIf"], [1, "groupsSelector"], ["formControlName", "pushButtonsGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"], ["formControlName", "pushButtons", "appearance", "legacy", "multiple", "true", 1, "mat-typography", 3, "vertical"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "ngStyle", "checked", "value", "change", 4, "ngFor", "ngForOf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "ngStyle", "checked", "value", "change"], [1, "checkboxGroups"], ["formControlName", "checkboxesGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], [1, "checkboxes", "mat-typography"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "checked", "value", "change", 4, "ngFor", "ngForOf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "checked", "value", "change"], ["class", "lessResults mat-typography", 3, "click", 4, "ngIf"], ["class", "moreResults mat-typography", 3, "click", 4, "ngIf"], [1, "lessResults", "mat-typography", 3, "click"], [1, "moreResults", "mat-typography", 3, "click"], [1, "radioButtonGroups"], ["formControlName", "radioButtonsGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], ["formControlName", "radioButtons", 1, "mat-typography"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "change", 4, "ngIf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "change"], [1, "selectGroups"], ["formControlName", "selectGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "click", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["notMulti", ""], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "click"], ["svgIcon", "filter-remove"], ["formControlName", "selectMulti", 3, "multiple", "placeholder"], ["selection", ""], [3, "ngModel", "ngModelOptions", "ngModelChange", "change", 4, "ngIf"], ["tooltip-position", "below", "matTooltipDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "value", "onSelectionChange", 4, "ngFor", "ngForOf"], [3, "ngModel", "ngModelOptions", "ngModelChange", "change"], ["tooltip-position", "below", "matTooltipDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "value", "onSelectionChange"], ["formControlName", "select", 3, "placeholder"], [1, "autocompleteGroups"], ["formControlName", "autocompleteGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], [3, "width", 4, "ngIf"], ["matInput", "", "type", "text", "formControlName", "autocomplete", 1, "autocomplete", 3, "matAutocomplete", "placeholder"], ["autocomplete", ""], [3, "displayWith", "optionSelected"], ["auto", "matAutocomplete", "autocomplete", ""], [3, "datasource", "currentFilter", "datasourceChange", "currentFilterChange", "changeProperty"]], template: function OgcFilterSelectionComponent_Template(rf, ctx) { if (rf & 1) {
1270
- i0.ɵɵelementStart(0, "form", 0);
1271
- i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_Template, 6, 5, "div", 1);
1272
- i0.ɵɵelementEnd();
1273
- i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_2_Template, 5, 4, "div", 2);
1274
- } if (rf & 2) {
1275
- i0.ɵɵproperty("formGroup", ctx.form);
1276
- i0.ɵɵadvance(1);
1277
- i0.ɵɵproperty("ngForOf", ctx.ogcFiltersSelectors);
1278
- i0.ɵɵadvance(1);
1279
- i0.ɵɵproperty("ngIf", ctx.isTemporalOperator());
1280
- } }, styles: [".mat-button-toggle-group[_ngcontent-%COMP%]{margin:5px;flex-wrap:wrap;box-shadow:none!important;width:95%}.checkboxes[_ngcontent-%COMP%]{flex-wrap:wrap;box-shadow:none}.groupsSelector[_ngcontent-%COMP%]{text-align:center}mat-button-toggle[_ngcontent-%COMP%]{display:inline-flex;border:1.5px solid black;border-radius:5px;margin:5px;white-space:normal;min-height:40px;height:auto;width:142px}mat-button-toggle[_ngcontent-%COMP%] .mat-button-toggle-label-content{line-height:inherit;font-size:small;display:block}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){mat-button-toggle[_ngcontent-%COMP%]{width:45%}} .material-tooltip{white-space:pre-wrap}mat-checkbox[_ngcontent-%COMP%], mat-radio-button[_ngcontent-%COMP%]{margin:7px;width:95%;display:inline-flex;font-size:larger}mat-checkbox[_ngcontent-%COMP%] label, mat-radio-button[_ngcontent-%COMP%] label{white-space:normal}mat-checkbox[_ngcontent-%COMP%]{vertical-align:middle}mat-button[_ngcontent-%COMP%]{padding-right:10px;cursor:pointer}h4[_ngcontent-%COMP%]{margin:7px;text-align:left}u[_ngcontent-%COMP%]{cursor:pointer;color:#00f;margin:5px}p[_ngcontent-%COMP%]{margin:0;margin:initial}"] });
1281
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterSelectionComponent, [{
1282
- type: Component,
1283
- args: [{ selector: 'igo-ogc-filter-selection', providers: [DOMService], template: "<form [formGroup]=\"form\">\n <div *ngFor=\"let selector of ogcFiltersSelectors\">\n <div class=\"pushButtonGroups\" *ngIf=\"selector.selectorType === 'pushButton'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getPushButtonsGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"pushButtonsGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentPushButtonsGroup\">\n <mat-option *ngFor=\"let selectorGroup of getPushButtonsGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentPushButtonsGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <mat-button-toggle-group\n formControlName=\"pushButtons\" class=\"mat-typography\" appearance=\"legacy\" vertical={{bundleIsVertical(bundle)}} multiple=\"true\">\n <mat-button-toggle *ngFor=\"let ogcPushButton of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcPushButton)\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [ngStyle]=\"getButtonColor(ogcPushButton)\"\n [checked]=\"ogcPushButton.enabled\" (change)=\"onSelectionChange(ogcPushButton, selector.selectorType)\"\n [value]=\"ogcPushButton\">{{ogcPushButton.title}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </ng-container>\n </div>\n\n <div class=\"checkboxGroups\" *ngIf=\"selector.selectorType === 'checkbox'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getCheckboxesGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"checkboxesGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentCheckboxesGroup\">\n <mat-option *ngFor=\"let selectorGroup of getCheckboxesGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentCheckboxesGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <div class=\"checkboxes mat-typography\">\n <mat-checkbox *ngFor=\"let ogcCheckbox of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcCheckbox)\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [checked]=\"ogcCheckbox.enabled\" (change)=\"onSelectionChange(ogcCheckbox, selector.selectorType)\"\n [value]=\"ogcCheckbox\">{{ogcCheckbox.title}}\n </mat-checkbox>\n </div>\n <p *ngIf=\"isLessResults(bundle, 'checkbox') || isMoreResults(bundle, 'checkbox')\">\n <u *ngIf=\"isLessResults(bundle, 'checkbox')\"\n class=\"lessResults mat-typography\"\n (click)=\"displayLessResults('checkbox')\">{{ 'igo.geo.filter.displayLessResults' | translate }}\n </u>\n <u *ngIf=\"isMoreResults(bundle, 'checkbox')\"\n class=\"moreResults mat-typography\"\n (click)=\"displayMoreResults('checkbox')\">{{ 'igo.geo.filter.displayMoreResults' | translate }}\n </u>\n </p>\n </ng-container>\n </div>\n\n <div class=\"radioButtonGroups\" *ngIf=\"selector.selectorType === 'radioButton'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getRadioButtonsGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"radioButtonsGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentRadioButtonsGroup\">\n <mat-option *ngFor=\"let selectorGroup of getRadioButtonsGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentRadioButtonsGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <mat-radio-group\n formControlName=\"radioButtons\" class=\"mat-typography\">\n <mat-radio-button *ngIf=\"bundle.unfiltered\"\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (change)=\"emptyRadioButtons()\">{{ 'igo.geo.filter.resetFilters' | translate }}\n </mat-radio-button>\n <mat-radio-button *ngFor=\"let ogcRadioButton of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcRadioButton)\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [checked]=\"ogcRadioButton.enabled\" (change)=\"onSelectionChange(ogcRadioButton, selector.selectorType)\"\n [value]=\"ogcRadioButton\">{{ogcRadioButton.title}}\n </mat-radio-button>\n <p *ngIf=\"isLessResults(bundle, 'radio') || isMoreResults(bundle, 'radio')\">\n <u *ngIf=\"isLessResults(bundle, 'radio')\"\n class=\"lessResults mat-typography\"\n (click)=\"displayLessResults('radio')\">{{ 'igo.geo.filter.displayLessResults' | translate }}\n </u>\n <u *ngIf=\"isMoreResults(bundle, 'radio')\"\n class=\"moreResults mat-typography\"\n (click)=\"displayMoreResults('radio')\">{{ 'igo.geo.filter.displayMoreResults' | translate }}\n </u>\n </p>\n </mat-radio-group>\n </ng-container>\n </div>\n\n <div class=\"selectGroups\" *ngIf=\"selector.selectorType === 'select'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getSelectGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"selectGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentSelectGroup\">\n <mat-option *ngFor=\"let selectorGroup of getSelectGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentSelectGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <div class=\"groupsSelector\">\n <mat-button *ngIf=\"bundle.unfiltered && !bundle.multiple\"\n mat-icon-button\n color=\"warn\"\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (click)=\"emptySelect()\">\n <mat-icon svgIcon=\"filter-remove\"></mat-icon>\n </mat-button>\n <mat-form-field [style.width.%]=\"bundle.width ? bundle.width : undefined\">\n <div *ngIf=\"bundle.multiple; else notMulti\">\n <mat-select\n #selection [multiple]=\"bundle.multiple\" [placeholder]=\"bundle.title\" formControlName=\"selectMulti\">\n <div class=\"checkboxes mat-typography\">\n <mat-checkbox *ngIf=\"bundle.multiple\"\n [(ngModel)]=\"selectAllSelected\" [ngModelOptions]=\"{standalone: true}\"\n (change)=\"toggleAllSelection()\">Tous\n </mat-checkbox>\n </div>\n <mat-option *ngFor=\"let ogcSelect of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcSelect)\" tooltip-position=\"below\" matTooltipDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (onSelectionChange)=\"selectOptionClick($event.source.value, bundle, $event)\"\n [value]=\"ogcSelect\">{{ogcSelect.title}}\n </mat-option>\n </mat-select>\n </div>\n <ng-template #notMulti>\n <mat-select\n [placeholder]=\"bundle.title\" formControlName=\"select\">\n <mat-option *ngFor=\"let ogcSelect of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcSelect)\" tooltip-position=\"below\" matTooltipDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [value]=\"ogcSelect\" (onSelectionChange)=\"selectOptionClick($event.source.value, bundle)\">{{ogcSelect.title}}\n </mat-option>\n </mat-select>\n </ng-template>\n </mat-form-field>\n </div>\n </ng-container>\n </div>\n\n <div class=\"autocompleteGroups\" *ngIf=\"selector.selectorType === 'autocomplete'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getAutocompleteGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"autocompleteGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentAutocompleteGroup\">\n <mat-option *ngFor=\"let autocompleteGroup of getAutocompleteGroups()\"\n [value]=\"autocompleteGroup\">{{autocompleteGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentAutocompleteGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <div class=\"groupsSelector\">\n <mat-button *ngIf=\"bundle.unfiltered\"\n mat-icon-button\n color=\"warn\"\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (click)=\"emptyAutocomplete()\">\n <mat-icon svgIcon=\"filter-remove\"></mat-icon>\n </mat-button>\n <mat-form-field *ngIf=\"filteredOgcAutocomplete[bundle.id]\" [style.width.%]=\"bundle.width ? bundle.width : undefined\">\n <input matInput type=\"text\" formControlName=\"autocomplete\" #autocomplete class=\"autocomplete\"\n [matAutocomplete]=\"auto\" [placeholder]=\"bundle.title\">\n <mat-autocomplete #auto=\"matAutocomplete\" #autocomplete (optionSelected)=\"autocompleteOptionClick($event.option.value)\"\n [displayWith]=\"displayFn\">\n <mat-option *ngFor=\"let ogcAutocomplete of filteredOgcAutocomplete[bundle.id] | async\" [value]=\"ogcAutocomplete\">\n {{ ogcAutocomplete.value }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n </ng-container>\n </div>\n </div>\n</form>\n\n<div *ngIf=\"isTemporalOperator()\">\n <mat-divider></mat-divider>\n <h4 *ngIf=\"!currentFilter.title\">{{ 'igo.geo.filter.reportingDate' | translate }}</h4>\n <h4 *ngIf=\"currentFilter.title\">{{ currentFilter.title }}</h4>\n <igo-ogc-filter-time\n [(datasource)]=\"datasource\"\n [(currentFilter)]=\"currentFilter\"\n (changeProperty)=\"changeProperty($event.value, $event.pos)\">\n </igo-ogc-filter-time>\n</div>", styles: [".mat-button-toggle-group{margin:5px;flex-wrap:wrap;box-shadow:none!important;width:95%}.checkboxes{flex-wrap:wrap;box-shadow:none}.groupsSelector{text-align:center}mat-button-toggle{display:inline-flex;border:1.5px solid black;border-radius:5px;margin:5px;white-space:normal;min-height:40px;height:auto;width:142px}mat-button-toggle ::ng-deep .mat-button-toggle-label-content{line-height:inherit;font-size:small;display:block}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){mat-button-toggle{width:45%}}::ng-deep .material-tooltip{white-space:pre-wrap}mat-checkbox,mat-radio-button{margin:7px;width:95%;display:inline-flex;font-size:larger}mat-checkbox ::ng-deep label,mat-radio-button ::ng-deep label{white-space:normal}mat-checkbox{vertical-align:middle}mat-button{padding-right:10px;cursor:pointer}h4{margin:7px;text-align:left}u{cursor:pointer;color:#00f;margin:5px}p{margin:0;margin:initial}\n"] }]
1284
- }], function () { return [{ type: i1.OGCFilterService }, { type: i2.UntypedFormBuilder }, { type: i3.DOMService }, { type: i4.ConfigService }, { type: i0.ChangeDetectorRef }]; }, { sel: [{
1285
- type: ViewChild,
1286
- args: ['selection']
1287
- }], refreshFilters: [{
1288
- type: Input
1289
- }], datasource: [{
1290
- type: Input
1291
- }], map: [{
1292
- type: Input
1293
- }], checkboxesIndex: [{
1294
- type: Input
1295
- }], radioButtonsIndex: [{
1296
- type: Input
1297
- }], baseIndex: [{
1298
- type: Input
1299
- }], currentFilter: [{
1300
- type: Input
1301
- }] }); })();
1
+ import { Component, Input, ViewChild } from '@angular/core';
2
+ import { DOMService } from '@igo2/common';
3
+ import { OgcFilterWriter } from '../../filter/shared/ogc-filter';
4
+ import { Validators } from '@angular/forms';
5
+ import { debounceTime, map } from 'rxjs/operators';
6
+ import { OgcFilterOperator } from '../shared/ogc-filter.enum';
7
+ import { BehaviorSubject, Observable } from 'rxjs';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../shared/ogc-filter.service";
10
+ import * as i2 from "@angular/forms";
11
+ import * as i3 from "@igo2/common";
12
+ import * as i4 from "@igo2/core";
13
+ const _c0 = ["selection"];
14
+ function OgcFilterSelectionComponent_div_1_div_1_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
15
+ i0.ɵɵelementStart(0, "mat-option", 13);
16
+ i0.ɵɵtext(1);
17
+ i0.ɵɵelementEnd();
18
+ } if (rf & 2) {
19
+ const selectorGroup_r11 = ctx.$implicit;
20
+ i0.ɵɵproperty("value", selectorGroup_r11);
21
+ i0.ɵɵadvance(1);
22
+ i0.ɵɵtextInterpolate1("", selectorGroup_r11.title, " ");
23
+ } }
24
+ function OgcFilterSelectionComponent_div_1_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
25
+ const _r13 = i0.ɵɵgetCurrentView();
26
+ i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 11);
27
+ i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_1_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r12 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r12.currentPushButtonsGroup = $event); });
28
+ i0.ɵɵpipe(3, "translate");
29
+ i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_1_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
30
+ i0.ɵɵelementEnd()()();
31
+ } if (rf & 2) {
32
+ const ctx_r8 = i0.ɵɵnextContext(3);
33
+ i0.ɵɵadvance(2);
34
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r8.currentPushButtonsGroup);
35
+ i0.ɵɵadvance(2);
36
+ i0.ɵɵproperty("ngForOf", ctx_r8.getPushButtonsGroups());
37
+ } }
38
+ function OgcFilterSelectionComponent_div_1_div_1_ng_container_3_mat_button_toggle_4_Template(rf, ctx) { if (rf & 1) {
39
+ const _r18 = i0.ɵɵgetCurrentView();
40
+ i0.ɵɵelementStart(0, "mat-button-toggle", 16);
41
+ i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_1_ng_container_3_mat_button_toggle_4_Template_mat_button_toggle_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r18); const ogcPushButton_r16 = restoredCtx.$implicit; const selector_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r17 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r17.onSelectionChange(ogcPushButton_r16, selector_r2.selectorType)); });
42
+ i0.ɵɵtext(1);
43
+ i0.ɵɵelementEnd();
44
+ } if (rf & 2) {
45
+ const ogcPushButton_r16 = ctx.$implicit;
46
+ const ctx_r15 = i0.ɵɵnextContext(4);
47
+ i0.ɵɵproperty("matTooltip", ctx_r15.getToolTip(ogcPushButton_r16))("ngStyle", ctx_r15.getButtonColor(ogcPushButton_r16))("checked", ogcPushButton_r16.enabled)("value", ogcPushButton_r16);
48
+ i0.ɵɵadvance(1);
49
+ i0.ɵɵtextInterpolate1("", ogcPushButton_r16.title, " ");
50
+ } }
51
+ function OgcFilterSelectionComponent_div_1_div_1_ng_container_3_Template(rf, ctx) { if (rf & 1) {
52
+ i0.ɵɵelementContainerStart(0);
53
+ i0.ɵɵelementStart(1, "h4");
54
+ i0.ɵɵtext(2);
55
+ i0.ɵɵelementEnd();
56
+ i0.ɵɵelementStart(3, "mat-button-toggle-group", 14);
57
+ i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_1_ng_container_3_mat_button_toggle_4_Template, 2, 5, "mat-button-toggle", 15);
58
+ i0.ɵɵelementEnd();
59
+ i0.ɵɵelementContainerEnd();
60
+ } if (rf & 2) {
61
+ const bundle_r14 = ctx.$implicit;
62
+ const ctx_r9 = i0.ɵɵnextContext(3);
63
+ i0.ɵɵadvance(2);
64
+ i0.ɵɵtextInterpolate(bundle_r14.title);
65
+ i0.ɵɵadvance(1);
66
+ i0.ɵɵpropertyInterpolate("vertical", ctx_r9.bundleIsVertical(bundle_r14));
67
+ i0.ɵɵadvance(1);
68
+ i0.ɵɵproperty("ngForOf", bundle_r14.selectors);
69
+ } }
70
+ function OgcFilterSelectionComponent_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
71
+ i0.ɵɵelementStart(0, "div", 8);
72
+ i0.ɵɵelement(1, "mat-divider");
73
+ i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_1_div_2_Template, 5, 5, "div", 9);
74
+ i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_1_ng_container_3_Template, 5, 3, "ng-container", 1);
75
+ i0.ɵɵelementEnd();
76
+ } if (rf & 2) {
77
+ const ctx_r3 = i0.ɵɵnextContext(2);
78
+ i0.ɵɵadvance(2);
79
+ i0.ɵɵproperty("ngIf", ctx_r3.getPushButtonsGroups().length > 1);
80
+ i0.ɵɵadvance(1);
81
+ i0.ɵɵproperty("ngForOf", ctx_r3.currentPushButtonsGroup.computedSelectors);
82
+ } }
83
+ function OgcFilterSelectionComponent_div_1_div_2_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
84
+ i0.ɵɵelementStart(0, "mat-option", 13);
85
+ i0.ɵɵtext(1);
86
+ i0.ɵɵelementEnd();
87
+ } if (rf & 2) {
88
+ const selectorGroup_r23 = ctx.$implicit;
89
+ i0.ɵɵproperty("value", selectorGroup_r23);
90
+ i0.ɵɵadvance(1);
91
+ i0.ɵɵtextInterpolate1("", selectorGroup_r23.title, " ");
92
+ } }
93
+ function OgcFilterSelectionComponent_div_1_div_2_div_2_Template(rf, ctx) { if (rf & 1) {
94
+ const _r25 = i0.ɵɵgetCurrentView();
95
+ i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 18);
96
+ i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_2_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r24.currentCheckboxesGroup = $event); });
97
+ i0.ɵɵpipe(3, "translate");
98
+ i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_2_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
99
+ i0.ɵɵelementEnd()()();
100
+ } if (rf & 2) {
101
+ const ctx_r20 = i0.ɵɵnextContext(3);
102
+ i0.ɵɵadvance(2);
103
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r20.currentCheckboxesGroup);
104
+ i0.ɵɵadvance(2);
105
+ i0.ɵɵproperty("ngForOf", ctx_r20.getCheckboxesGroups());
106
+ } }
107
+ function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_mat_checkbox_4_Template(rf, ctx) { if (rf & 1) {
108
+ const _r31 = i0.ɵɵgetCurrentView();
109
+ i0.ɵɵelementStart(0, "mat-checkbox", 21);
110
+ i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_mat_checkbox_4_Template_mat_checkbox_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r31); const ogcCheckbox_r29 = restoredCtx.$implicit; const selector_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r30 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r30.onSelectionChange(ogcCheckbox_r29, selector_r2.selectorType)); });
111
+ i0.ɵɵtext(1);
112
+ i0.ɵɵelementEnd();
113
+ } if (rf & 2) {
114
+ const ogcCheckbox_r29 = ctx.$implicit;
115
+ const ctx_r27 = i0.ɵɵnextContext(4);
116
+ i0.ɵɵproperty("matTooltip", ctx_r27.getToolTip(ogcCheckbox_r29))("checked", ogcCheckbox_r29.enabled)("value", ogcCheckbox_r29);
117
+ i0.ɵɵadvance(1);
118
+ i0.ɵɵtextInterpolate1("", ogcCheckbox_r29.title, " ");
119
+ } }
120
+ function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_1_Template(rf, ctx) { if (rf & 1) {
121
+ const _r36 = i0.ɵɵgetCurrentView();
122
+ i0.ɵɵelementStart(0, "u", 24);
123
+ i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_1_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r35.displayLessResults("checkbox")); });
124
+ i0.ɵɵtext(1);
125
+ i0.ɵɵpipe(2, "translate");
126
+ i0.ɵɵelementEnd();
127
+ } if (rf & 2) {
128
+ i0.ɵɵadvance(1);
129
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayLessResults"), " ");
130
+ } }
131
+ function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_2_Template(rf, ctx) { if (rf & 1) {
132
+ const _r38 = i0.ɵɵgetCurrentView();
133
+ i0.ɵɵelementStart(0, "u", 25);
134
+ i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_2_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r38); const ctx_r37 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r37.displayMoreResults("checkbox")); });
135
+ i0.ɵɵtext(1);
136
+ i0.ɵɵpipe(2, "translate");
137
+ i0.ɵɵelementEnd();
138
+ } if (rf & 2) {
139
+ i0.ɵɵadvance(1);
140
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayMoreResults"), " ");
141
+ } }
142
+ function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_Template(rf, ctx) { if (rf & 1) {
143
+ i0.ɵɵelementStart(0, "p");
144
+ i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_1_Template, 3, 3, "u", 22);
145
+ i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_u_2_Template, 3, 3, "u", 23);
146
+ i0.ɵɵelementEnd();
147
+ } if (rf & 2) {
148
+ const bundle_r26 = i0.ɵɵnextContext().$implicit;
149
+ const ctx_r28 = i0.ɵɵnextContext(3);
150
+ i0.ɵɵadvance(1);
151
+ i0.ɵɵproperty("ngIf", ctx_r28.isLessResults(bundle_r26, "checkbox"));
152
+ i0.ɵɵadvance(1);
153
+ i0.ɵɵproperty("ngIf", ctx_r28.isMoreResults(bundle_r26, "checkbox"));
154
+ } }
155
+ function OgcFilterSelectionComponent_div_1_div_2_ng_container_3_Template(rf, ctx) { if (rf & 1) {
156
+ i0.ɵɵelementContainerStart(0);
157
+ i0.ɵɵelementStart(1, "h4");
158
+ i0.ɵɵtext(2);
159
+ i0.ɵɵelementEnd();
160
+ i0.ɵɵelementStart(3, "div", 19);
161
+ i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_mat_checkbox_4_Template, 2, 4, "mat-checkbox", 20);
162
+ i0.ɵɵelementEnd();
163
+ i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_p_5_Template, 3, 2, "p", 2);
164
+ i0.ɵɵelementContainerEnd();
165
+ } if (rf & 2) {
166
+ const bundle_r26 = ctx.$implicit;
167
+ const ctx_r21 = i0.ɵɵnextContext(3);
168
+ i0.ɵɵadvance(2);
169
+ i0.ɵɵtextInterpolate(bundle_r26.title);
170
+ i0.ɵɵadvance(2);
171
+ i0.ɵɵproperty("ngForOf", bundle_r26.selectors);
172
+ i0.ɵɵadvance(1);
173
+ i0.ɵɵproperty("ngIf", ctx_r21.isLessResults(bundle_r26, "checkbox") || ctx_r21.isMoreResults(bundle_r26, "checkbox"));
174
+ } }
175
+ function OgcFilterSelectionComponent_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
176
+ i0.ɵɵelementStart(0, "div", 17);
177
+ i0.ɵɵelement(1, "mat-divider");
178
+ i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_2_div_2_Template, 5, 5, "div", 9);
179
+ i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_2_ng_container_3_Template, 6, 3, "ng-container", 1);
180
+ i0.ɵɵelementEnd();
181
+ } if (rf & 2) {
182
+ const ctx_r4 = i0.ɵɵnextContext(2);
183
+ i0.ɵɵadvance(2);
184
+ i0.ɵɵproperty("ngIf", ctx_r4.getCheckboxesGroups().length > 1);
185
+ i0.ɵɵadvance(1);
186
+ i0.ɵɵproperty("ngForOf", ctx_r4.currentCheckboxesGroup.computedSelectors);
187
+ } }
188
+ function OgcFilterSelectionComponent_div_1_div_3_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
189
+ i0.ɵɵelementStart(0, "mat-option", 13);
190
+ i0.ɵɵtext(1);
191
+ i0.ɵɵelementEnd();
192
+ } if (rf & 2) {
193
+ const selectorGroup_r43 = ctx.$implicit;
194
+ i0.ɵɵproperty("value", selectorGroup_r43);
195
+ i0.ɵɵadvance(1);
196
+ i0.ɵɵtextInterpolate1("", selectorGroup_r43.title, " ");
197
+ } }
198
+ function OgcFilterSelectionComponent_div_1_div_3_div_2_Template(rf, ctx) { if (rf & 1) {
199
+ const _r45 = i0.ɵɵgetCurrentView();
200
+ i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 27);
201
+ i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_3_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r45); const ctx_r44 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r44.currentRadioButtonsGroup = $event); });
202
+ i0.ɵɵpipe(3, "translate");
203
+ i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_3_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
204
+ i0.ɵɵelementEnd()()();
205
+ } if (rf & 2) {
206
+ const ctx_r40 = i0.ɵɵnextContext(3);
207
+ i0.ɵɵadvance(2);
208
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r40.currentRadioButtonsGroup);
209
+ i0.ɵɵadvance(2);
210
+ i0.ɵɵproperty("ngForOf", ctx_r40.getRadioButtonsGroups());
211
+ } }
212
+ function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_4_Template(rf, ctx) { if (rf & 1) {
213
+ const _r51 = i0.ɵɵgetCurrentView();
214
+ i0.ɵɵelementStart(0, "mat-radio-button", 30);
215
+ i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_4_Template_mat_radio_button_change_0_listener() { i0.ɵɵrestoreView(_r51); const ctx_r50 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r50.emptyRadioButtons()); });
216
+ i0.ɵɵpipe(1, "translate");
217
+ i0.ɵɵtext(2);
218
+ i0.ɵɵpipe(3, "translate");
219
+ i0.ɵɵelementEnd();
220
+ } if (rf & 2) {
221
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 2, "igo.geo.filter.resetFilters"));
222
+ i0.ɵɵadvance(2);
223
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(3, 4, "igo.geo.filter.resetFilters"), " ");
224
+ } }
225
+ function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_5_Template(rf, ctx) { if (rf & 1) {
226
+ const _r54 = i0.ɵɵgetCurrentView();
227
+ i0.ɵɵelementStart(0, "mat-radio-button", 21);
228
+ i0.ɵɵlistener("change", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_5_Template_mat_radio_button_change_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r54); const ogcRadioButton_r52 = restoredCtx.$implicit; const selector_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r53 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r53.onSelectionChange(ogcRadioButton_r52, selector_r2.selectorType)); });
229
+ i0.ɵɵtext(1);
230
+ i0.ɵɵelementEnd();
231
+ } if (rf & 2) {
232
+ const ogcRadioButton_r52 = ctx.$implicit;
233
+ const ctx_r48 = i0.ɵɵnextContext(4);
234
+ i0.ɵɵproperty("matTooltip", ctx_r48.getToolTip(ogcRadioButton_r52))("checked", ogcRadioButton_r52.enabled)("value", ogcRadioButton_r52);
235
+ i0.ɵɵadvance(1);
236
+ i0.ɵɵtextInterpolate1("", ogcRadioButton_r52.title, " ");
237
+ } }
238
+ function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_1_Template(rf, ctx) { if (rf & 1) {
239
+ const _r59 = i0.ɵɵgetCurrentView();
240
+ i0.ɵɵelementStart(0, "u", 24);
241
+ i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_1_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r59); const ctx_r58 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r58.displayLessResults("radio")); });
242
+ i0.ɵɵtext(1);
243
+ i0.ɵɵpipe(2, "translate");
244
+ i0.ɵɵelementEnd();
245
+ } if (rf & 2) {
246
+ i0.ɵɵadvance(1);
247
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayLessResults"), " ");
248
+ } }
249
+ function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_2_Template(rf, ctx) { if (rf & 1) {
250
+ const _r61 = i0.ɵɵgetCurrentView();
251
+ i0.ɵɵelementStart(0, "u", 25);
252
+ i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_2_Template_u_click_0_listener() { i0.ɵɵrestoreView(_r61); const ctx_r60 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r60.displayMoreResults("radio")); });
253
+ i0.ɵɵtext(1);
254
+ i0.ɵɵpipe(2, "translate");
255
+ i0.ɵɵelementEnd();
256
+ } if (rf & 2) {
257
+ i0.ɵɵadvance(1);
258
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.displayMoreResults"), " ");
259
+ } }
260
+ function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_Template(rf, ctx) { if (rf & 1) {
261
+ i0.ɵɵelementStart(0, "p");
262
+ i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_1_Template, 3, 3, "u", 22);
263
+ i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_u_2_Template, 3, 3, "u", 23);
264
+ i0.ɵɵelementEnd();
265
+ } if (rf & 2) {
266
+ const bundle_r46 = i0.ɵɵnextContext().$implicit;
267
+ const ctx_r49 = i0.ɵɵnextContext(3);
268
+ i0.ɵɵadvance(1);
269
+ i0.ɵɵproperty("ngIf", ctx_r49.isLessResults(bundle_r46, "radio"));
270
+ i0.ɵɵadvance(1);
271
+ i0.ɵɵproperty("ngIf", ctx_r49.isMoreResults(bundle_r46, "radio"));
272
+ } }
273
+ function OgcFilterSelectionComponent_div_1_div_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
274
+ i0.ɵɵelementContainerStart(0);
275
+ i0.ɵɵelementStart(1, "h4");
276
+ i0.ɵɵtext(2);
277
+ i0.ɵɵelementEnd();
278
+ i0.ɵɵelementStart(3, "mat-radio-group", 28);
279
+ i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_4_Template, 4, 6, "mat-radio-button", 29);
280
+ i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_mat_radio_button_5_Template, 2, 4, "mat-radio-button", 20);
281
+ i0.ɵɵtemplate(6, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_p_6_Template, 3, 2, "p", 2);
282
+ i0.ɵɵelementEnd();
283
+ i0.ɵɵelementContainerEnd();
284
+ } if (rf & 2) {
285
+ const bundle_r46 = ctx.$implicit;
286
+ const ctx_r41 = i0.ɵɵnextContext(3);
287
+ i0.ɵɵadvance(2);
288
+ i0.ɵɵtextInterpolate(bundle_r46.title);
289
+ i0.ɵɵadvance(2);
290
+ i0.ɵɵproperty("ngIf", bundle_r46.unfiltered);
291
+ i0.ɵɵadvance(1);
292
+ i0.ɵɵproperty("ngForOf", bundle_r46.selectors);
293
+ i0.ɵɵadvance(1);
294
+ i0.ɵɵproperty("ngIf", ctx_r41.isLessResults(bundle_r46, "radio") || ctx_r41.isMoreResults(bundle_r46, "radio"));
295
+ } }
296
+ function OgcFilterSelectionComponent_div_1_div_3_Template(rf, ctx) { if (rf & 1) {
297
+ i0.ɵɵelementStart(0, "div", 26);
298
+ i0.ɵɵelement(1, "mat-divider");
299
+ i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_3_div_2_Template, 5, 5, "div", 9);
300
+ i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_3_ng_container_3_Template, 7, 4, "ng-container", 1);
301
+ i0.ɵɵelementEnd();
302
+ } if (rf & 2) {
303
+ const ctx_r5 = i0.ɵɵnextContext(2);
304
+ i0.ɵɵadvance(2);
305
+ i0.ɵɵproperty("ngIf", ctx_r5.getRadioButtonsGroups().length > 1);
306
+ i0.ɵɵadvance(1);
307
+ i0.ɵɵproperty("ngForOf", ctx_r5.currentRadioButtonsGroup.computedSelectors);
308
+ } }
309
+ function OgcFilterSelectionComponent_div_1_div_4_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
310
+ i0.ɵɵelementStart(0, "mat-option", 13);
311
+ i0.ɵɵtext(1);
312
+ i0.ɵɵelementEnd();
313
+ } if (rf & 2) {
314
+ const selectorGroup_r66 = ctx.$implicit;
315
+ i0.ɵɵproperty("value", selectorGroup_r66);
316
+ i0.ɵɵadvance(1);
317
+ i0.ɵɵtextInterpolate1("", selectorGroup_r66.title, " ");
318
+ } }
319
+ function OgcFilterSelectionComponent_div_1_div_4_div_2_Template(rf, ctx) { if (rf & 1) {
320
+ const _r68 = i0.ɵɵgetCurrentView();
321
+ i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 32);
322
+ i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_4_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r68); const ctx_r67 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r67.currentSelectGroup = $event); });
323
+ i0.ɵɵpipe(3, "translate");
324
+ i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
325
+ i0.ɵɵelementEnd()()();
326
+ } if (rf & 2) {
327
+ const ctx_r63 = i0.ɵɵnextContext(3);
328
+ i0.ɵɵadvance(2);
329
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r63.currentSelectGroup);
330
+ i0.ɵɵadvance(2);
331
+ i0.ɵɵproperty("ngForOf", ctx_r63.getSelectGroups());
332
+ } }
333
+ function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_mat_button_4_Template(rf, ctx) { if (rf & 1) {
334
+ const _r75 = i0.ɵɵgetCurrentView();
335
+ i0.ɵɵelementStart(0, "mat-button", 36);
336
+ i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_mat_button_4_Template_mat_button_click_0_listener() { i0.ɵɵrestoreView(_r75); const ctx_r74 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r74.emptySelect()); });
337
+ i0.ɵɵpipe(1, "translate");
338
+ i0.ɵɵelement(2, "mat-icon", 37);
339
+ i0.ɵɵelementEnd();
340
+ } if (rf & 2) {
341
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.filter.resetFilters"));
342
+ } }
343
+ const _c1 = function () { return { standalone: true }; };
344
+ function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template(rf, ctx) { if (rf & 1) {
345
+ const _r80 = i0.ɵɵgetCurrentView();
346
+ i0.ɵɵelementStart(0, "mat-checkbox", 42);
347
+ i0.ɵɵlistener("ngModelChange", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template_mat_checkbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r80); const ctx_r79 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r79.selectAllSelected = $event); })("change", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template_mat_checkbox_change_0_listener() { i0.ɵɵrestoreView(_r80); const ctx_r81 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r81.toggleAllSelection()); });
348
+ i0.ɵɵtext(1, "Tous ");
349
+ i0.ɵɵelementEnd();
350
+ } if (rf & 2) {
351
+ const ctx_r77 = i0.ɵɵnextContext(5);
352
+ i0.ɵɵproperty("ngModel", ctx_r77.selectAllSelected)("ngModelOptions", i0.ɵɵpureFunction0(2, _c1));
353
+ } }
354
+ function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_option_5_Template(rf, ctx) { if (rf & 1) {
355
+ const _r85 = i0.ɵɵgetCurrentView();
356
+ i0.ɵɵelementStart(0, "mat-option", 43);
357
+ i0.ɵɵlistener("onSelectionChange", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_option_5_Template_mat_option_onSelectionChange_0_listener($event) { i0.ɵɵrestoreView(_r85); const bundle_r69 = i0.ɵɵnextContext(2).$implicit; const ctx_r83 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r83.selectOptionClick($event.source.value, bundle_r69, $event)); });
358
+ i0.ɵɵtext(1);
359
+ i0.ɵɵelementEnd();
360
+ } if (rf & 2) {
361
+ const ogcSelect_r82 = ctx.$implicit;
362
+ const ctx_r78 = i0.ɵɵnextContext(5);
363
+ i0.ɵɵproperty("matTooltip", ctx_r78.getToolTip(ogcSelect_r82))("value", ogcSelect_r82);
364
+ i0.ɵɵadvance(1);
365
+ i0.ɵɵtextInterpolate1("", ogcSelect_r82.title, " ");
366
+ } }
367
+ function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_Template(rf, ctx) { if (rf & 1) {
368
+ i0.ɵɵelementStart(0, "div")(1, "mat-select", 38, 39)(3, "div", 19);
369
+ i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_checkbox_4_Template, 2, 3, "mat-checkbox", 40);
370
+ i0.ɵɵelementEnd();
371
+ i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_mat_option_5_Template, 2, 3, "mat-option", 41);
372
+ i0.ɵɵelementEnd()();
373
+ } if (rf & 2) {
374
+ const bundle_r69 = i0.ɵɵnextContext().$implicit;
375
+ i0.ɵɵadvance(1);
376
+ i0.ɵɵproperty("multiple", bundle_r69.multiple)("placeholder", bundle_r69.title);
377
+ i0.ɵɵadvance(3);
378
+ i0.ɵɵproperty("ngIf", bundle_r69.multiple);
379
+ i0.ɵɵadvance(1);
380
+ i0.ɵɵproperty("ngForOf", bundle_r69.selectors);
381
+ } }
382
+ function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_mat_option_1_Template(rf, ctx) { if (rf & 1) {
383
+ const _r91 = i0.ɵɵgetCurrentView();
384
+ i0.ɵɵelementStart(0, "mat-option", 43);
385
+ i0.ɵɵlistener("onSelectionChange", function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_mat_option_1_Template_mat_option_onSelectionChange_0_listener($event) { i0.ɵɵrestoreView(_r91); const bundle_r69 = i0.ɵɵnextContext(2).$implicit; const ctx_r89 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r89.selectOptionClick($event.source.value, bundle_r69)); });
386
+ i0.ɵɵtext(1);
387
+ i0.ɵɵelementEnd();
388
+ } if (rf & 2) {
389
+ const ogcSelect_r88 = ctx.$implicit;
390
+ const ctx_r87 = i0.ɵɵnextContext(5);
391
+ i0.ɵɵproperty("matTooltip", ctx_r87.getToolTip(ogcSelect_r88))("value", ogcSelect_r88);
392
+ i0.ɵɵadvance(1);
393
+ i0.ɵɵtextInterpolate1("", ogcSelect_r88.title, " ");
394
+ } }
395
+ function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_Template(rf, ctx) { if (rf & 1) {
396
+ i0.ɵɵelementStart(0, "mat-select", 44);
397
+ i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_mat_option_1_Template, 2, 3, "mat-option", 41);
398
+ i0.ɵɵelementEnd();
399
+ } if (rf & 2) {
400
+ const bundle_r69 = i0.ɵɵnextContext().$implicit;
401
+ i0.ɵɵproperty("placeholder", bundle_r69.title);
402
+ i0.ɵɵadvance(1);
403
+ i0.ɵɵproperty("ngForOf", bundle_r69.selectors);
404
+ } }
405
+ function OgcFilterSelectionComponent_div_1_div_4_ng_container_3_Template(rf, ctx) { if (rf & 1) {
406
+ i0.ɵɵelementContainerStart(0);
407
+ i0.ɵɵelementStart(1, "h4");
408
+ i0.ɵɵtext(2);
409
+ i0.ɵɵelementEnd();
410
+ i0.ɵɵelementStart(3, "div", 10);
411
+ i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_mat_button_4_Template, 3, 3, "mat-button", 33);
412
+ i0.ɵɵelementStart(5, "mat-form-field");
413
+ i0.ɵɵtemplate(6, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_div_6_Template, 6, 4, "div", 34);
414
+ i0.ɵɵtemplate(7, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_ng_template_7_Template, 2, 2, "ng-template", null, 35, i0.ɵɵtemplateRefExtractor);
415
+ i0.ɵɵelementEnd()();
416
+ i0.ɵɵelementContainerEnd();
417
+ } if (rf & 2) {
418
+ const bundle_r69 = ctx.$implicit;
419
+ const _r72 = i0.ɵɵreference(8);
420
+ i0.ɵɵadvance(2);
421
+ i0.ɵɵtextInterpolate(bundle_r69.title);
422
+ i0.ɵɵadvance(2);
423
+ i0.ɵɵproperty("ngIf", bundle_r69.unfiltered && !bundle_r69.multiple);
424
+ i0.ɵɵadvance(1);
425
+ i0.ɵɵstyleProp("width", bundle_r69.width ? bundle_r69.width : undefined, "%");
426
+ i0.ɵɵadvance(1);
427
+ i0.ɵɵproperty("ngIf", bundle_r69.multiple)("ngIfElse", _r72);
428
+ } }
429
+ function OgcFilterSelectionComponent_div_1_div_4_Template(rf, ctx) { if (rf & 1) {
430
+ i0.ɵɵelementStart(0, "div", 31);
431
+ i0.ɵɵelement(1, "mat-divider");
432
+ i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_4_div_2_Template, 5, 5, "div", 9);
433
+ i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_4_ng_container_3_Template, 9, 6, "ng-container", 1);
434
+ i0.ɵɵelementEnd();
435
+ } if (rf & 2) {
436
+ const ctx_r6 = i0.ɵɵnextContext(2);
437
+ i0.ɵɵadvance(2);
438
+ i0.ɵɵproperty("ngIf", ctx_r6.getSelectGroups().length > 1);
439
+ i0.ɵɵadvance(1);
440
+ i0.ɵɵproperty("ngForOf", ctx_r6.currentSelectGroup.computedSelectors);
441
+ } }
442
+ function OgcFilterSelectionComponent_div_1_div_5_div_2_mat_option_4_Template(rf, ctx) { if (rf & 1) {
443
+ i0.ɵɵelementStart(0, "mat-option", 13);
444
+ i0.ɵɵtext(1);
445
+ i0.ɵɵelementEnd();
446
+ } if (rf & 2) {
447
+ const autocompleteGroup_r96 = ctx.$implicit;
448
+ i0.ɵɵproperty("value", autocompleteGroup_r96);
449
+ i0.ɵɵadvance(1);
450
+ i0.ɵɵtextInterpolate1("", autocompleteGroup_r96.title, " ");
451
+ } }
452
+ function OgcFilterSelectionComponent_div_1_div_5_div_2_Template(rf, ctx) { if (rf & 1) {
453
+ const _r98 = i0.ɵɵgetCurrentView();
454
+ i0.ɵɵelementStart(0, "div", 10)(1, "mat-form-field")(2, "mat-select", 46);
455
+ i0.ɵɵlistener("valueChange", function OgcFilterSelectionComponent_div_1_div_5_div_2_Template_mat_select_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r98); const ctx_r97 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r97.currentAutocompleteGroup = $event); });
456
+ i0.ɵɵpipe(3, "translate");
457
+ i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_5_div_2_mat_option_4_Template, 2, 2, "mat-option", 12);
458
+ i0.ɵɵelementEnd()()();
459
+ } if (rf & 2) {
460
+ const ctx_r93 = i0.ɵɵnextContext(3);
461
+ i0.ɵɵadvance(2);
462
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(3, 3, "igo.geo.layer.legend.selectStyle"))("value", ctx_r93.currentAutocompleteGroup);
463
+ i0.ɵɵadvance(2);
464
+ i0.ɵɵproperty("ngForOf", ctx_r93.getAutocompleteGroups());
465
+ } }
466
+ function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_button_4_Template(rf, ctx) { if (rf & 1) {
467
+ const _r103 = i0.ɵɵgetCurrentView();
468
+ i0.ɵɵelementStart(0, "mat-button", 36);
469
+ i0.ɵɵlistener("click", function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_button_4_Template_mat_button_click_0_listener() { i0.ɵɵrestoreView(_r103); const ctx_r102 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r102.emptyAutocomplete()); });
470
+ i0.ɵɵpipe(1, "translate");
471
+ i0.ɵɵelement(2, "mat-icon", 37);
472
+ i0.ɵɵelementEnd();
473
+ } if (rf & 2) {
474
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 1, "igo.geo.filter.resetFilters"));
475
+ } }
476
+ function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_mat_option_6_Template(rf, ctx) { if (rf & 1) {
477
+ i0.ɵɵelementStart(0, "mat-option", 13);
478
+ i0.ɵɵtext(1);
479
+ i0.ɵɵelementEnd();
480
+ } if (rf & 2) {
481
+ const ogcAutocomplete_r108 = ctx.$implicit;
482
+ i0.ɵɵproperty("value", ogcAutocomplete_r108);
483
+ i0.ɵɵadvance(1);
484
+ i0.ɵɵtextInterpolate1(" ", ogcAutocomplete_r108.value, " ");
485
+ } }
486
+ function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_Template(rf, ctx) { if (rf & 1) {
487
+ const _r110 = i0.ɵɵgetCurrentView();
488
+ i0.ɵɵelementStart(0, "mat-form-field");
489
+ i0.ɵɵelement(1, "input", 48, 49);
490
+ i0.ɵɵelementStart(3, "mat-autocomplete", 50, 51);
491
+ i0.ɵɵlistener("optionSelected", function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_Template_mat_autocomplete_optionSelected_3_listener($event) { i0.ɵɵrestoreView(_r110); const ctx_r109 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r109.autocompleteOptionClick($event.option.value)); });
492
+ i0.ɵɵtemplate(6, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_mat_option_6_Template, 2, 2, "mat-option", 12);
493
+ i0.ɵɵpipe(7, "async");
494
+ i0.ɵɵelementEnd()();
495
+ } if (rf & 2) {
496
+ const _r105 = i0.ɵɵreference(4);
497
+ const bundle_r99 = i0.ɵɵnextContext().$implicit;
498
+ const ctx_r101 = i0.ɵɵnextContext(3);
499
+ i0.ɵɵstyleProp("width", bundle_r99.width ? bundle_r99.width : undefined, "%");
500
+ i0.ɵɵadvance(1);
501
+ i0.ɵɵproperty("matAutocomplete", _r105)("placeholder", bundle_r99.title);
502
+ i0.ɵɵadvance(2);
503
+ i0.ɵɵproperty("displayWith", ctx_r101.displayFn);
504
+ i0.ɵɵadvance(3);
505
+ i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(7, 6, ctx_r101.filteredOgcAutocomplete[bundle_r99.id]));
506
+ } }
507
+ function OgcFilterSelectionComponent_div_1_div_5_ng_container_3_Template(rf, ctx) { if (rf & 1) {
508
+ i0.ɵɵelementContainerStart(0);
509
+ i0.ɵɵelementStart(1, "h4");
510
+ i0.ɵɵtext(2);
511
+ i0.ɵɵelementEnd();
512
+ i0.ɵɵelementStart(3, "div", 10);
513
+ i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_button_4_Template, 3, 3, "mat-button", 33);
514
+ i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_mat_form_field_5_Template, 8, 8, "mat-form-field", 47);
515
+ i0.ɵɵelementEnd();
516
+ i0.ɵɵelementContainerEnd();
517
+ } if (rf & 2) {
518
+ const bundle_r99 = ctx.$implicit;
519
+ const ctx_r94 = i0.ɵɵnextContext(3);
520
+ i0.ɵɵadvance(2);
521
+ i0.ɵɵtextInterpolate(bundle_r99.title);
522
+ i0.ɵɵadvance(2);
523
+ i0.ɵɵproperty("ngIf", bundle_r99.unfiltered);
524
+ i0.ɵɵadvance(1);
525
+ i0.ɵɵproperty("ngIf", ctx_r94.filteredOgcAutocomplete[bundle_r99.id]);
526
+ } }
527
+ function OgcFilterSelectionComponent_div_1_div_5_Template(rf, ctx) { if (rf & 1) {
528
+ i0.ɵɵelementStart(0, "div", 45);
529
+ i0.ɵɵelement(1, "mat-divider");
530
+ i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_5_div_2_Template, 5, 5, "div", 9);
531
+ i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_5_ng_container_3_Template, 6, 3, "ng-container", 1);
532
+ i0.ɵɵelementEnd();
533
+ } if (rf & 2) {
534
+ const ctx_r7 = i0.ɵɵnextContext(2);
535
+ i0.ɵɵadvance(2);
536
+ i0.ɵɵproperty("ngIf", ctx_r7.getAutocompleteGroups().length > 1);
537
+ i0.ɵɵadvance(1);
538
+ i0.ɵɵproperty("ngForOf", ctx_r7.currentAutocompleteGroup.computedSelectors);
539
+ } }
540
+ function OgcFilterSelectionComponent_div_1_Template(rf, ctx) { if (rf & 1) {
541
+ i0.ɵɵelementStart(0, "div");
542
+ i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_div_1_Template, 4, 2, "div", 3);
543
+ i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_1_div_2_Template, 4, 2, "div", 4);
544
+ i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_1_div_3_Template, 4, 2, "div", 5);
545
+ i0.ɵɵtemplate(4, OgcFilterSelectionComponent_div_1_div_4_Template, 4, 2, "div", 6);
546
+ i0.ɵɵtemplate(5, OgcFilterSelectionComponent_div_1_div_5_Template, 4, 2, "div", 7);
547
+ i0.ɵɵelementEnd();
548
+ } if (rf & 2) {
549
+ const selector_r2 = ctx.$implicit;
550
+ i0.ɵɵadvance(1);
551
+ i0.ɵɵproperty("ngIf", selector_r2.selectorType === "pushButton");
552
+ i0.ɵɵadvance(1);
553
+ i0.ɵɵproperty("ngIf", selector_r2.selectorType === "checkbox");
554
+ i0.ɵɵadvance(1);
555
+ i0.ɵɵproperty("ngIf", selector_r2.selectorType === "radioButton");
556
+ i0.ɵɵadvance(1);
557
+ i0.ɵɵproperty("ngIf", selector_r2.selectorType === "select");
558
+ i0.ɵɵadvance(1);
559
+ i0.ɵɵproperty("ngIf", selector_r2.selectorType === "autocomplete");
560
+ } }
561
+ function OgcFilterSelectionComponent_div_2_h4_2_Template(rf, ctx) { if (rf & 1) {
562
+ i0.ɵɵelementStart(0, "h4");
563
+ i0.ɵɵtext(1);
564
+ i0.ɵɵpipe(2, "translate");
565
+ i0.ɵɵelementEnd();
566
+ } if (rf & 2) {
567
+ i0.ɵɵadvance(1);
568
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "igo.geo.filter.reportingDate"));
569
+ } }
570
+ function OgcFilterSelectionComponent_div_2_h4_3_Template(rf, ctx) { if (rf & 1) {
571
+ i0.ɵɵelementStart(0, "h4");
572
+ i0.ɵɵtext(1);
573
+ i0.ɵɵelementEnd();
574
+ } if (rf & 2) {
575
+ const ctx_r113 = i0.ɵɵnextContext(2);
576
+ i0.ɵɵadvance(1);
577
+ i0.ɵɵtextInterpolate(ctx_r113.currentFilter.title);
578
+ } }
579
+ function OgcFilterSelectionComponent_div_2_Template(rf, ctx) { if (rf & 1) {
580
+ const _r115 = i0.ɵɵgetCurrentView();
581
+ i0.ɵɵelementStart(0, "div");
582
+ i0.ɵɵelement(1, "mat-divider");
583
+ i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_2_h4_2_Template, 3, 3, "h4", 2);
584
+ i0.ɵɵtemplate(3, OgcFilterSelectionComponent_div_2_h4_3_Template, 2, 1, "h4", 2);
585
+ i0.ɵɵelementStart(4, "igo-ogc-filter-time", 52);
586
+ i0.ɵɵlistener("datasourceChange", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_datasourceChange_4_listener($event) { i0.ɵɵrestoreView(_r115); const ctx_r114 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r114.datasource = $event); })("currentFilterChange", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_currentFilterChange_4_listener($event) { i0.ɵɵrestoreView(_r115); const ctx_r116 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r116.currentFilter = $event); })("changeProperty", function OgcFilterSelectionComponent_div_2_Template_igo_ogc_filter_time_changeProperty_4_listener($event) { i0.ɵɵrestoreView(_r115); const ctx_r117 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r117.changeProperty($event.value, $event.pos)); });
587
+ i0.ɵɵelementEnd()();
588
+ } if (rf & 2) {
589
+ const ctx_r1 = i0.ɵɵnextContext();
590
+ i0.ɵɵadvance(2);
591
+ i0.ɵɵproperty("ngIf", !ctx_r1.currentFilter.title);
592
+ i0.ɵɵadvance(1);
593
+ i0.ɵɵproperty("ngIf", ctx_r1.currentFilter.title);
594
+ i0.ɵɵadvance(1);
595
+ i0.ɵɵproperty("datasource", ctx_r1.datasource)("currentFilter", ctx_r1.currentFilter);
596
+ } }
597
+ export class OgcFilterSelectionComponent {
598
+ constructor(ogcFilterService, formBuilder, domService, configService, cdRef) {
599
+ this.ogcFilterService = ogcFilterService;
600
+ this.formBuilder = formBuilder;
601
+ this.domService = domService;
602
+ this.configService = configService;
603
+ this.cdRef = cdRef;
604
+ this.checkboxesIndex = 5;
605
+ this.radioButtonsIndex = 5;
606
+ this.baseIndex = 5;
607
+ this.ogcFilterOperator = OgcFilterOperator;
608
+ this.color = 'primary';
609
+ this.selectAllSelected = false;
610
+ this.selectEnabled$ = new BehaviorSubject(undefined);
611
+ this.selectEnableds$ = new BehaviorSubject([]);
612
+ this.autocompleteEnabled$ = new BehaviorSubject(undefined);
613
+ this.filteredOgcAutocomplete = {};
614
+ this.ogcFilterWriter = new OgcFilterWriter();
615
+ this.buildForm();
616
+ }
617
+ get currentFilter() {
618
+ return this._currentFilter;
619
+ }
620
+ set currentFilter(value) {
621
+ this._currentFilter = value;
622
+ if (this._currentFilter?.sliderOptions) {
623
+ this._currentFilter.sliderOptions.enabled = false; // remove slider toggle (animation temporelle)
624
+ }
625
+ }
626
+ get ogcFiltersSelectors() {
627
+ const ogcSelector = [];
628
+ if (this.datasource?.options?.ogcFilters?.pushButtons) {
629
+ ogcSelector.push(this.datasource?.options?.ogcFilters?.pushButtons);
630
+ }
631
+ if (this.datasource?.options?.ogcFilters?.checkboxes) {
632
+ ogcSelector.push(this.datasource?.options?.ogcFilters?.checkboxes);
633
+ }
634
+ if (this.datasource?.options?.ogcFilters?.radioButtons) {
635
+ ogcSelector.push(this.datasource?.options?.ogcFilters?.radioButtons);
636
+ }
637
+ if (this.datasource?.options?.ogcFilters?.select) {
638
+ ogcSelector.push(this.datasource?.options?.ogcFilters?.select);
639
+ }
640
+ if (this.datasource?.options?.ogcFilters?.autocomplete) {
641
+ ogcSelector.push(this.datasource?.options?.ogcFilters?.autocomplete);
642
+ }
643
+ ogcSelector.sort((a, b) => {
644
+ if (a.order < b.order) {
645
+ return -1;
646
+ }
647
+ if (a.order > b.order) {
648
+ return 1;
649
+ }
650
+ return 0;
651
+ });
652
+ return ogcSelector;
653
+ }
654
+ get currentPushButtonsGroup() {
655
+ return this.form.get('pushButtonsGroup').value;
656
+ }
657
+ set currentPushButtonsGroup(value) {
658
+ this.form.patchValue({ pushButtonsGroup: value });
659
+ }
660
+ get currentCheckboxesGroup() {
661
+ return this.form.get('checkboxesGroup').value;
662
+ }
663
+ set currentCheckboxesGroup(value) {
664
+ this.form.patchValue({ checkboxesGroup: value });
665
+ }
666
+ get currentRadioButtonsGroup() {
667
+ return this.form.get('radioButtonsGroup').value;
668
+ }
669
+ set currentRadioButtonsGroup(value) {
670
+ this.form.patchValue({ radioButtonsGroup: value });
671
+ }
672
+ get currentSelectGroup() {
673
+ return this.form.get('selectGroup').value;
674
+ }
675
+ set currentSelectGroup(value) {
676
+ this.form.patchValue({ selectGroup: value });
677
+ this.cdRef.detectChanges();
678
+ }
679
+ get currentAutocompleteGroup() {
680
+ return this.form.get('autocompleteGroup').value;
681
+ }
682
+ set currentAutocompleteGroup(value) {
683
+ this.form.patchValue({ autocompleteGroup: value });
684
+ this.cdRef.detectChanges();
685
+ }
686
+ get selectEnabled() {
687
+ return this.selectEnabled$.value;
688
+ }
689
+ set selectEnabled(value) {
690
+ this.selectEnabled$.next(value);
691
+ clearTimeout(this.applyFiltersTimeout);
692
+ this.currentSelectGroup.computedSelectors.forEach(compSelect => {
693
+ compSelect.selectors?.forEach(selector => {
694
+ value === selector ? selector.enabled = true : selector.enabled = false;
695
+ });
696
+ });
697
+ this.applyFiltersTimeout = setTimeout(() => {
698
+ this.applyFilters();
699
+ }, 750);
700
+ }
701
+ get selectEnableds() {
702
+ return this.selectEnableds$.value;
703
+ }
704
+ set selectEnableds(value) {
705
+ this.selectEnableds$.next(value);
706
+ clearTimeout(this.applyFiltersTimeout);
707
+ this.currentSelectGroup.computedSelectors.forEach(compSelect => {
708
+ compSelect.selectors?.forEach(selector => {
709
+ value.includes(selector) ? selector.enabled = true : selector.enabled = false;
710
+ });
711
+ });
712
+ this.applyFiltersTimeout = setTimeout(() => {
713
+ this.applyFilters();
714
+ }, 750);
715
+ }
716
+ get autocompleteEnabled() {
717
+ return this.autocompleteEnabled$.value;
718
+ }
719
+ set autocompleteEnabled(value) {
720
+ this.autocompleteEnabled$.next(value);
721
+ clearTimeout(this.applyFiltersTimeout);
722
+ this.currentAutocompleteGroup.computedSelectors.forEach(compSelect => {
723
+ compSelect.selectors?.forEach(selector => {
724
+ value === selector.title ? selector.enabled = true : selector.enabled = false;
725
+ });
726
+ });
727
+ this.applyFiltersTimeout = setTimeout(() => {
728
+ this.applyFilters();
729
+ }, 750);
730
+ }
731
+ buildForm() {
732
+ this.form = this.formBuilder.group({
733
+ pushButtons: ['', [Validators.required]],
734
+ radioButtons: ['', [Validators.required]],
735
+ pushButtonsGroup: ['', [Validators.required]],
736
+ checkboxesGroup: ['', [Validators.required]],
737
+ radioButtonsGroup: ['', [Validators.required]],
738
+ selectGroup: ['', [Validators.required]],
739
+ select: ['', [Validators.required]],
740
+ selectMulti: ['', [Validators.required]],
741
+ autocompleteGroup: ['', [Validators.required]],
742
+ autocomplete: ['', [Validators.required]]
743
+ });
744
+ }
745
+ getPushButtonsGroups() {
746
+ if (this.datasource?.options?.ogcFilters?.pushButtons) {
747
+ return this.datasource.options.ogcFilters.pushButtons.groups;
748
+ }
749
+ }
750
+ getCheckboxesGroups() {
751
+ if (this.datasource?.options?.ogcFilters?.checkboxes) {
752
+ return this.datasource.options.ogcFilters.checkboxes.groups;
753
+ }
754
+ }
755
+ getRadioButtonsGroups() {
756
+ if (this.datasource?.options?.ogcFilters?.radioButtons) {
757
+ return this.datasource.options.ogcFilters.radioButtons.groups;
758
+ }
759
+ }
760
+ getSelectGroups() {
761
+ if (this.datasource?.options?.ogcFilters?.select) {
762
+ return this.datasource.options.ogcFilters.select.groups;
763
+ }
764
+ }
765
+ getAutocompleteGroups() {
766
+ if (this.datasource?.options?.ogcFilters?.autocomplete) {
767
+ return this.datasource.options.ogcFilters.autocomplete.groups;
768
+ }
769
+ }
770
+ async ngOnInit() {
771
+ if (this.datasource.options.ogcFilters) {
772
+ if (this.datasource.options.ogcFilters.pushButtons) {
773
+ this.currentPushButtonsGroup =
774
+ this.datasource.options.ogcFilters.pushButtons.groups.find(group => group.enabled) ||
775
+ this.datasource.options.ogcFilters.pushButtons.groups[0];
776
+ }
777
+ if (this.datasource.options.ogcFilters.checkboxes) {
778
+ this.currentCheckboxesGroup =
779
+ this.datasource.options.ogcFilters.checkboxes.groups.find(group => group.enabled) ||
780
+ this.datasource.options.ogcFilters.checkboxes.groups[0];
781
+ }
782
+ if (this.datasource.options.ogcFilters.radioButtons) {
783
+ this.currentRadioButtonsGroup =
784
+ this.datasource.options.ogcFilters.radioButtons.groups.find(group => group.enabled) ||
785
+ this.datasource.options.ogcFilters.radioButtons.groups[0];
786
+ }
787
+ if (this.datasource.options.ogcFilters.select) {
788
+ this.currentSelectGroup =
789
+ this.datasource.options.ogcFilters.select.groups.find(group => group.enabled) ||
790
+ this.datasource.options.ogcFilters.select.groups[0];
791
+ this.getSelectEnabled();
792
+ await this.getSelectDomValues();
793
+ }
794
+ if (this.datasource.options.ogcFilters.autocomplete) {
795
+ this.currentAutocompleteGroup =
796
+ this.datasource.options.ogcFilters.autocomplete.groups.find(group => group.enabled) ||
797
+ this.datasource.options.ogcFilters.autocomplete.groups[0];
798
+ this.getAutocompleteEnabled();
799
+ await this.getAutocompleteDomValues();
800
+ }
801
+ this.applyFilters();
802
+ }
803
+ this.form
804
+ .get('pushButtonsGroup')
805
+ .valueChanges
806
+ .pipe(debounceTime(750))
807
+ .subscribe(() => {
808
+ this.onPushButtonsChangeGroup();
809
+ this.applyFilters();
810
+ });
811
+ this.form
812
+ .get('checkboxesGroup')
813
+ .valueChanges
814
+ .pipe(debounceTime(750))
815
+ .subscribe(() => {
816
+ this.onCheckboxesChangeGroup();
817
+ this.applyFilters();
818
+ });
819
+ this.form
820
+ .get('radioButtonsGroup')
821
+ .valueChanges
822
+ .pipe(debounceTime(750))
823
+ .subscribe(() => {
824
+ this.onRadioButtonsChangeGroup();
825
+ this.applyFilters();
826
+ });
827
+ this.form
828
+ .get('selectGroup')
829
+ .valueChanges
830
+ .pipe(debounceTime(750))
831
+ .subscribe(() => {
832
+ this.onSelectChangeGroup();
833
+ this.applyFilters();
834
+ });
835
+ this.form
836
+ .get('autocompleteGroup')
837
+ .valueChanges
838
+ .pipe(debounceTime(750))
839
+ .subscribe(() => {
840
+ this.onAutocompleteChangeGroup();
841
+ this.applyFilters();
842
+ });
843
+ this.form
844
+ .get('pushButtons')
845
+ .valueChanges
846
+ .pipe(debounceTime(750))
847
+ .subscribe(() => {
848
+ this.applyFilters();
849
+ });
850
+ this.form
851
+ .get('radioButtons')
852
+ .valueChanges
853
+ .pipe(debounceTime(750))
854
+ .subscribe(() => {
855
+ this.applyFilters();
856
+ });
857
+ }
858
+ getSelectEnabled() {
859
+ const enableds = [];
860
+ let enabled;
861
+ this.currentSelectGroup.computedSelectors.forEach(compSelect => {
862
+ if (compSelect.multiple) {
863
+ compSelect.selectors?.forEach(selector => {
864
+ if (selector.enabled) {
865
+ enableds.push(selector);
866
+ }
867
+ });
868
+ this.selectEnableds = enableds;
869
+ this.form.controls['selectMulti'].setValue(enableds);
870
+ }
871
+ else {
872
+ compSelect.selectors?.forEach(selector => {
873
+ if (selector.enabled) {
874
+ enabled = selector;
875
+ }
876
+ });
877
+ this.form.controls['select'].reset(enabled);
878
+ this.selectEnabled$.subscribe((value) => {
879
+ if (this.form.controls['select'].value !== value) {
880
+ this.form.controls['select'].setValue(value);
881
+ }
882
+ });
883
+ this.selectEnabled = enabled;
884
+ }
885
+ });
886
+ }
887
+ getAutocompleteEnabled() {
888
+ let enabled;
889
+ this.currentAutocompleteGroup.computedSelectors.forEach(compSelect => {
890
+ compSelect.selectors?.forEach(selector => {
891
+ if (selector.enabled) {
892
+ const dom = {
893
+ id: selector.filters.expression,
894
+ value: selector.title
895
+ };
896
+ enabled = selector.title;
897
+ this.form.controls['autocomplete'].setValue(dom);
898
+ }
899
+ });
900
+ this.autocompleteEnabled = enabled;
901
+ });
902
+ }
903
+ getToolTip(selector) {
904
+ let toolTip;
905
+ if (selector.tooltip) {
906
+ if (Array.isArray(selector.tooltip)) {
907
+ toolTip = selector.tooltip.join('\n');
908
+ }
909
+ else {
910
+ toolTip = selector.tooltip;
911
+ }
912
+ }
913
+ return toolTip || '';
914
+ }
915
+ async getSelectDomValues() {
916
+ for (const bundle of this.datasource.options.ogcFilters.select.bundles) {
917
+ if (bundle.domSelectors) {
918
+ let domValues;
919
+ for (const domSelector of bundle.domSelectors) {
920
+ let filterDOM;
921
+ for (const domOptions of this.configService.getConfig('dom')) {
922
+ if (domSelector.id === domOptions.id || domSelector.name === domOptions.name) {
923
+ filterDOM = {
924
+ id: domOptions.id,
925
+ url: domOptions.url,
926
+ name: domOptions.name,
927
+ values: domOptions.values
928
+ };
929
+ }
930
+ }
931
+ filterDOM.url ? domValues = await this.domService.getDom(filterDOM) :
932
+ domValues = filterDOM.values;
933
+ if (domValues) {
934
+ let newBundle = bundle;
935
+ newBundle.selectors = [];
936
+ let selector;
937
+ for (const value of domValues) {
938
+ if (bundle.multiple) {
939
+ let enabled;
940
+ this.selectEnableds?.find(sel => sel.title === value.value) ? enabled = true : enabled = false;
941
+ selector = {
942
+ title: value.value,
943
+ enabled,
944
+ filters: {
945
+ operator: domSelector.operator,
946
+ propertyName: domSelector.propertyName,
947
+ expression: value.id,
948
+ }
949
+ };
950
+ }
951
+ else {
952
+ selector = {
953
+ title: value.value,
954
+ enabled: this.selectEnabled?.title === value.value ?
955
+ true : false,
956
+ filters: {
957
+ operator: domSelector.operator,
958
+ propertyName: domSelector.propertyName,
959
+ expression: value.id,
960
+ }
961
+ };
962
+ }
963
+ newBundle.selectors.push(selector);
964
+ }
965
+ this.getSelectGroups().find(group => group.ids.includes(newBundle.id)).computedSelectors
966
+ .find(comp => comp.title === newBundle.title).selectors = newBundle.selectors;
967
+ }
968
+ }
969
+ this.getSelectEnabled();
970
+ }
971
+ }
972
+ }
973
+ async getAutocompleteDomValues() {
974
+ for (const bundle of this.datasource.options.ogcFilters.autocomplete.bundles) {
975
+ if (bundle.domSelectors) {
976
+ let domValues;
977
+ for (const domSelector of bundle.domSelectors) {
978
+ let filterDOM;
979
+ for (const domOptions of this.configService.getConfig('dom')) {
980
+ if (domSelector.id === domOptions.id || domSelector.name === domOptions.name) {
981
+ filterDOM = {
982
+ id: domOptions.id,
983
+ url: domOptions.url,
984
+ name: domOptions.name,
985
+ values: domOptions.values
986
+ };
987
+ }
988
+ }
989
+ filterDOM.url ? domValues = await this.domService.getDom(filterDOM) :
990
+ domValues = filterDOM.values;
991
+ if (domValues) {
992
+ let newBundle = bundle;
993
+ newBundle.selectors = [];
994
+ let selector;
995
+ for (const value of domValues) {
996
+ selector = {
997
+ title: value.value,
998
+ enabled: this.autocompleteEnabled && this.autocompleteEnabled === value.value ?
999
+ true : false,
1000
+ filters: {
1001
+ operator: domSelector.operator,
1002
+ propertyName: domSelector.propertyName,
1003
+ expression: value.id,
1004
+ }
1005
+ };
1006
+ newBundle.selectors.push(selector);
1007
+ }
1008
+ this.getAutocompleteGroups().find(group => group.ids.includes(newBundle.id)).computedSelectors
1009
+ .find(comp => comp.title === newBundle.title).selectors = newBundle.selectors;
1010
+ }
1011
+ }
1012
+ this.filteredOgcAutocomplete[bundle.id] = new Observable();
1013
+ this.cdRef.detectChanges();
1014
+ this.filteredOgcAutocomplete[bundle.id] = this.form.controls['autocomplete'].valueChanges.pipe(map(value => {
1015
+ if (value.length) {
1016
+ return domValues?.filter((option) => {
1017
+ const filterNormalized = value ? value.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '') : '';
1018
+ const featureNameNormalized = option.value.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, '');
1019
+ return featureNameNormalized.includes(filterNormalized);
1020
+ });
1021
+ }
1022
+ }));
1023
+ }
1024
+ }
1025
+ }
1026
+ // getButtonStyle(pb: OgcPushButton): {} {
1027
+ // let styles;
1028
+ // if (pb.color) {
1029
+ // styles = {
1030
+ // 'background-color': pb.enabled ? `rgba(${pb.color})` : `rgba(255,255,255,0)`
1031
+ // };
1032
+ // } else {
1033
+ // styles = {
1034
+ // 'background-color': pb.enabled ? 'accent': `rgba(255,255,255,0)`,
1035
+ // 'color': pb.enabled ? `rgba(0,0,0,0.9)` : `rgba(33,33,33,0.38)`
1036
+ // }
1037
+ // }
1038
+ // return styles;
1039
+ // }
1040
+ getButtonColor(pushButton) {
1041
+ let styles;
1042
+ if (pushButton.color && pushButton.enabled) {
1043
+ styles = {
1044
+ 'background-color': `rgba(${pushButton.color})`
1045
+ };
1046
+ }
1047
+ return styles;
1048
+ }
1049
+ bundleIsVertical(bundle) {
1050
+ return bundle.vertical ? bundle.vertical : false;
1051
+ }
1052
+ onPushButtonsChangeGroup() {
1053
+ this.getPushButtonsGroups().map(group => group.enabled = false);
1054
+ this.getPushButtonsGroups().find(group => group === this.currentPushButtonsGroup).enabled = true;
1055
+ }
1056
+ onCheckboxesChangeGroup() {
1057
+ this.getCheckboxesGroups().map(group => group.enabled = false);
1058
+ this.getCheckboxesGroups().find(group => group === this.currentCheckboxesGroup).enabled = true;
1059
+ }
1060
+ onRadioButtonsChangeGroup() {
1061
+ this.getRadioButtonsGroups().map(group => group.enabled = false);
1062
+ this.getRadioButtonsGroups().find(group => group === this.currentRadioButtonsGroup).enabled = true;
1063
+ }
1064
+ onSelectChangeGroup() {
1065
+ this.getSelectGroups().map(group => group.enabled = false);
1066
+ this.getSelectGroups().find(group => group === this.currentSelectGroup).enabled = true;
1067
+ }
1068
+ onAutocompleteChangeGroup() {
1069
+ this.getAutocompleteGroups().map(group => group.enabled = false);
1070
+ this.getAutocompleteGroups().find(group => group === this.currentAutocompleteGroup).enabled = true;
1071
+ }
1072
+ onSelectionChange(currentOgcSelection, selectorType) {
1073
+ clearTimeout(this.applyFiltersTimeout);
1074
+ if (selectorType === 'radioButton') {
1075
+ this.emptyRadioButtons();
1076
+ }
1077
+ if (currentOgcSelection) {
1078
+ currentOgcSelection.enabled = !currentOgcSelection.enabled;
1079
+ }
1080
+ this.applyFiltersTimeout = setTimeout(() => {
1081
+ this.applyFilters();
1082
+ }, 750);
1083
+ }
1084
+ emptyRadioButtons() {
1085
+ this.currentRadioButtonsGroup.computedSelectors.forEach(compSelect => {
1086
+ compSelect.selectors.map(selector => selector.enabled = false);
1087
+ this.applyFiltersTimeout = setTimeout(() => {
1088
+ this.applyFilters();
1089
+ }, 750);
1090
+ });
1091
+ }
1092
+ emptySelect() {
1093
+ this.selectEnabled = undefined;
1094
+ }
1095
+ emptyAutocomplete() {
1096
+ this.autocompleteEnabled = undefined;
1097
+ this.form.controls['autocomplete'].setValue('');
1098
+ this.form.controls['autocomplete'].markAsUntouched();
1099
+ }
1100
+ toggleAllSelection() {
1101
+ if (this.selectAllSelected) {
1102
+ const enableds = [];
1103
+ this.currentSelectGroup.computedSelectors.forEach(compSelect => {
1104
+ compSelect.selectors?.forEach(selector => {
1105
+ enableds.push(selector);
1106
+ });
1107
+ });
1108
+ this.sel.options.forEach((item) => item.select());
1109
+ this.selectEnableds = enableds;
1110
+ }
1111
+ else {
1112
+ this.sel.options.forEach((item) => item.deselect());
1113
+ this.selectEnableds = [];
1114
+ }
1115
+ }
1116
+ selectOptionClick(value, bundle, event) {
1117
+ if (bundle.multiple) {
1118
+ const enableds = this.selectEnableds;
1119
+ let newStatus = true;
1120
+ this.sel.options.forEach((item) => {
1121
+ if (!item.selected) {
1122
+ newStatus = false;
1123
+ }
1124
+ });
1125
+ this.selectAllSelected = newStatus;
1126
+ if (event.isUserInput) {
1127
+ if (enableds.length) {
1128
+ for (const enabled of enableds) {
1129
+ if (enabled.title === value.title) {
1130
+ if (enabled.enabled && value.enabled) {
1131
+ enableds.splice(enableds.indexOf(enabled), 1);
1132
+ this.selectEnableds = enableds;
1133
+ break;
1134
+ }
1135
+ }
1136
+ else if (enableds.indexOf(enabled) === enableds.length - 1) {
1137
+ enableds.push(value);
1138
+ this.selectEnableds = enableds;
1139
+ break;
1140
+ }
1141
+ }
1142
+ }
1143
+ else {
1144
+ enableds.push(value);
1145
+ this.selectEnableds = enableds;
1146
+ }
1147
+ }
1148
+ }
1149
+ else {
1150
+ this.selectEnabled = value;
1151
+ }
1152
+ }
1153
+ autocompleteOptionClick(value) {
1154
+ this.autocompleteEnabled = value.value;
1155
+ }
1156
+ displayFn(dom) {
1157
+ return dom ? dom.value : undefined;
1158
+ }
1159
+ applyFilters() {
1160
+ let filterQueryString = '';
1161
+ const conditions = [];
1162
+ const currentGroups = [this.currentPushButtonsGroup, this.currentCheckboxesGroup,
1163
+ this.currentRadioButtonsGroup, this.currentSelectGroup, this.currentAutocompleteGroup];
1164
+ for (const currentGroup of currentGroups) {
1165
+ if (currentGroup.computedSelectors) {
1166
+ currentGroup.computedSelectors.map(selectorBundle => {
1167
+ const bundleCondition = [];
1168
+ selectorBundle.selectors?.filter(ogcSelector => ogcSelector.enabled === true)
1169
+ .forEach(enabledSelector => bundleCondition.push(enabledSelector.filters));
1170
+ if (bundleCondition.length >= 1) {
1171
+ if (bundleCondition.length === 1) {
1172
+ conditions.push(bundleCondition[0]);
1173
+ }
1174
+ else {
1175
+ conditions.push({ logical: selectorBundle.logical, filters: bundleCondition });
1176
+ }
1177
+ }
1178
+ });
1179
+ }
1180
+ }
1181
+ if (this.isTemporalOperator() && this._currentFilter.active) {
1182
+ conditions.push(this.datasource.options.ogcFilters.interfaceOgcFilters[0]);
1183
+ }
1184
+ if (conditions.length >= 1) {
1185
+ filterQueryString = this.ogcFilterWriter
1186
+ .buildFilter(conditions.length === 1 ?
1187
+ conditions[0] : { logical: 'And', filters: conditions });
1188
+ }
1189
+ if (this.datasource.options.type === 'wms') {
1190
+ this.ogcFilterService.filterByOgc(this.datasource, filterQueryString);
1191
+ }
1192
+ if (this.datasource.options.type === 'wfs') {
1193
+ // TODO: Check how to prevent wfs to refresh when filter icon is pushed...
1194
+ this.datasource.ol.refresh();
1195
+ }
1196
+ this.datasource.setOgcFilters(this.datasource.options.ogcFilters, true);
1197
+ }
1198
+ isMoreResults(bundle, type) {
1199
+ let selectorsLength = 0;
1200
+ for (const selectors of bundle.selectors) {
1201
+ selectorsLength++;
1202
+ }
1203
+ const index = type === 'radio' ? this.radioButtonsIndex : this.checkboxesIndex;
1204
+ return selectorsLength > index;
1205
+ }
1206
+ displayMoreResults(type) {
1207
+ type === 'radio' ? this.radioButtonsIndex += 5 : this.checkboxesIndex += 5;
1208
+ return;
1209
+ }
1210
+ isLessResults(bundle, type) {
1211
+ let selectorsLength = 0;
1212
+ for (const selectors of bundle.selectors) {
1213
+ selectorsLength++;
1214
+ }
1215
+ const index = type === 'radio' ? this.radioButtonsIndex : this.checkboxesIndex;
1216
+ return this.baseIndex !== index && selectorsLength > this.baseIndex;
1217
+ }
1218
+ displayLessResults(type) {
1219
+ type === 'radio' ? this.radioButtonsIndex = this.baseIndex : this.checkboxesIndex = this.baseIndex;
1220
+ return;
1221
+ }
1222
+ isTemporalOperator() {
1223
+ return (this.currentFilter?.operator?.toLowerCase() ===
1224
+ this.ogcFilterOperator.During.toLowerCase());
1225
+ }
1226
+ changeProperty(value, pos, refreshFilter = true) {
1227
+ const detectedProperty = this.detectProperty(pos);
1228
+ if (detectedProperty) {
1229
+ this.datasource.options.ogcFilters.interfaceOgcFilters.find(filter => filter.filterid === this.currentFilter.filterid)[detectedProperty] = value;
1230
+ if (refreshFilter) {
1231
+ this.applyFilters();
1232
+ }
1233
+ }
1234
+ }
1235
+ detectProperty(pos) {
1236
+ switch (this.currentFilter.operator) {
1237
+ case OgcFilterOperator.PropertyIsNotEqualTo:
1238
+ case OgcFilterOperator.PropertyIsEqualTo:
1239
+ case OgcFilterOperator.PropertyIsGreaterThan:
1240
+ case OgcFilterOperator.PropertyIsGreaterThanOrEqualTo:
1241
+ case OgcFilterOperator.PropertyIsLessThan:
1242
+ case OgcFilterOperator.PropertyIsLessThanOrEqualTo:
1243
+ return 'expression';
1244
+ case OgcFilterOperator.PropertyIsLike:
1245
+ return 'pattern';
1246
+ case OgcFilterOperator.PropertyIsBetween:
1247
+ return pos && pos === 1
1248
+ ? 'lowerBoundary'
1249
+ : pos && pos === 2
1250
+ ? 'upperBoundary'
1251
+ : undefined;
1252
+ case OgcFilterOperator.During:
1253
+ return pos && pos === 1
1254
+ ? 'begin'
1255
+ : pos && pos === 2
1256
+ ? 'end'
1257
+ : undefined;
1258
+ default:
1259
+ return;
1260
+ }
1261
+ }
1262
+ }
1263
+ OgcFilterSelectionComponent.ɵfac = function OgcFilterSelectionComponent_Factory(t) { return new (t || OgcFilterSelectionComponent)(i0.ɵɵdirectiveInject(i1.OGCFilterService), i0.ɵɵdirectiveInject(i2.UntypedFormBuilder), i0.ɵɵdirectiveInject(i3.DOMService), i0.ɵɵdirectiveInject(i4.ConfigService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
1264
+ OgcFilterSelectionComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcFilterSelectionComponent, selectors: [["igo-ogc-filter-selection"]], viewQuery: function OgcFilterSelectionComponent_Query(rf, ctx) { if (rf & 1) {
1265
+ i0.ɵɵviewQuery(_c0, 5);
1266
+ } if (rf & 2) {
1267
+ let _t;
1268
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.sel = _t.first);
1269
+ } }, inputs: { refreshFilters: "refreshFilters", datasource: "datasource", map: "map", checkboxesIndex: "checkboxesIndex", radioButtonsIndex: "radioButtonsIndex", baseIndex: "baseIndex", currentFilter: "currentFilter" }, features: [i0.ɵɵProvidersFeature([DOMService])], decls: 3, vars: 3, consts: [[3, "formGroup"], [4, "ngFor", "ngForOf"], [4, "ngIf"], ["class", "pushButtonGroups", 4, "ngIf"], ["class", "checkboxGroups", 4, "ngIf"], ["class", "radioButtonGroups", 4, "ngIf"], ["class", "selectGroups", 4, "ngIf"], ["class", "autocompleteGroups", 4, "ngIf"], [1, "pushButtonGroups"], ["class", "groupsSelector", 4, "ngIf"], [1, "groupsSelector"], ["formControlName", "pushButtonsGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"], ["formControlName", "pushButtons", "appearance", "legacy", "multiple", "true", 1, "mat-typography", 3, "vertical"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "ngStyle", "checked", "value", "change", 4, "ngFor", "ngForOf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "ngStyle", "checked", "value", "change"], [1, "checkboxGroups"], ["formControlName", "checkboxesGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], [1, "checkboxes", "mat-typography"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "checked", "value", "change", 4, "ngFor", "ngForOf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "checked", "value", "change"], ["class", "lessResults mat-typography", 3, "click", 4, "ngIf"], ["class", "moreResults mat-typography", 3, "click", 4, "ngIf"], [1, "lessResults", "mat-typography", 3, "click"], [1, "moreResults", "mat-typography", 3, "click"], [1, "radioButtonGroups"], ["formControlName", "radioButtonsGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], ["formControlName", "radioButtons", 1, "mat-typography"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "change", 4, "ngIf"], ["tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "change"], [1, "selectGroups"], ["formControlName", "selectGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "click", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["notMulti", ""], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "click"], ["svgIcon", "filter-remove"], ["formControlName", "selectMulti", 3, "multiple", "placeholder"], ["selection", ""], [3, "ngModel", "ngModelOptions", "ngModelChange", "change", 4, "ngIf"], ["tooltip-position", "below", "matTooltipDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "value", "onSelectionChange", 4, "ngFor", "ngForOf"], [3, "ngModel", "ngModelOptions", "ngModelChange", "change"], ["tooltip-position", "below", "matTooltipDelay", "500", "matTooltipClass", "material-tooltip", 3, "matTooltip", "value", "onSelectionChange"], ["formControlName", "select", 3, "placeholder"], [1, "autocompleteGroups"], ["formControlName", "autocompleteGroup", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "value", "valueChange"], [3, "width", 4, "ngIf"], ["matInput", "", "type", "text", "formControlName", "autocomplete", 1, "autocomplete", 3, "matAutocomplete", "placeholder"], ["autocomplete", ""], [3, "displayWith", "optionSelected"], ["auto", "matAutocomplete", "autocomplete", ""], [3, "datasource", "currentFilter", "datasourceChange", "currentFilterChange", "changeProperty"]], template: function OgcFilterSelectionComponent_Template(rf, ctx) { if (rf & 1) {
1270
+ i0.ɵɵelementStart(0, "form", 0);
1271
+ i0.ɵɵtemplate(1, OgcFilterSelectionComponent_div_1_Template, 6, 5, "div", 1);
1272
+ i0.ɵɵelementEnd();
1273
+ i0.ɵɵtemplate(2, OgcFilterSelectionComponent_div_2_Template, 5, 4, "div", 2);
1274
+ } if (rf & 2) {
1275
+ i0.ɵɵproperty("formGroup", ctx.form);
1276
+ i0.ɵɵadvance(1);
1277
+ i0.ɵɵproperty("ngForOf", ctx.ogcFiltersSelectors);
1278
+ i0.ɵɵadvance(1);
1279
+ i0.ɵɵproperty("ngIf", ctx.isTemporalOperator());
1280
+ } }, styles: [".mat-button-toggle-group[_ngcontent-%COMP%]{margin:5px;flex-wrap:wrap;box-shadow:none!important;width:95%}.checkboxes[_ngcontent-%COMP%]{flex-wrap:wrap;box-shadow:none}.groupsSelector[_ngcontent-%COMP%]{text-align:center}mat-button-toggle[_ngcontent-%COMP%]{display:inline-flex;border:1.5px solid black;border-radius:5px;margin:5px;white-space:normal;min-height:40px;height:auto;width:142px}mat-button-toggle[_ngcontent-%COMP%] .mat-button-toggle-label-content{line-height:inherit;font-size:small;display:block}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){mat-button-toggle[_ngcontent-%COMP%]{width:45%}} .material-tooltip{white-space:pre-wrap}mat-checkbox[_ngcontent-%COMP%], mat-radio-button[_ngcontent-%COMP%]{margin:7px;width:95%;display:inline-flex;font-size:larger}mat-checkbox[_ngcontent-%COMP%] label, mat-radio-button[_ngcontent-%COMP%] label{white-space:normal}mat-checkbox[_ngcontent-%COMP%]{vertical-align:middle}mat-button[_ngcontent-%COMP%]{padding-right:10px;cursor:pointer}h4[_ngcontent-%COMP%]{margin:7px;text-align:left}u[_ngcontent-%COMP%]{cursor:pointer;color:#00f;margin:5px}p[_ngcontent-%COMP%]{margin:0;margin:initial}"] });
1281
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterSelectionComponent, [{
1282
+ type: Component,
1283
+ args: [{ selector: 'igo-ogc-filter-selection', providers: [DOMService], template: "<form [formGroup]=\"form\">\n <div *ngFor=\"let selector of ogcFiltersSelectors\">\n <div class=\"pushButtonGroups\" *ngIf=\"selector.selectorType === 'pushButton'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getPushButtonsGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"pushButtonsGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentPushButtonsGroup\">\n <mat-option *ngFor=\"let selectorGroup of getPushButtonsGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentPushButtonsGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <mat-button-toggle-group\n formControlName=\"pushButtons\" class=\"mat-typography\" appearance=\"legacy\" vertical={{bundleIsVertical(bundle)}} multiple=\"true\">\n <mat-button-toggle *ngFor=\"let ogcPushButton of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcPushButton)\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [ngStyle]=\"getButtonColor(ogcPushButton)\"\n [checked]=\"ogcPushButton.enabled\" (change)=\"onSelectionChange(ogcPushButton, selector.selectorType)\"\n [value]=\"ogcPushButton\">{{ogcPushButton.title}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </ng-container>\n </div>\n\n <div class=\"checkboxGroups\" *ngIf=\"selector.selectorType === 'checkbox'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getCheckboxesGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"checkboxesGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentCheckboxesGroup\">\n <mat-option *ngFor=\"let selectorGroup of getCheckboxesGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentCheckboxesGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <div class=\"checkboxes mat-typography\">\n <mat-checkbox *ngFor=\"let ogcCheckbox of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcCheckbox)\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [checked]=\"ogcCheckbox.enabled\" (change)=\"onSelectionChange(ogcCheckbox, selector.selectorType)\"\n [value]=\"ogcCheckbox\">{{ogcCheckbox.title}}\n </mat-checkbox>\n </div>\n <p *ngIf=\"isLessResults(bundle, 'checkbox') || isMoreResults(bundle, 'checkbox')\">\n <u *ngIf=\"isLessResults(bundle, 'checkbox')\"\n class=\"lessResults mat-typography\"\n (click)=\"displayLessResults('checkbox')\">{{ 'igo.geo.filter.displayLessResults' | translate }}\n </u>\n <u *ngIf=\"isMoreResults(bundle, 'checkbox')\"\n class=\"moreResults mat-typography\"\n (click)=\"displayMoreResults('checkbox')\">{{ 'igo.geo.filter.displayMoreResults' | translate }}\n </u>\n </p>\n </ng-container>\n </div>\n\n <div class=\"radioButtonGroups\" *ngIf=\"selector.selectorType === 'radioButton'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getRadioButtonsGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"radioButtonsGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentRadioButtonsGroup\">\n <mat-option *ngFor=\"let selectorGroup of getRadioButtonsGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentRadioButtonsGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <mat-radio-group\n formControlName=\"radioButtons\" class=\"mat-typography\">\n <mat-radio-button *ngIf=\"bundle.unfiltered\"\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (change)=\"emptyRadioButtons()\">{{ 'igo.geo.filter.resetFilters' | translate }}\n </mat-radio-button>\n <mat-radio-button *ngFor=\"let ogcRadioButton of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcRadioButton)\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [checked]=\"ogcRadioButton.enabled\" (change)=\"onSelectionChange(ogcRadioButton, selector.selectorType)\"\n [value]=\"ogcRadioButton\">{{ogcRadioButton.title}}\n </mat-radio-button>\n <p *ngIf=\"isLessResults(bundle, 'radio') || isMoreResults(bundle, 'radio')\">\n <u *ngIf=\"isLessResults(bundle, 'radio')\"\n class=\"lessResults mat-typography\"\n (click)=\"displayLessResults('radio')\">{{ 'igo.geo.filter.displayLessResults' | translate }}\n </u>\n <u *ngIf=\"isMoreResults(bundle, 'radio')\"\n class=\"moreResults mat-typography\"\n (click)=\"displayMoreResults('radio')\">{{ 'igo.geo.filter.displayMoreResults' | translate }}\n </u>\n </p>\n </mat-radio-group>\n </ng-container>\n </div>\n\n <div class=\"selectGroups\" *ngIf=\"selector.selectorType === 'select'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getSelectGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"selectGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentSelectGroup\">\n <mat-option *ngFor=\"let selectorGroup of getSelectGroups()\"\n [value]=\"selectorGroup\">{{selectorGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentSelectGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <div class=\"groupsSelector\">\n <mat-button *ngIf=\"bundle.unfiltered && !bundle.multiple\"\n mat-icon-button\n color=\"warn\"\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (click)=\"emptySelect()\">\n <mat-icon svgIcon=\"filter-remove\"></mat-icon>\n </mat-button>\n <mat-form-field [style.width.%]=\"bundle.width ? bundle.width : undefined\">\n <div *ngIf=\"bundle.multiple; else notMulti\">\n <mat-select\n #selection [multiple]=\"bundle.multiple\" [placeholder]=\"bundle.title\" formControlName=\"selectMulti\">\n <div class=\"checkboxes mat-typography\">\n <mat-checkbox *ngIf=\"bundle.multiple\"\n [(ngModel)]=\"selectAllSelected\" [ngModelOptions]=\"{standalone: true}\"\n (change)=\"toggleAllSelection()\">Tous\n </mat-checkbox>\n </div>\n <mat-option *ngFor=\"let ogcSelect of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcSelect)\" tooltip-position=\"below\" matTooltipDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (onSelectionChange)=\"selectOptionClick($event.source.value, bundle, $event)\"\n [value]=\"ogcSelect\">{{ogcSelect.title}}\n </mat-option>\n </mat-select>\n </div>\n <ng-template #notMulti>\n <mat-select\n [placeholder]=\"bundle.title\" formControlName=\"select\">\n <mat-option *ngFor=\"let ogcSelect of bundle.selectors\"\n [matTooltip]=\"getToolTip(ogcSelect)\" tooltip-position=\"below\" matTooltipDelay=\"500\" matTooltipClass=\"material-tooltip\"\n [value]=\"ogcSelect\" (onSelectionChange)=\"selectOptionClick($event.source.value, bundle)\">{{ogcSelect.title}}\n </mat-option>\n </mat-select>\n </ng-template>\n </mat-form-field>\n </div>\n </ng-container>\n </div>\n\n <div class=\"autocompleteGroups\" *ngIf=\"selector.selectorType === 'autocomplete'\">\n <mat-divider></mat-divider>\n <div class=\"groupsSelector\" *ngIf=\"getAutocompleteGroups().length > 1\">\n <mat-form-field>\n <mat-select\n formControlName=\"autocompleteGroup\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [(value)]=\"currentAutocompleteGroup\">\n <mat-option *ngFor=\"let autocompleteGroup of getAutocompleteGroups()\"\n [value]=\"autocompleteGroup\">{{autocompleteGroup.title}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <ng-container *ngFor=\"let bundle of currentAutocompleteGroup.computedSelectors\">\n <h4>{{bundle.title}}</h4>\n <div class=\"groupsSelector\">\n <mat-button *ngIf=\"bundle.unfiltered\"\n mat-icon-button\n color=\"warn\"\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\n (click)=\"emptyAutocomplete()\">\n <mat-icon svgIcon=\"filter-remove\"></mat-icon>\n </mat-button>\n <mat-form-field *ngIf=\"filteredOgcAutocomplete[bundle.id]\" [style.width.%]=\"bundle.width ? bundle.width : undefined\">\n <input matInput type=\"text\" formControlName=\"autocomplete\" #autocomplete class=\"autocomplete\"\n [matAutocomplete]=\"auto\" [placeholder]=\"bundle.title\">\n <mat-autocomplete #auto=\"matAutocomplete\" #autocomplete (optionSelected)=\"autocompleteOptionClick($event.option.value)\"\n [displayWith]=\"displayFn\">\n <mat-option *ngFor=\"let ogcAutocomplete of filteredOgcAutocomplete[bundle.id] | async\" [value]=\"ogcAutocomplete\">\n {{ ogcAutocomplete.value }}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n </ng-container>\n </div>\n </div>\n</form>\n\n<div *ngIf=\"isTemporalOperator()\">\n <mat-divider></mat-divider>\n <h4 *ngIf=\"!currentFilter.title\">{{ 'igo.geo.filter.reportingDate' | translate }}</h4>\n <h4 *ngIf=\"currentFilter.title\">{{ currentFilter.title }}</h4>\n <igo-ogc-filter-time\n [(datasource)]=\"datasource\"\n [(currentFilter)]=\"currentFilter\"\n (changeProperty)=\"changeProperty($event.value, $event.pos)\">\n </igo-ogc-filter-time>\n</div>", styles: [".mat-button-toggle-group{margin:5px;flex-wrap:wrap;box-shadow:none!important;width:95%}.checkboxes{flex-wrap:wrap;box-shadow:none}.groupsSelector{text-align:center}mat-button-toggle{display:inline-flex;border:1.5px solid black;border-radius:5px;margin:5px;white-space:normal;min-height:40px;height:auto;width:142px}mat-button-toggle ::ng-deep .mat-button-toggle-label-content{line-height:inherit;font-size:small;display:block}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){mat-button-toggle{width:45%}}::ng-deep .material-tooltip{white-space:pre-wrap}mat-checkbox,mat-radio-button{margin:7px;width:95%;display:inline-flex;font-size:larger}mat-checkbox ::ng-deep label,mat-radio-button ::ng-deep label{white-space:normal}mat-checkbox{vertical-align:middle}mat-button{padding-right:10px;cursor:pointer}h4{margin:7px;text-align:left}u{cursor:pointer;color:#00f;margin:5px}p{margin:0;margin:initial}\n"] }]
1284
+ }], function () { return [{ type: i1.OGCFilterService }, { type: i2.UntypedFormBuilder }, { type: i3.DOMService }, { type: i4.ConfigService }, { type: i0.ChangeDetectorRef }]; }, { sel: [{
1285
+ type: ViewChild,
1286
+ args: ['selection']
1287
+ }], refreshFilters: [{
1288
+ type: Input
1289
+ }], datasource: [{
1290
+ type: Input
1291
+ }], map: [{
1292
+ type: Input
1293
+ }], checkboxesIndex: [{
1294
+ type: Input
1295
+ }], radioButtonsIndex: [{
1296
+ type: Input
1297
+ }], baseIndex: [{
1298
+ type: Input
1299
+ }], currentFilter: [{
1300
+ type: Input
1301
+ }] }); })();
1302
1302
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2djLWZpbHRlci1zZWxlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvZmlsdGVyL29nYy1maWx0ZXItc2VsZWN0aW9uL29nYy1maWx0ZXItc2VsZWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL2ZpbHRlci9vZ2MtZmlsdGVyLXNlbGVjdGlvbi9vZ2MtZmlsdGVyLXNlbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGNBQWMsQ0FBQztBQVVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJakUsT0FBTyxFQUF3QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztJQ2xCdkMsc0NBQzBCO0lBQUEsWUFDMUI7SUFBQSxpQkFBYTs7O0lBRFgseUNBQXVCO0lBQUMsZUFDMUI7SUFEMEIsdURBQzFCOzs7O0lBUk4sK0JBQXNFLHFCQUFBLHFCQUFBO0lBS2hFLHlRQUFtQzs7SUFDbkMsNkdBRWE7SUFDZixpQkFBYSxFQUFBLEVBQUE7OztJQUxYLGVBQTZEO0lBQTdELHFGQUE2RCx5Q0FBQTtJQUV2QixlQUF5QjtJQUF6Qix1REFBeUI7Ozs7SUFVakUsNkNBSTBCO0lBRFUsd1ZBQVUsZUFBQSxzRUFB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O1lBRWIsY0FBYztrQkFBdEIsS0FBSztZQUVHLFVBQVU7a0JBQWxCLEtBQUs7WUFFRyxHQUFHO2tCQUFYLEtBQUs7WUFFRyxlQUFlO2tCQUF2QixLQUFLO1lBQ0csaUJBQWlCO2tCQUF6QixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSztZQUdGLGFBQWE7a0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlJztcbmltcG9ydCB7IERPTVNlcnZpY2UsIERPTVZhbHVlIH0gZnJvbSAnQGlnbzIvY29tbW9uJztcblxuaW1wb3J0IHtcbiAgT2djRmlsdGVyYWJsZURhdGFTb3VyY2UsXG4gIElnb09nY0ZpbHRlck9iamVjdCxcbiAgT2djUHVzaEJ1dHRvbixcbiAgT2djU2VsZWN0b3JCdW5kbGUsXG4gIFNlbGVjdG9yR3JvdXBcblxufSBmcm9tICcuLi8uLi9maWx0ZXIvc2hhcmVkL29nYy1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9nY0ZpbHRlcldyaXRlciB9IGZyb20gJy4uLy4uL2ZpbHRlci9zaGFyZWQvb2djLWZpbHRlcic7XG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi8uLi9tYXAnO1xuaW1wb3J0IHsgT0dDRmlsdGVyU2VydmljZSB9IGZyb20gJy4uL3NoYXJlZC9vZ2MtZmlsdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgV01TRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2Uvc2hhcmVkL2RhdGFzb3VyY2VzL3dtcy1kYXRhc291cmNlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2djRmlsdGVyT3BlcmF0b3IgfSBmcm9tICcuLi9zaGFyZWQvb2djLWZpbHRlci5lbnVtJztcbmltcG9ydCB7IE1hdFNlbGVjdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRPcHRpb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28tb2djLWZpbHRlci1zZWxlY3Rpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vb2djLWZpbHRlci1zZWxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vZ2MtZmlsdGVyLXNlbGVjdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFsgRE9NU2VydmljZSBdXG59KVxuZXhwb3J0IGNsYXNzIE9nY0ZpbHRlclNlbGVjdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZCgnc2VsZWN0aW9uJykgc2VsOiBNYXRTZWxlY3Q7XG5cbiAgQElucHV0KCkgcmVmcmVzaEZpbHRlcnM6ICgpID0+IHZvaWQ7XG5cbiAgQElucHV0KCkgZGF0YXNvdXJjZTogT2djRmlsdGVyYWJsZURhdGFTb3VyY2U7XG5cbiAgQElucHV0KCkgbWFwOiBJZ29NYXA7XG5cbiAgQElucHV0KCkgY2hlY2tib3hlc0luZGV4ID0gNTtcbiAgQElucHV0KCkgcmFkaW9CdXR0b25zSW5kZXggPSA1O1xuICBASW5wdXQoKSBiYXNlSW5kZXggPSA1O1xuXG4gIEBJbnB1dCgpXG4gIGdldCBjdXJyZW50RmlsdGVyKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRGaWx0ZXI7XG4gIH1cbiAgc2V0IGN1cnJlbnRGaWx0ZXIodmFsdWUpIHtcbiAgICB0aGlzLl9jdXJyZW50RmlsdGVyID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRGaWx0ZXI/LnNsaWRlck9wdGlvbnMpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnRGaWx0ZXIuc2xpZGVyT3B0aW9ucy5lbmFibGVkID0gZmFsc2U7IC8vIHJlbW92ZSBzbGlkZXIgdG9nZ2xlIChhbmltYXRpb24gdGVtcG9yZWxsZSlcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfY3VycmVudEZpbHRlcjogYW55O1xuXG4gIHB1YmxpYyBvZ2NGaWx0ZXJPcGVyYXRvciA9IE9nY0ZpbHRlck9wZXJhdG9yO1xuXG4gIHB1YmxpYyBmb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBwcml2YXRlIG9nY0ZpbHRlcldyaXRlcjogT2djRmlsdGVyV3JpdGVyO1xuICBwdWJsaWMgY29sb3IgPSAncHJpbWFyeSc7XG4gIHB1YmxpYyBzZWxlY3RBbGxTZWxlY3RlZCA9IGZhbHNlO1xuICBwdWJsaWMgc2VsZWN0RW5hYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyBzZWxlY3RFbmFibGVkcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcbiAgcHVibGljIGF1dG9jb21wbGV0ZUVuYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdCh1bmRlZmluZWQpO1xuICBwdWJsaWMgZmlsdGVyZWRPZ2NBdXRvY29tcGxldGUgPSB7fTtcblxuICBwdWJsaWMgYXBwbHlGaWx0ZXJzVGltZW91dDtcblxuICBnZXQgb2djRmlsdGVyc1NlbGVjdG9ycygpIHtcbiAgICBjb25zdCBvZ2NTZWxlY3RvciA9IFtdO1xuICAgIGlmICh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LnB1c2hCdXR0b25zKSB7XG4gICAgICBvZ2NTZWxlY3Rvci5wdXNoKHRoaXMuZGF0YXNvdXJjZT8ub3B0aW9ucz8ub2djRmlsdGVycz8ucHVzaEJ1dHRvbnMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kYXRhc291cmNlPy5vcHRpb25zPy5vZ2NGaWx0ZXJzPy5jaGVja2JveGVzKSB7XG4gICAgICBvZ2NTZWxlY3Rvci5wdXNoKHRoaXMuZGF0YXNvdXJjZT8ub3B0aW9ucz8ub2djRmlsdGVycz8uY2hlY2tib3hlcyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LnJhZGlvQnV0dG9ucykge1xuICAgICAgb2djU2VsZWN0b3IucHVzaCh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LnJhZGlvQnV0dG9ucyk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LnNlbGVjdCkge1xuICAgICAgb2djU2VsZWN0b3IucHVzaCh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LnNlbGVjdCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LmF1dG9jb21wbGV0ZSkge1xuICAgICAgb2djU2VsZWN0b3IucHVzaCh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LmF1dG9jb21wbGV0ZSk7XG4gICAgfVxuICAgIG9nY1NlbGVjdG9yLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGlmIChhLm9yZGVyIDwgYi5vcmRlcikge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICBpZiAoYS5vcmRlciA+IGIub3JkZXIpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9KTtcbiAgICByZXR1cm4gb2djU2VsZWN0b3I7XG4gIH1cblxuICBnZXQgY3VycmVudFB1c2hCdXR0b25zR3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3B1c2hCdXR0b25zR3JvdXAnKS52YWx1ZTtcbiAgfVxuICBzZXQgY3VycmVudFB1c2hCdXR0b25zR3JvdXAodmFsdWUpIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IHB1c2hCdXR0b25zR3JvdXA6IHZhbHVlIH0pO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRDaGVja2JveGVzR3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2NoZWNrYm94ZXNHcm91cCcpLnZhbHVlO1xuICB9XG4gIHNldCBjdXJyZW50Q2hlY2tib3hlc0dyb3VwKHZhbHVlKSB7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBjaGVja2JveGVzR3JvdXA6IHZhbHVlIH0pO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSYWRpb0J1dHRvbnNHcm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgncmFkaW9CdXR0b25zR3JvdXAnKS52YWx1ZTtcbiAgfVxuICBzZXQgY3VycmVudFJhZGlvQnV0dG9uc0dyb3VwKHZhbHVlKSB7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyByYWRpb0J1dHRvbnNHcm91cDogdmFsdWUgfSk7XG4gIH1cblxuICBnZXQgY3VycmVudFNlbGVjdEdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdzZWxlY3RHcm91cCcpLnZhbHVlO1xuICB9XG4gIHNldCBjdXJyZW50U2VsZWN0R3JvdXAodmFsdWUpIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7IHNlbGVjdEdyb3VwOiB2YWx1ZSB9KTtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50QXV0b2NvbXBsZXRlR3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2F1dG9jb21wbGV0ZUdyb3VwJykudmFsdWU7XG4gIH1cbiAgc2V0IGN1cnJlbnRBdXRvY29tcGxldGVHcm91cCh2YWx1ZSkge1xuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgYXV0b2NvbXBsZXRlR3JvdXA6IHZhbHVlIH0pO1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0IHNlbGVjdEVuYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0RW5hYmxlZCQudmFsdWU7XG4gIH1cblxuICBzZXQgc2VsZWN0RW5hYmxlZCh2YWx1ZSkge1xuICAgIHRoaXMuc2VsZWN0RW5hYmxlZCQubmV4dCh2YWx1ZSk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuYXBwbHlGaWx0ZXJzVGltZW91dCk7XG4gICAgdGhpcy5jdXJyZW50U2VsZWN0R3JvdXAuY29tcHV0ZWRTZWxlY3RvcnMuZm9yRWFjaChjb21wU2VsZWN0ID0+IHtcbiAgICAgIGNvbXBTZWxlY3Quc2VsZWN0b3JzPy5mb3JFYWNoKHNlbGVjdG9yID0+IHtcbiAgICAgICAgdmFsdWUgPT09IHNlbGVjdG9yID8gc2VsZWN0b3IuZW5hYmxlZCA9IHRydWUgOiBzZWxlY3Rvci5lbmFibGVkID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9LCA3NTApO1xuICB9XG5cbiAgZ2V0IHNlbGVjdEVuYWJsZWRzKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdEVuYWJsZWRzJC52YWx1ZTtcbiAgfVxuXG4gIHNldCBzZWxlY3RFbmFibGVkcyh2YWx1ZSkge1xuICAgIHRoaXMuc2VsZWN0RW5hYmxlZHMkLm5leHQodmFsdWUpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLmFwcGx5RmlsdGVyc1RpbWVvdXQpO1xuICAgIHRoaXMuY3VycmVudFNlbGVjdEdyb3VwLmNvbXB1dGVkU2VsZWN0b3JzLmZvckVhY2goY29tcFNlbGVjdCA9PiB7XG4gICAgICBjb21wU2VsZWN0LnNlbGVjdG9ycz8uZm9yRWFjaChzZWxlY3RvciA9PiB7XG4gICAgICAgIHZhbHVlLmluY2x1ZGVzKHNlbGVjdG9yKSA/IHNlbGVjdG9yLmVuYWJsZWQgPSB0cnVlIDogc2VsZWN0b3IuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmFwcGx5RmlsdGVyc1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgfSwgNzUwKTtcbiAgfVxuXG4gIGdldCBhdXRvY29tcGxldGVFbmFibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmF1dG9jb21wbGV0ZUVuYWJsZWQkLnZhbHVlO1xuICB9XG5cbiAgc2V0IGF1dG9jb21wbGV0ZUVuYWJsZWQodmFsdWUpIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUVuYWJsZWQkLm5leHQodmFsdWUpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLmFwcGx5RmlsdGVyc1RpbWVvdXQpO1xuICAgIHRoaXMuY3VycmVudEF1dG9jb21wbGV0ZUdyb3VwLmNvbXB1dGVkU2VsZWN0b3JzLmZvckVhY2goY29tcFNlbGVjdCA9PiB7XG4gICAgICBjb21wU2VsZWN0LnNlbGVjdG9ycz8uZm9yRWFjaChzZWxlY3RvciA9PiB7XG4gICAgICAgIHZhbHVlID09PSBzZWxlY3Rvci50aXRsZSA/IHNlbGVjdG9yLmVuYWJsZWQgPSB0cnVlIDogc2VsZWN0b3IuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmFwcGx5RmlsdGVyc1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgfSwgNzUwKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb2djRmlsdGVyU2VydmljZTogT0dDRmlsdGVyU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBkb21TZXJ2aWNlOiBET01TZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICB0aGlzLm9nY0ZpbHRlcldyaXRlciA9IG5ldyBPZ2NGaWx0ZXJXcml0ZXIoKTtcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZvcm0oKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICBwdXNoQnV0dG9uczogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgcmFkaW9CdXR0b25zOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBwdXNoQnV0dG9uc0dyb3VwOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBjaGVja2JveGVzR3JvdXA6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHJhZGlvQnV0dG9uc0dyb3VwOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBzZWxlY3RHcm91cDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgc2VsZWN0OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBzZWxlY3RNdWx0aTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgYXV0b2NvbXBsZXRlR3JvdXA6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGF1dG9jb21wbGV0ZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dXG4gICAgfSk7XG4gIH1cblxuICBnZXRQdXNoQnV0dG9uc0dyb3VwcygpOiBTZWxlY3Rvckdyb3VwW10ge1xuICAgIGlmICh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LnB1c2hCdXR0b25zKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5wdXNoQnV0dG9ucy5ncm91cHM7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2hlY2tib3hlc0dyb3VwcygpOiBTZWxlY3Rvckdyb3VwW10ge1xuICAgIGlmICh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LmNoZWNrYm94ZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLmNoZWNrYm94ZXMuZ3JvdXBzO1xuICAgIH1cbiAgfVxuXG4gIGdldFJhZGlvQnV0dG9uc0dyb3VwcygpOiBTZWxlY3Rvckdyb3VwW10ge1xuICAgIGlmICh0aGlzLmRhdGFzb3VyY2U/Lm9wdGlvbnM/Lm9nY0ZpbHRlcnM/LnJhZGlvQnV0dG9ucykge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm9nY0ZpbHRlcnMucmFkaW9CdXR0b25zLmdyb3VwcztcbiAgICB9XG4gIH1cblxuICBnZXRTZWxlY3RHcm91cHMoKTogU2VsZWN0b3JHcm91cFtdIHtcbiAgICBpZiAodGhpcy5kYXRhc291cmNlPy5vcHRpb25zPy5vZ2NGaWx0ZXJzPy5zZWxlY3QpIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLnNlbGVjdC5ncm91cHM7XG4gICAgfVxuICB9XG5cbiAgZ2V0QXV0b2NvbXBsZXRlR3JvdXBzKCk6IFNlbGVjdG9yR3JvdXBbXSB7XG4gICAgaWYgKHRoaXMuZGF0YXNvdXJjZT8ub3B0aW9ucz8ub2djRmlsdGVycz8uYXV0b2NvbXBsZXRlKSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5hdXRvY29tcGxldGUuZ3JvdXBzO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzKSB7XG4gICAgICBpZiAodGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5wdXNoQnV0dG9ucykge1xuICAgICAgICB0aGlzLmN1cnJlbnRQdXNoQnV0dG9uc0dyb3VwID1cbiAgICAgICAgICB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLnB1c2hCdXR0b25zLmdyb3Vwcy5maW5kKGdyb3VwID0+IGdyb3VwLmVuYWJsZWQpIHx8XG4gICAgICAgICAgdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5wdXNoQnV0dG9ucy5ncm91cHNbMF07XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5jaGVja2JveGVzKSB7XG4gICAgICAgIHRoaXMuY3VycmVudENoZWNrYm94ZXNHcm91cCA9XG4gICAgICAgICAgdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5jaGVja2JveGVzLmdyb3Vwcy5maW5kKGdyb3VwID0+IGdyb3VwLmVuYWJsZWQpIHx8XG4gICAgICAgICAgdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5jaGVja2JveGVzLmdyb3Vwc1swXTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucykge1xuICAgICAgICB0aGlzLmN1cnJlbnRSYWRpb0J1dHRvbnNHcm91cCA9XG4gICAgICAgICAgdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5yYWRpb0J1dHRvbnMuZ3JvdXBzLmZpbmQoZ3JvdXAgPT4gZ3JvdXAuZW5hYmxlZCkgfHxcbiAgICAgICAgICB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLnJhZGlvQnV0dG9ucy5ncm91cHNbMF07XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5zZWxlY3QpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0R3JvdXAgPVxuICAgICAgICAgIHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm9nY0ZpbHRlcnMuc2VsZWN0Lmdyb3Vwcy5maW5kKGdyb3VwID0+IGdyb3VwLmVuYWJsZWQpIHx8XG4gICAgICAgICAgdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5zZWxlY3QuZ3JvdXBzWzBdO1xuICAgICAgICB0aGlzLmdldFNlbGVjdEVuYWJsZWQoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5nZXRTZWxlY3REb21WYWx1ZXMoKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLmF1dG9jb21wbGV0ZSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRBdXRvY29tcGxldGVHcm91cCA9XG4gICAgICAgICAgdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5hdXRvY29tcGxldGUuZ3JvdXBzLmZpbmQoZ3JvdXAgPT4gZ3JvdXAuZW5hYmxlZCkgfHxcbiAgICAgICAgICB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLmF1dG9jb21wbGV0ZS5ncm91cHNbMF07XG4gICAgICAgIHRoaXMuZ2V0QXV0b2NvbXBsZXRlRW5hYmxlZCgpO1xuICAgICAgICBhd2FpdCB0aGlzLmdldEF1dG9jb21wbGV0ZURvbVZhbHVlcygpO1xuICAgICAgfVxuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9XG5cbiAgICB0aGlzLmZvcm1cbiAgICAuZ2V0KCdwdXNoQnV0dG9uc0dyb3VwJylcbiAgICAudmFsdWVDaGFuZ2VzXG4gICAgLnBpcGUoZGVib3VuY2VUaW1lKDc1MCkpXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLm9uUHVzaEJ1dHRvbnNDaGFuZ2VHcm91cCgpO1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuZm9ybVxuICAgIC5nZXQoJ2NoZWNrYm94ZXNHcm91cCcpXG4gICAgLnZhbHVlQ2hhbmdlc1xuICAgIC5waXBlKGRlYm91bmNlVGltZSg3NTApKVxuICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vbkNoZWNrYm94ZXNDaGFuZ2VHcm91cCgpO1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuZm9ybVxuICAgICAgLmdldCgncmFkaW9CdXR0b25zR3JvdXAnKVxuICAgICAgLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDc1MCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5vblJhZGlvQnV0dG9uc0NoYW5nZUdyb3VwKCk7XG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgICB9KTtcbiAgICB0aGlzLmZvcm1cbiAgICAgIC5nZXQoJ3NlbGVjdEdyb3VwJylcbiAgICAgIC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg3NTApKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMub25TZWxlY3RDaGFuZ2VHcm91cCgpO1xuICAgICAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xuICAgICAgfSk7XG4gICAgdGhpcy5mb3JtXG4gICAgICAuZ2V0KCdhdXRvY29tcGxldGVHcm91cCcpXG4gICAgICAudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShkZWJvdW5jZVRpbWUoNzUwKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLm9uQXV0b2NvbXBsZXRlQ2hhbmdlR3JvdXAoKTtcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuZm9ybVxuICAgICAgLmdldCgncHVzaEJ1dHRvbnMnKVxuICAgICAgLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDc1MCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuZm9ybVxuICAgICAgLmdldCgncmFkaW9CdXR0b25zJylcbiAgICAgIC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSg3NTApKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VsZWN0RW5hYmxlZCgpIHtcbiAgICBjb25zdCBlbmFibGVkcyA9IFtdO1xuICAgIGxldCBlbmFibGVkO1xuICAgIHRoaXMuY3VycmVudFNlbGVjdEdyb3VwLmNvbXB1dGVkU2VsZWN0b3JzLmZvckVhY2goY29tcFNlbGVjdCA9PiB7XG4gICAgICBpZiAoY29tcFNlbGVjdC5tdWx0aXBsZSkge1xuICAgICAgICBjb21wU2VsZWN0LnNlbGVjdG9ycz8uZm9yRWFjaChzZWxlY3RvciA9PiB7XG4gICAgICAgICAgaWYgKHNlbGVjdG9yLmVuYWJsZWQpIHtcbiAgICAgICAgICAgIGVuYWJsZWRzLnB1c2goc2VsZWN0b3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0RW5hYmxlZHMgPSBlbmFibGVkcztcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzWydzZWxlY3RNdWx0aSddLnNldFZhbHVlKGVuYWJsZWRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBTZWxlY3Quc2VsZWN0b3JzPy5mb3JFYWNoKHNlbGVjdG9yID0+IHtcbiAgICAgICAgICBpZiAoc2VsZWN0b3IuZW5hYmxlZCkge1xuICAgICAgICAgICAgZW5hYmxlZCA9IHNlbGVjdG9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1snc2VsZWN0J10ucmVzZXQoZW5hYmxlZCk7XG4gICAgICAgIHRoaXMuc2VsZWN0RW5hYmxlZCQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmZvcm0uY29udHJvbHNbJ3NlbGVjdCddLnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzWydzZWxlY3QnXS5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZWxlY3RFbmFibGVkID0gZW5hYmxlZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXV0b2NvbXBsZXRlRW5hYmxlZCgpIHtcbiAgICBsZXQgZW5hYmxlZDtcbiAgICB0aGlzLmN1cnJlbnRBdXRvY29tcGxldGVHcm91cC5jb21wdXRlZFNlbGVjdG9ycy5mb3JFYWNoKGNvbXBTZWxlY3QgPT4ge1xuICAgICAgY29tcFNlbGVjdC5zZWxlY3RvcnM/LmZvckVhY2goc2VsZWN0b3IgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0b3IuZW5hYmxlZCkge1xuICAgICAgICAgIGNvbnN0IGRvbSA9IHtcbiAgICAgICAgICAgIGlkOiBzZWxlY3Rvci5maWx0ZXJzLmV4cHJlc3Npb24sXG4gICAgICAgICAgICB2YWx1ZTogc2VsZWN0b3IudGl0bGVcbiAgICAgICAgICB9O1xuICAgICAgICAgIGVuYWJsZWQgPSBzZWxlY3Rvci50aXRsZTtcbiAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbJ2F1dG9jb21wbGV0ZSddLnNldFZhbHVlKGRvbSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5hdXRvY29tcGxldGVFbmFibGVkID0gZW5hYmxlZDtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFRvb2xUaXAoc2VsZWN0b3IpOiBzdHJpbmcge1xuICAgIGxldCB0b29sVGlwO1xuICAgIGlmIChzZWxlY3Rvci50b29sdGlwKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShzZWxlY3Rvci50b29sdGlwKSkge1xuICAgICAgICB0b29sVGlwID0gc2VsZWN0b3IudG9vbHRpcC5qb2luKCdcXG4nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvb2xUaXAgPSBzZWxlY3Rvci50b29sdGlwO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG9vbFRpcCB8fCAnJztcbiAgfVxuXG4gIGFzeW5jIGdldFNlbGVjdERvbVZhbHVlcygpIHtcbiAgICBmb3IgKGNvbnN0IGJ1bmRsZSBvZiB0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLnNlbGVjdC5idW5kbGVzKSB7XG4gICAgICBpZiAoYnVuZGxlLmRvbVNlbGVjdG9ycykge1xuICAgICAgICBsZXQgZG9tVmFsdWVzO1xuICAgICAgICBmb3IgKGNvbnN0IGRvbVNlbGVjdG9yIG9mIGJ1bmRsZS5kb21TZWxlY3RvcnMpIHtcbiAgICAgICAgICBsZXQgZmlsdGVyRE9NO1xuICAgICAgICAgIGZvciAoY29uc3QgZG9tT3B0aW9ucyBvZiB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0Q29uZmlnKCdkb20nKSkge1xuICAgICAgICAgICAgaWYgKGRvbVNlbGVjdG9yLmlkID09PSBkb21PcHRpb25zLmlkIHx8IGRvbVNlbGVjdG9yLm5hbWUgPT09IGRvbU9wdGlvbnMubmFtZSkge1xuICAgICAgICAgICAgICBmaWx0ZXJET00gPSB7XG4gICAgICAgICAgICAgICAgaWQ6IGRvbU9wdGlvbnMuaWQsXG4gICAgICAgICAgICAgICAgdXJsOiBkb21PcHRpb25zLnVybCxcbiAgICAgICAgICAgICAgICBuYW1lOiBkb21PcHRpb25zLm5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWVzOiBkb21PcHRpb25zLnZhbHVlc1xuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBmaWx0ZXJET00udXJsID8gZG9tVmFsdWVzID0gYXdhaXQgdGhpcy5kb21TZXJ2aWNlLmdldERvbShmaWx0ZXJET00pIGFzIERPTVZhbHVlW10gOlxuICAgICAgICAgICAgZG9tVmFsdWVzID0gZmlsdGVyRE9NLnZhbHVlcztcblxuICAgICAgICAgIGlmIChkb21WYWx1ZXMpIHtcbiAgICAgICAgICAgIGxldCBuZXdCdW5kbGUgPSBidW5kbGU7XG4gICAgICAgICAgICBuZXdCdW5kbGUuc2VsZWN0b3JzID0gW107XG4gICAgICAgICAgICBsZXQgc2VsZWN0b3I7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGRvbVZhbHVlcykge1xuICAgICAgICAgICAgICBpZiAoYnVuZGxlLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgbGV0IGVuYWJsZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RFbmFibGVkcz8uZmluZChzZWwgPT4gc2VsLnRpdGxlID09PSB2YWx1ZS52YWx1ZSkgPyBlbmFibGVkID0gdHJ1ZSA6IGVuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzZWxlY3RvciA9IHtcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgIGVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBkb21TZWxlY3Rvci5vcGVyYXRvcixcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lOiBkb21TZWxlY3Rvci5wcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IHZhbHVlLmlkLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0b3IgPSB7XG4gICAgICAgICAgICAgICAgICB0aXRsZTogdmFsdWUudmFsdWUsXG4gICAgICAgICAgICAgICAgICBlbmFibGVkOiB0aGlzLnNlbGVjdEVuYWJsZWQ/LnRpdGxlID09PSB2YWx1ZS52YWx1ZSA/XG4gICAgICAgICAgICAgICAgICAgIHRydWUgOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IGRvbVNlbGVjdG9yLm9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWU6IGRvbVNlbGVjdG9yLnByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogdmFsdWUuaWQsXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBuZXdCdW5kbGUuc2VsZWN0b3JzLnB1c2goc2VsZWN0b3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5nZXRTZWxlY3RHcm91cHMoKS5maW5kKGdyb3VwID0+IGdyb3VwLmlkcy5pbmNsdWRlcyhuZXdCdW5kbGUuaWQpKS5jb21wdXRlZFNlbGVjdG9yc1xuICAgICAgICAgICAgICAuZmluZChjb21wID0+IGNvbXAudGl0bGUgPT09IG5ld0J1bmRsZS50aXRsZSkuc2VsZWN0b3JzID0gbmV3QnVuZGxlLnNlbGVjdG9ycztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5nZXRTZWxlY3RFbmFibGVkKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0QXV0b2NvbXBsZXRlRG9tVmFsdWVzKCkge1xuICAgIGZvciAoY29uc3QgYnVuZGxlIG9mIHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLm9nY0ZpbHRlcnMuYXV0b2NvbXBsZXRlLmJ1bmRsZXMpIHtcbiAgICAgIGlmIChidW5kbGUuZG9tU2VsZWN0b3JzKSB7XG4gICAgICAgIGxldCBkb21WYWx1ZXM7XG4gICAgICAgIGZvciAoY29uc3QgZG9tU2VsZWN0b3Igb2YgYnVuZGxlLmRvbVNlbGVjdG9ycykge1xuICAgICAgICAgIGxldCBmaWx0ZXJET007XG4gICAgICAgICAgZm9yIChjb25zdCBkb21PcHRpb25zIG9mIHRoaXMuY29uZmlnU2VydmljZS5nZXRDb25maWcoJ2RvbScpKSB7XG4gICAgICAgICAgICBpZiAoZG9tU2VsZWN0b3IuaWQgPT09IGRvbU9wdGlvbnMuaWQgfHwgZG9tU2VsZWN0b3IubmFtZSA9PT0gZG9tT3B0aW9ucy5uYW1lKSB7XG4gICAgICAgICAgICAgIGZpbHRlckRPTSA9IHtcbiAgICAgICAgICAgICAgICBpZDogZG9tT3B0aW9ucy5pZCxcbiAgICAgICAgICAgICAgICB1cmw6IGRvbU9wdGlvbnMudXJsLFxuICAgICAgICAgICAgICAgIG5hbWU6IGRvbU9wdGlvbnMubmFtZSxcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IGRvbU9wdGlvbnMudmFsdWVzXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGZpbHRlckRPTS51cmwgPyBkb21WYWx1ZXMgPSBhd2FpdCB0aGlzLmRvbVNlcnZpY2UuZ2V0RG9tKGZpbHRlckRPTSkgYXMgRE9NVmFsdWVbXSA6XG4gICAgICAgICAgICBkb21WYWx1ZXMgPSBmaWx0ZXJET00udmFsdWVzO1xuXG4gICAgICAgICAgaWYgKGRvbVZhbHVlcykge1xuICAgICAgICAgICAgbGV0IG5ld0J1bmRsZSA9IGJ1bmRsZTtcbiAgICAgICAgICAgIG5ld0J1bmRsZS5zZWxlY3RvcnMgPSBbXTtcbiAgICAgICAgICAgIGxldCBzZWxlY3RvcjtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgZG9tVmFsdWVzKSB7XG4gICAgICAgICAgICAgIHNlbGVjdG9yID0ge1xuICAgICAgICAgICAgICAgIHRpdGxlOiB2YWx1ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICBlbmFibGVkOiB0aGlzLmF1dG9jb21wbGV0ZUVuYWJsZWQgJiYgdGhpcy5hdXRvY29tcGxldGVFbmFibGVkID09PSB2YWx1ZS52YWx1ZSA/XG4gICAgICAgICAgICAgICAgICB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IGRvbVNlbGVjdG9yLm9wZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lOiBkb21TZWxlY3Rvci5wcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiB2YWx1ZS5pZCxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIG5ld0J1bmRsZS5zZWxlY3RvcnMucHVzaChzZWxlY3Rvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmdldEF1dG9jb21wbGV0ZUdyb3VwcygpLmZpbmQoZ3JvdXAgPT4gZ3JvdXAuaWRzLmluY2x1ZGVzKG5ld0J1bmRsZS5pZCkpLmNvbXB1dGVkU2VsZWN0b3JzXG4gICAgICAgICAgICAgIC5maW5kKGNvbXAgPT4gY29tcC50aXRsZSA9PT0gbmV3QnVuZGxlLnRpdGxlKS5zZWxlY3RvcnMgPSBuZXdCdW5kbGUuc2VsZWN0b3JzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZmlsdGVyZWRPZ2NBdXRvY29tcGxldGVbYnVuZGxlLmlkXSA9IG5ldyBPYnNlcnZhYmxlPGFueVtdPigpO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9nY0F1dG9jb21wbGV0ZVtidW5kbGUuaWRdID0gdGhpcy5mb3JtLmNvbnRyb2xzWydhdXRvY29tcGxldGUnXS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICBtYXAodmFsdWUgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXR1cm4gZG9tVmFsdWVzPy5maWx0ZXIoKG9wdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlck5vcm1hbGl6ZWQgPSB2YWx1ZSA/IHZhbHVlLnRvTG93ZXJDYXNlKCkubm9ybWFsaXplKCdORkQnKS5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJykgOiAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBmZWF0dXJlTmFtZU5vcm1hbGl6ZWQgPSBvcHRpb24udmFsdWUudG9Mb3dlckNhc2UoKS5ub3JtYWxpemUoJ05GRCcpLnJlcGxhY2UoL1tcXHUwMzAwLVxcdTAzNmZdL2csICcnKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmVhdHVyZU5hbWVOb3JtYWxpemVkLmluY2x1ZGVzKGZpbHRlck5vcm1hbGl6ZWQpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGdldEJ1dHRvblN0eWxlKHBiOiBPZ2NQdXNoQnV0dG9uKToge30ge1xuXG4gIC8vICAgbGV0IHN0eWxlcztcbiAgLy8gICBpZiAocGIuY29sb3IpIHtcbiAgLy8gICAgIHN0eWxlcyA9IHtcbiAgLy8gICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBwYi5lbmFibGVkID8gYHJnYmEoJHtwYi5jb2xvcn0pYCA6IGByZ2JhKDI1NSwyNTUsMjU1LDApYFxuICAvLyAgICAgfTtcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgc3R5bGVzID0ge1xuICAvLyAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHBiLmVuYWJsZWQgPyAnYWNjZW50JzogYHJnYmEoMjU1LDI1NSwyNTUsMClgLFxuICAvLyAgICAgICAnY29sb3InOiBwYi5lbmFibGVkID8gYHJnYmEoMCwwLDAsMC45KWAgOiBgcmdiYSgzMywzMywzMywwLjM4KWBcbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vICAgcmV0dXJuIHN0eWxlcztcbiAgLy8gfVxuXG4gIGdldEJ1dHRvbkNvbG9yKHB1c2hCdXR0b246IE9nY1B1c2hCdXR0b24pOiB7fSB7XG4gICAgbGV0IHN0eWxlcztcbiAgICBpZiAocHVzaEJ1dHRvbi5jb2xvciAmJiBwdXNoQnV0dG9uLmVuYWJsZWQpIHtcbiAgICAgIHN0eWxlcyA9IHtcbiAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiBgcmdiYSgke3B1c2hCdXR0b24uY29sb3J9KWBcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdHlsZXM7XG4gIH1cblxuICBidW5kbGVJc1ZlcnRpY2FsKGJ1bmRsZTogT2djU2VsZWN0b3JCdW5kbGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYnVuZGxlLnZlcnRpY2FsID8gYnVuZGxlLnZlcnRpY2FsIDogZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIG9uUHVzaEJ1dHRvbnNDaGFuZ2VHcm91cCgpIHtcbiAgICB0aGlzLmdldFB1c2hCdXR0b25zR3JvdXBzKCkubWFwKGdyb3VwID0+IGdyb3VwLmVuYWJsZWQgPSBmYWxzZSk7XG4gICAgdGhpcy5nZXRQdXNoQnV0dG9uc0dyb3VwcygpLmZpbmQoZ3JvdXAgPT4gZ3JvdXAgPT09IHRoaXMuY3VycmVudFB1c2hCdXR0b25zR3JvdXApLmVuYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoZWNrYm94ZXNDaGFuZ2VHcm91cCgpIHtcbiAgICB0aGlzLmdldENoZWNrYm94ZXNHcm91cHMoKS5tYXAoZ3JvdXAgPT4gZ3JvdXAuZW5hYmxlZCA9IGZhbHNlKTtcbiAgICB0aGlzLmdldENoZWNrYm94ZXNHcm91cHMoKS5maW5kKGdyb3VwID0+IGdyb3VwID09PSB0aGlzLmN1cnJlbnRDaGVja2JveGVzR3JvdXApLmVuYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBvblJhZGlvQnV0dG9uc0NoYW5nZUdyb3VwKCkge1xuICAgIHRoaXMuZ2V0UmFkaW9CdXR0b25zR3JvdXBzKCkubWFwKGdyb3VwID0+IGdyb3VwLmVuYWJsZWQgPSBmYWxzZSk7XG4gICAgdGhpcy5nZXRSYWRpb0J1dHRvbnNHcm91cHMoKS5maW5kKGdyb3VwID0+IGdyb3VwID09PSB0aGlzLmN1cnJlbnRSYWRpb0J1dHRvbnNHcm91cCkuZW5hYmxlZCA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIG9uU2VsZWN0Q2hhbmdlR3JvdXAoKSB7XG4gICAgdGhpcy5nZXRTZWxlY3RHcm91cHMoKS5tYXAoZ3JvdXAgPT4gZ3JvdXAuZW5hYmxlZCA9IGZhbHNlKTtcbiAgICB0aGlzLmdldFNlbGVjdEdyb3VwcygpLmZpbmQoZ3JvdXAgPT4gZ3JvdXAgPT09IHRoaXMuY3VycmVudFNlbGVjdEdyb3VwKS5lbmFibGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgb25BdXRvY29tcGxldGVDaGFuZ2VHcm91cCgpIHtcbiAgICB0aGlzLmdldEF1dG9jb21wbGV0ZUdyb3VwcygpLm1hcChncm91cCA9PiBncm91cC5lbmFibGVkID0gZmFsc2UpO1xuICAgIHRoaXMuZ2V0QXV0b2NvbXBsZXRlR3JvdXBzKCkuZmluZChncm91cCA9PiBncm91cCA9PT0gdGhpcy5jdXJyZW50QXV0b2NvbXBsZXRlR3JvdXApLmVuYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgb25TZWxlY3Rpb25DaGFuZ2UoY3VycmVudE9nY1NlbGVjdGlvbj8sIHNlbGVjdG9yVHlwZT8pIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5hcHBseUZpbHRlcnNUaW1lb3V0KTtcbiAgICBpZiAoc2VsZWN0b3JUeXBlID09PSAncmFkaW9CdXR0b24nKSB7XG4gICAgICB0aGlzLmVtcHR5UmFkaW9CdXR0b25zKCk7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRPZ2NTZWxlY3Rpb24pIHtcbiAgICAgIGN1cnJlbnRPZ2NTZWxlY3Rpb24uZW5hYmxlZCA9ICFjdXJyZW50T2djU2VsZWN0aW9uLmVuYWJsZWQ7XG4gICAgfVxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICB9LCA3NTApO1xuICB9XG5cbiAgZW1wdHlSYWRpb0J1dHRvbnMoKSB7XG4gICAgdGhpcy5jdXJyZW50UmFkaW9CdXR0b25zR3JvdXAuY29tcHV0ZWRTZWxlY3RvcnMuZm9yRWFjaChjb21wU2VsZWN0ID0+IHtcbiAgICAgIGNvbXBTZWxlY3Quc2VsZWN0b3JzLm1hcChzZWxlY3RvciA9PiBzZWxlY3Rvci5lbmFibGVkID0gZmFsc2UpO1xuXG4gICAgICB0aGlzLmFwcGx5RmlsdGVyc1RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5hcHBseUZpbHRlcnMoKTtcbiAgICAgIH0sIDc1MCk7XG4gICB9KTtcbiAgfVxuXG4gIGVtcHR5U2VsZWN0KCkge1xuICAgIHRoaXMuc2VsZWN0RW5hYmxlZCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGVtcHR5QXV0b2NvbXBsZXRlKCkge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlRW5hYmxlZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmZvcm0uY29udHJvbHNbJ2F1dG9jb21wbGV0ZSddLnNldFZhbHVlKCcnKTtcbiAgICB0aGlzLmZvcm0uY29udHJvbHNbJ2F1dG9jb21wbGV0ZSddLm1hcmtBc1VudG91Y2hlZCgpO1xuICB9XG5cbiAgdG9nZ2xlQWxsU2VsZWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdEFsbFNlbGVjdGVkKSB7XG4gICAgICBjb25zdCBlbmFibGVkcyA9IFtdO1xuICAgICAgdGhpcy5jdXJyZW50U2VsZWN0R3JvdXAuY29tcHV0ZWRTZWxlY3RvcnMuZm9yRWFjaChjb21wU2VsZWN0ID0+IHtcbiAgICAgICAgY29tcFNlbGVjdC5zZWxlY3RvcnM/LmZvckVhY2goc2VsZWN0b3IgPT4ge1xuICAgICAgICAgIGVuYWJsZWRzLnB1c2goc2VsZWN0b3IpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZWwub3B0aW9ucy5mb3JFYWNoKChpdGVtOiBNYXRPcHRpb24pID0+IGl0ZW0uc2VsZWN0KCkpO1xuICAgICAgdGhpcy5zZWxlY3RFbmFibGVkcyA9IGVuYWJsZWRzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbC5vcHRpb25zLmZvckVhY2goKGl0ZW06IE1hdE9wdGlvbikgPT4gaXRlbS5kZXNlbGVjdCgpKTtcbiAgICAgIHRoaXMuc2VsZWN0RW5hYmxlZHMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RPcHRpb25DbGljayh2YWx1ZSwgYnVuZGxlLCBldmVudD8pIHtcbiAgICBpZiAoYnVuZGxlLm11bHRpcGxlKSB7XG4gICAgICBjb25zdCBlbmFibGVkcyA9IHRoaXMuc2VsZWN0RW5hYmxlZHM7XG4gICAgICBsZXQgbmV3U3RhdHVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsLm9wdGlvbnMuZm9yRWFjaCgoaXRlbTogTWF0T3B0aW9uKSA9PiB7XG4gICAgICAgIGlmICghaXRlbS5zZWxlY3RlZCkge1xuICAgICAgICAgIG5ld1N0YXR1cyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2VsZWN0QWxsU2VsZWN0ZWQgPSBuZXdTdGF0dXM7XG4gICAgICBpZiAoZXZlbnQuaXNVc2VySW5wdXQpIHtcbiAgICAgICAgaWYgKGVuYWJsZWRzLmxlbmd0aCkge1xuICAgICAgICAgIGZvciAoY29uc3QgZW5hYmxlZCBvZiBlbmFibGVkcykge1xuICAgICAgICAgICAgaWYgKGVuYWJsZWQudGl0bGUgPT09IHZhbHVlLnRpdGxlKSB7XG4gICAgICAgICAgICAgIGlmIChlbmFibGVkLmVuYWJsZWQgJiYgdmFsdWUuZW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIGVuYWJsZWRzLnNwbGljZShlbmFibGVkcy5pbmRleE9mKGVuYWJsZWQpLCAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVuYWJsZWRzID0gZW5hYmxlZHM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5hYmxlZHMuaW5kZXhPZihlbmFibGVkKSA9PT0gZW5hYmxlZHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICBlbmFibGVkcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RFbmFibGVkcyA9IGVuYWJsZWRzO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5hYmxlZHMucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RFbmFibGVkcyA9IGVuYWJsZWRzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0RW5hYmxlZCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGF1dG9jb21wbGV0ZU9wdGlvbkNsaWNrKHZhbHVlKSB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVFbmFibGVkID0gdmFsdWUudmFsdWU7XG4gIH1cblxuICBkaXNwbGF5Rm4oZG9tKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZG9tID8gZG9tLnZhbHVlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseUZpbHRlcnMoKSB7XG4gICAgbGV0IGZpbHRlclF1ZXJ5U3RyaW5nID0gJyc7XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IFtdO1xuICAgIGNvbnN0IGN1cnJlbnRHcm91cHMgPSBbdGhpcy5jdXJyZW50UHVzaEJ1dHRvbnNHcm91cCwgdGhpcy5jdXJyZW50Q2hlY2tib3hlc0dyb3VwLFxuICAgICAgdGhpcy5jdXJyZW50UmFkaW9CdXR0b25zR3JvdXAsIHRoaXMuY3VycmVudFNlbGVjdEdyb3VwLCB0aGlzLmN1cnJlbnRBdXRvY29tcGxldGVHcm91cF07XG4gICAgZm9yIChjb25zdCBjdXJyZW50R3JvdXAgb2YgY3VycmVudEdyb3Vwcykge1xuICAgICAgaWYgKGN1cnJlbnRHcm91cC5jb21wdXRlZFNlbGVjdG9ycykge1xuICAgICAgICBjdXJyZW50R3JvdXAuY29tcHV0ZWRTZWxlY3RvcnMubWFwKHNlbGVjdG9yQnVuZGxlID0+IHtcbiAgICAgICAgICBjb25zdCBidW5kbGVDb25kaXRpb24gPSBbXTtcbiAgICAgICAgICBzZWxlY3RvckJ1bmRsZS5zZWxlY3RvcnM/LmZpbHRlcihvZ2NTZWxlY3RvciA9PiBvZ2NTZWxlY3Rvci5lbmFibGVkID09PSB0cnVlKVxuICAgICAgICAgIC5mb3JFYWNoKGVuYWJsZWRTZWxlY3RvciA9PiBidW5kbGVDb25kaXRpb24ucHVzaChlbmFibGVkU2VsZWN0b3IuZmlsdGVycykpO1xuICAgICAgICAgIGlmIChidW5kbGVDb25kaXRpb24ubGVuZ3RoID49IDEgKSB7XG4gICAgICAgICAgICBpZiAoYnVuZGxlQ29uZGl0aW9uLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICBjb25kaXRpb25zLnB1c2goYnVuZGxlQ29uZGl0aW9uWzBdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbmRpdGlvbnMucHVzaCh7bG9naWNhbDogc2VsZWN0b3JCdW5kbGUubG9naWNhbCwgZmlsdGVyczogYnVuZGxlQ29uZGl0aW9ufSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuaXNUZW1wb3JhbE9wZXJhdG9yKCkgJiYgdGhpcy5fY3VycmVudEZpbHRlci5hY3RpdmUpIHtcbiAgICAgIGNvbmRpdGlvbnMucHVzaCh0aGlzLmRhdGFzb3VyY2Uub3B0aW9ucy5vZ2NGaWx0ZXJzLmludGVyZmFjZU9nY0ZpbHRlcnNbMF0pO1xuICAgIH1cbiAgICBpZiAoY29uZGl0aW9ucy5sZW5ndGggPj0gMSkge1xuICAgICAgZmlsdGVyUXVlcnlTdHJpbmcgPSB0aGlzLm9nY0ZpbHRlcldyaXRlclxuICAgICAgICAuYnVpbGRGaWx0ZXIoY29uZGl0aW9ucy5sZW5ndGggPT09IDEgP1xuICAgICAgICAgIGNvbmRpdGlvbnNbMF0gOiB7bG9naWNhbDogJ0FuZCcsIGZpbHRlcnM6IGNvbmRpdGlvbnMgfSBhcyBJZ29PZ2NGaWx0ZXJPYmplY3QpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kYXRhc291cmNlLm9wdGlvbnMudHlwZSA9PT0gJ3dtcycpIHtcbiAgICAgIHRoaXMub2djRmlsdGVyU2VydmljZS5maWx0ZXJCeU9nYyh0aGlzLmRhdGFzb3VyY2UgYXMgV01TRGF0YVNvdXJjZSwgZmlsdGVyUXVlcnlTdHJpbmcgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGF0YXNvdXJjZS5vcHRpb25zLnR5cGUgPT09ICd3ZnMnKSB7XG4gICAgICAvLyBUT0RPOiBDaGVjayBob3cgdG8gcHJldmVudCB3ZnMgdG8gcmVmcmVzaCB3aGVuIGZpbHRlciBpY29uIGlzIHB1c2hlZC4uLlxuICAgICAgdGhpcy5kYXRhc291cmNlLm9sLnJlZnJlc2goKTtcbiAgICB9XG4gICAgdGhpcy5kYXRhc291cmNlLnNldE9nY0ZpbHRlcnModGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycywgdHJ1ZSk7XG4gIH1cblxuICBpc01vcmVSZXN1bHRzKGJ1bmRsZSwgdHlwZSkge1xuICAgIGxldCBzZWxlY3RvcnNMZW5ndGggPSAwO1xuICAgIGZvciAoY29uc3Qgc2VsZWN0b3JzIG9mIGJ1bmRsZS5zZWxlY3RvcnMpIHtcbiAgICAgIHNlbGVjdG9yc0xlbmd0aCsrO1xuICAgIH1cbiAgICBjb25zdCBpbmRleCA9IHR5cGUgPT09ICdyYWRpbycgPyB0aGlzLnJhZGlvQnV0dG9uc0luZGV4IDogdGhpcy5jaGVja2JveGVzSW5kZXg7XG4gICAgcmV0dXJuIHNlbGVjdG9yc0xlbmd0aCA+IGluZGV4O1xuICB9XG5cbiAgZGlzcGxheU1vcmVSZXN1bHRzKHR5cGUpIHtcbiAgICB0eXBlID09PSAncmFkaW8nID8gdGhpcy5yYWRpb0J1dHRvbnNJbmRleCArPSA1IDogdGhpcy5jaGVja2JveGVzSW5kZXggKz0gNTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpc0xlc3NSZXN1bHRzKGJ1bmRsZSwgdHlwZSkge1xuICAgIGxldCBzZWxlY3RvcnNMZW5ndGggPSAwO1xuICAgIGZvciAoY29uc3Qgc2VsZWN0b3JzIG9mIGJ1bmRsZS5zZWxlY3RvcnMpIHtcbiAgICAgIHNlbGVjdG9yc0xlbmd0aCsrO1xuICAgIH1cbiAgICBjb25zdCBpbmRleCA9IHR5cGUgPT09ICdyYWRpbycgPyB0aGlzLnJhZGlvQnV0dG9uc0luZGV4IDogdGhpcy5jaGVja2JveGVzSW5kZXg7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUluZGV4ICE9PSBpbmRleCAmJiBzZWxlY3RvcnNMZW5ndGggPiB0aGlzLmJhc2VJbmRleDtcbiAgfVxuXG4gIGRpc3BsYXlMZXNzUmVzdWx0cyh0eXBlKSB7XG4gICAgdHlwZSA9PT0gJ3JhZGlvJyA/IHRoaXMucmFkaW9CdXR0b25zSW5kZXggPSB0aGlzLmJhc2VJbmRleCA6IHRoaXMuY2hlY2tib3hlc0luZGV4ID0gdGhpcy5iYXNlSW5kZXg7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaXNUZW1wb3JhbE9wZXJhdG9yKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmN1cnJlbnRGaWx0ZXI/Lm9wZXJhdG9yPy50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgdGhpcy5vZ2NGaWx0ZXJPcGVyYXRvci5EdXJpbmcudG9Mb3dlckNhc2UoKVxuICAgICk7XG4gIH1cblxuICBjaGFuZ2VQcm9wZXJ0eSh2YWx1ZTogYW55LCBwb3M/OiBudW1iZXIsIHJlZnJlc2hGaWx0ZXIgPSB0cnVlKSB7XG4gICAgY29uc3QgZGV0ZWN0ZWRQcm9wZXJ0eSA9IHRoaXMuZGV0ZWN0UHJvcGVydHkocG9zKTtcbiAgICBpZiAoZGV0ZWN0ZWRQcm9wZXJ0eSkge1xuICAgICAgdGhpcy5kYXRhc291cmNlLm9wdGlvbnMub2djRmlsdGVycy5pbnRlcmZhY2VPZ2NGaWx0ZXJzLmZpbmQoXG4gICAgICAgIGZpbHRlciA9PiBmaWx0ZXIuZmlsdGVyaWQgPT09IHRoaXMuY3VycmVudEZpbHRlci5maWx0ZXJpZFxuICAgICAgKVtkZXRlY3RlZFByb3BlcnR5XSA9IHZhbHVlO1xuXG4gICAgICBpZiAoIHJlZnJlc2hGaWx0ZXIgKSB7XG4gICAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZGV0ZWN0UHJvcGVydHkocG9zPzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuY3VycmVudEZpbHRlci5vcGVyYXRvcikge1xuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTm90RXF1YWxUbzpcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0VxdWFsVG86XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNHcmVhdGVyVGhhbjpcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0dyZWF0ZXJUaGFuT3JFcXVhbFRvOlxuICAgICAgY2FzZSBPZ2NGaWx0ZXJPcGVyYXRvci5Qcm9wZXJ0eUlzTGVzc1RoYW46XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNMZXNzVGhhbk9yRXF1YWxUbzpcbiAgICAgICAgcmV0dXJuICdleHByZXNzaW9uJztcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuUHJvcGVydHlJc0xpa2U6XG4gICAgICAgIHJldHVybiAncGF0dGVybic7XG4gICAgICBjYXNlIE9nY0ZpbHRlck9wZXJhdG9yLlByb3BlcnR5SXNCZXR3ZWVuOlxuICAgICAgICByZXR1cm4gcG9zICYmIHBvcyA9PT0gMVxuICAgICAgICAgID8gJ2xvd2VyQm91bmRhcnknXG4gICAgICAgICAgOiBwb3MgJiYgcG9zID09PSAyXG4gICAgICAgICAgPyAndXBwZXJCb3VuZGFyeSdcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIGNhc2UgT2djRmlsdGVyT3BlcmF0b3IuRHVyaW5nOlxuICAgICAgICByZXR1cm4gcG9zICYmIHBvcyA9PT0gMVxuICAgICAgICAgID8gJ2JlZ2luJ1xuICAgICAgICAgIDogcG9zICYmIHBvcyA9PT0gMlxuICAgICAgICAgID8gJ2VuZCdcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWxlY3RvciBvZiBvZ2NGaWx0ZXJzU2VsZWN0b3JzXCI+XG4gICAgPGRpdiBjbGFzcz1cInB1c2hCdXR0b25Hcm91cHNcIiAqbmdJZj1cInNlbGVjdG9yLnNlbGVjdG9yVHlwZSA9PT0gJ3B1c2hCdXR0b24nXCI+XG4gICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJncm91cHNTZWxlY3RvclwiICpuZ0lmPVwiZ2V0UHVzaEJ1dHRvbnNHcm91cHMoKS5sZW5ndGggPiAxXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHVzaEJ1dHRvbnNHcm91cFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5sZWdlbmQuc2VsZWN0U3R5bGUnIHwgdHJhbnNsYXRlXCIgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCIgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgICAgICBbKHZhbHVlKV09XCJjdXJyZW50UHVzaEJ1dHRvbnNHcm91cFwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHNlbGVjdG9yR3JvdXAgb2YgZ2V0UHVzaEJ1dHRvbnNHcm91cHMoKVwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3Rvckdyb3VwXCI+e3tzZWxlY3Rvckdyb3VwLnRpdGxlfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1bmRsZSBvZiBjdXJyZW50UHVzaEJ1dHRvbnNHcm91cC5jb21wdXRlZFNlbGVjdG9yc1wiPlxuICAgICAgICA8aDQ+e3tidW5kbGUudGl0bGV9fTwvaDQ+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cFxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInB1c2hCdXR0b25zXCIgY2xhc3M9XCJtYXQtdHlwb2dyYXBoeVwiIGFwcGVhcmFuY2U9XCJsZWdhY3lcIiB2ZXJ0aWNhbD17e2J1bmRsZUlzVmVydGljYWwoYnVuZGxlKX19IG11bHRpcGxlPVwidHJ1ZVwiPlxuICAgICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSAqbmdGb3I9XCJsZXQgb2djUHVzaEJ1dHRvbiBvZiBidW5kbGUuc2VsZWN0b3JzXCJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImdldFRvb2xUaXAob2djUHVzaEJ1dHRvbilcIiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCIgbWF0VG9vbHRpcENsYXNzPVwibWF0ZXJpYWwtdG9vbHRpcFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRCdXR0b25Db2xvcihvZ2NQdXNoQnV0dG9uKVwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJvZ2NQdXNoQnV0dG9uLmVuYWJsZWRcIiAoY2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKG9nY1B1c2hCdXR0b24sIHNlbGVjdG9yLnNlbGVjdG9yVHlwZSlcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9nY1B1c2hCdXR0b25cIj57e29nY1B1c2hCdXR0b24udGl0bGV9fVxuICAgICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveEdyb3Vwc1wiICpuZ0lmPVwic2VsZWN0b3Iuc2VsZWN0b3JUeXBlID09PSAnY2hlY2tib3gnXCI+XG4gICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJncm91cHNTZWxlY3RvclwiICpuZ0lmPVwiZ2V0Q2hlY2tib3hlc0dyb3VwcygpLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjaGVja2JveGVzR3JvdXBcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubGF5ZXIubGVnZW5kLnNlbGVjdFN0eWxlJyB8IHRyYW5zbGF0ZVwiIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgICAgICAgWyh2YWx1ZSldPVwiY3VycmVudENoZWNrYm94ZXNHcm91cFwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHNlbGVjdG9yR3JvdXAgb2YgZ2V0Q2hlY2tib3hlc0dyb3VwcygpXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdG9yR3JvdXBcIj57e3NlbGVjdG9yR3JvdXAudGl0bGV9fVxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnVuZGxlIG9mIGN1cnJlbnRDaGVja2JveGVzR3JvdXAuY29tcHV0ZWRTZWxlY3RvcnNcIj5cbiAgICAgICAgPGg0Pnt7YnVuZGxlLnRpdGxlfX08L2g0PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hlcyBtYXQtdHlwb2dyYXBoeVwiPlxuICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nRm9yPVwibGV0IG9nY0NoZWNrYm94IG9mIGJ1bmRsZS5zZWxlY3RvcnNcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZ2V0VG9vbFRpcChvZ2NDaGVja2JveClcIiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCIgIG1hdFRvb2x0aXBDbGFzcz1cIm1hdGVyaWFsLXRvb2x0aXBcIlxuICAgICAgICAgICAgW2NoZWNrZWRdPVwib2djQ2hlY2tib3guZW5hYmxlZFwiIChjaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2Uob2djQ2hlY2tib3gsIHNlbGVjdG9yLnNlbGVjdG9yVHlwZSlcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9nY0NoZWNrYm94XCI+e3tvZ2NDaGVja2JveC50aXRsZX19XG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8cCAqbmdJZj1cImlzTGVzc1Jlc3VsdHMoYnVuZGxlLCAnY2hlY2tib3gnKSB8fCBpc01vcmVSZXN1bHRzKGJ1bmRsZSwgJ2NoZWNrYm94JylcIj5cbiAgICAgICAgICA8dSAqbmdJZj1cImlzTGVzc1Jlc3VsdHMoYnVuZGxlLCAnY2hlY2tib3gnKVwiXG4gICAgICAgICAgICBjbGFzcz1cImxlc3NSZXN1bHRzIG1hdC10eXBvZ3JhcGh5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJkaXNwbGF5TGVzc1Jlc3VsdHMoJ2NoZWNrYm94JylcIj57eyAnaWdvLmdlby5maWx0ZXIuZGlzcGxheUxlc3NSZXN1bHRzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvdT5cbiAgICAgICAgICA8dSAqbmdJZj1cImlzTW9yZVJlc3VsdHMoYnVuZGxlLCAnY2hlY2tib3gnKVwiXG4gICAgICAgICAgICBjbGFzcz1cIm1vcmVSZXN1bHRzIG1hdC10eXBvZ3JhcGh5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJkaXNwbGF5TW9yZVJlc3VsdHMoJ2NoZWNrYm94JylcIj57eyAnaWdvLmdlby5maWx0ZXIuZGlzcGxheU1vcmVSZXN1bHRzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvdT5cbiAgICAgICAgPC9wPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicmFkaW9CdXR0b25Hcm91cHNcIiAqbmdJZj1cInNlbGVjdG9yLnNlbGVjdG9yVHlwZSA9PT0gJ3JhZGlvQnV0dG9uJ1wiPlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBzU2VsZWN0b3JcIiAqbmdJZj1cImdldFJhZGlvQnV0dG9uc0dyb3VwcygpLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyYWRpb0J1dHRvbnNHcm91cFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5sZWdlbmQuc2VsZWN0U3R5bGUnIHwgdHJhbnNsYXRlXCIgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCIgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgICAgICBbKHZhbHVlKV09XCJjdXJyZW50UmFkaW9CdXR0b25zR3JvdXBcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBzZWxlY3Rvckdyb3VwIG9mIGdldFJhZGlvQnV0dG9uc0dyb3VwcygpXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlbGVjdG9yR3JvdXBcIj57e3NlbGVjdG9yR3JvdXAudGl0bGV9fVxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnVuZGxlIG9mIGN1cnJlbnRSYWRpb0J1dHRvbnNHcm91cC5jb21wdXRlZFNlbGVjdG9yc1wiPlxuICAgICAgICA8aDQ+e3tidW5kbGUudGl0bGV9fTwvaDQ+XG4gICAgICAgIDxtYXQtcmFkaW8tZ3JvdXBcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyYWRpb0J1dHRvbnNcIiBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCI+XG4gICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gKm5nSWY9XCJidW5kbGUudW5maWx0ZXJlZFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5maWx0ZXIucmVzZXRGaWx0ZXJzJyB8IHRyYW5zbGF0ZVwiIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIiAgbWF0VG9vbHRpcENsYXNzPVwibWF0ZXJpYWwtdG9vbHRpcFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cImVtcHR5UmFkaW9CdXR0b25zKClcIj57eyAnaWdvLmdlby5maWx0ZXIucmVzZXRGaWx0ZXJzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiAqbmdGb3I9XCJsZXQgb2djUmFkaW9CdXR0b24gb2YgYnVuZGxlLnNlbGVjdG9yc1wiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJnZXRUb29sVGlwKG9nY1JhZGlvQnV0dG9uKVwiIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIiAgbWF0VG9vbHRpcENsYXNzPVwibWF0ZXJpYWwtdG9vbHRpcFwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJvZ2NSYWRpb0J1dHRvbi5lbmFibGVkXCIgKGNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZShvZ2NSYWRpb0J1dHRvbiwgc2VsZWN0b3Iuc2VsZWN0b3JUeXBlKVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwib2djUmFkaW9CdXR0b25cIj57e29nY1JhZGlvQnV0dG9uLnRpdGxlfX1cbiAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgICAgICAgPHAgKm5nSWY9XCJpc0xlc3NSZXN1bHRzKGJ1bmRsZSwgJ3JhZGlvJykgfHwgaXNNb3JlUmVzdWx0cyhidW5kbGUsICdyYWRpbycpXCI+XG4gICAgICAgICAgICA8dSAqbmdJZj1cImlzTGVzc1Jlc3VsdHMoYnVuZGxlLCAncmFkaW8nKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibGVzc1Jlc3VsdHMgbWF0LXR5cG9ncmFwaHlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGlzcGxheUxlc3NSZXN1bHRzKCdyYWRpbycpXCI+e3sgJ2lnby5nZW8uZmlsdGVyLmRpc3BsYXlMZXNzUmVzdWx0cycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvdT5cbiAgICAgICAgICAgIDx1ICpuZ0lmPVwiaXNNb3JlUmVzdWx0cyhidW5kbGUsICdyYWRpbycpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtb3JlUmVzdWx0cyBtYXQtdHlwb2dyYXBoeVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkaXNwbGF5TW9yZVJlc3VsdHMoJ3JhZGlvJylcIj57eyAnaWdvLmdlby5maWx0ZXIuZGlzcGxheU1vcmVSZXN1bHRzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC91PlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RHcm91cHNcIiAqbmdJZj1cInNlbGVjdG9yLnNlbGVjdG9yVHlwZSA9PT0gJ3NlbGVjdCdcIj5cbiAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgICAgPGRpdiBjbGFzcz1cImdyb3Vwc1NlbGVjdG9yXCIgKm5nSWY9XCJnZXRTZWxlY3RHcm91cHMoKS5sZW5ndGggPiAxXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0R3JvdXBcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubGF5ZXIubGVnZW5kLnNlbGVjdFN0eWxlJyB8IHRyYW5zbGF0ZVwiIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiIG1hdFRvb2x0aXBTaG93RGVsYXk9XCI1MDBcIlxuICAgICAgICAgICAgWyh2YWx1ZSldPVwiY3VycmVudFNlbGVjdEdyb3VwXCI+XG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgc2VsZWN0b3JHcm91cCBvZiBnZXRTZWxlY3RHcm91cHMoKVwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJzZWxlY3Rvckdyb3VwXCI+e3tzZWxlY3Rvckdyb3VwLnRpdGxlfX1cbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1bmRsZSBvZiBjdXJyZW50U2VsZWN0R3JvdXAuY29tcHV0ZWRTZWxlY3RvcnNcIj5cbiAgICAgICAgPGg0Pnt7YnVuZGxlLnRpdGxlfX08L2g0PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBzU2VsZWN0b3JcIj5cbiAgICAgICAgICA8bWF0LWJ1dHRvbiAqbmdJZj1cImJ1bmRsZS51bmZpbHRlcmVkICYmICFidW5kbGUubXVsdGlwbGVcIlxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZmlsdGVyLnJlc2V0RmlsdGVycycgfCB0cmFuc2xhdGVcIiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCIgIG1hdFRvb2x0aXBDbGFzcz1cIm1hdGVyaWFsLXRvb2x0aXBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImVtcHR5U2VsZWN0KClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZmlsdGVyLXJlbW92ZVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPC9tYXQtYnV0dG9uPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBbc3R5bGUud2lkdGguJV09XCJidW5kbGUud2lkdGggPyBidW5kbGUud2lkdGggOiB1bmRlZmluZWRcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJidW5kbGUubXVsdGlwbGU7IGVsc2Ugbm90TXVsdGlcIj5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgICAjc2VsZWN0aW9uIFttdWx0aXBsZV09XCJidW5kbGUubXVsdGlwbGVcIiBbcGxhY2Vob2xkZXJdPVwiYnVuZGxlLnRpdGxlXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0TXVsdGlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hlcyBtYXQtdHlwb2dyYXBoeVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAqbmdJZj1cImJ1bmRsZS5tdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0QWxsU2VsZWN0ZWRcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVBbGxTZWxlY3Rpb24oKVwiPlRvdXNcbiAgICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvZ2NTZWxlY3Qgb2YgYnVuZGxlLnNlbGVjdG9yc1wiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJnZXRUb29sVGlwKG9nY1NlbGVjdClcIiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwRGVsYXk9XCI1MDBcIiBtYXRUb29sdGlwQ2xhc3M9XCJtYXRlcmlhbC10b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgIChvblNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3RPcHRpb25DbGljaygkZXZlbnQuc291cmNlLnZhbHVlLCBidW5kbGUsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9nY1NlbGVjdFwiPnt7b2djU2VsZWN0LnRpdGxlfX1cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub3RNdWx0aT5cbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3RcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiYnVuZGxlLnRpdGxlXCIgZm9ybUNvbnRyb2xOYW1lPVwic2VsZWN0XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9nY1NlbGVjdCBvZiBidW5kbGUuc2VsZWN0b3JzXCJcbiAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cImdldFRvb2xUaXAob2djU2VsZWN0KVwiIHRvb2x0aXAtcG9zaXRpb249XCJiZWxvd1wiIG1hdFRvb2x0aXBEZWxheT1cIjUwMFwiIG1hdFRvb2x0aXBDbGFzcz1cIm1hdGVyaWFsLXRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9nY1NlbGVjdFwiIChvblNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3RPcHRpb25DbGljaygkZXZlbnQuc291cmNlLnZhbHVlLCBidW5kbGUpXCI+e3tvZ2NTZWxlY3QudGl0bGV9fVxuICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImF1dG9jb21wbGV0ZUdyb3Vwc1wiICpuZ0lmPVwic2VsZWN0b3Iuc2VsZWN0b3JUeXBlID09PSAnYXV0b2NvbXBsZXRlJ1wiPlxuICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBzU2VsZWN0b3JcIiAqbmdJZj1cImdldEF1dG9jb21wbGV0ZUdyb3VwcygpLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhdXRvY29tcGxldGVHcm91cFwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5sYXllci5sZWdlbmQuc2VsZWN0U3R5bGUnIHwgdHJhbnNsYXRlXCIgdG9vbHRpcC1wb3NpdGlvbj1cImJlbG93XCIgbWF0VG9vbHRpcFNob3dEZWxheT1cIjUwMFwiXG4gICAgICAgICAgICBbKHZhbHVlKV09XCJjdXJyZW50QXV0b2NvbXBsZXRlR3JvdXBcIj5cbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBhdXRvY29tcGxldGVHcm91cCBvZiBnZXRBdXRvY29tcGxldGVHcm91cHMoKVwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJhdXRvY29tcGxldGVHcm91cFwiPnt7YXV0b2NvbXBsZXRlR3JvdXAudGl0bGV9fVxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnVuZGxlIG9mIGN1cnJlbnRBdXRvY29tcGxldGVHcm91cC5jb21wdXRlZFNlbGVjdG9yc1wiPlxuICAgICAgICA8aDQ+e3tidW5kbGUudGl0bGV9fTwvaDQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncm91cHNTZWxlY3RvclwiPlxuICAgICAgICAgIDxtYXQtYnV0dG9uICpuZ0lmPVwiYnVuZGxlLnVuZmlsdGVyZWRcIlxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8uZmlsdGVyLnJlc2V0RmlsdGVycycgfCB0cmFuc2xhdGVcIiB0b29sdGlwLXBvc2l0aW9uPVwiYmVsb3dcIiBtYXRUb29sdGlwU2hvd0RlbGF5PVwiNTAwXCIgIG1hdFRvb2x0aXBDbGFzcz1cIm1hdGVyaWFsLXRvb2x0aXBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImVtcHR5QXV0b2NvbXBsZXRlKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZmlsdGVyLXJlbW92ZVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPC9tYXQtYnV0dG9uPlxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImZpbHRlcmVkT2djQXV0b2NvbXBsZXRlW2J1bmRsZS5pZF1cIiBbc3R5bGUud2lkdGguJV09XCJidW5kbGUud2lkdGggPyBidW5kbGUud2lkdGggOiB1bmRlZmluZWRcIj5cbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwidGV4dFwiIGZvcm1Db250cm9sTmFtZT1cImF1dG9jb21wbGV0ZVwiICNhdXRvY29tcGxldGUgY2xhc3M9XCJhdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiBbcGxhY2Vob2xkZXJdPVwiYnVuZGxlLnRpdGxlXCI+XG4gICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgI2F1dG9jb21wbGV0ZSAob3B0aW9uU2VsZWN0ZWQpPVwiYXV0b2NvbXBsZXRlT3B0aW9uQ2xpY2soJGV2ZW50Lm9wdGlvbi52YWx1ZSlcIlxuICAgICAgICAgICAgICBbZGlzcGxheVdpdGhdPVwiZGlzcGxheUZuXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9nY0F1dG9jb21wbGV0ZSBvZiBmaWx0ZXJlZE9nY0F1dG9jb21wbGV0ZVtidW5kbGUuaWRdIHwgYXN5bmNcIiBbdmFsdWVdPVwib2djQXV0b2NvbXBsZXRlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBvZ2NBdXRvY29tcGxldGUudmFsdWUgfX1cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZm9ybT5cblxuPGRpdiAqbmdJZj1cImlzVGVtcG9yYWxPcGVyYXRvcigpXCI+XG4gIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICA8aDQgKm5nSWY9XCIhY3VycmVudEZpbHRlci50aXRsZVwiPnt7ICdpZ28uZ2VvLmZpbHRlci5yZXBvcnRpbmdEYXRlJyB8IHRyYW5zbGF0ZSB9fTwvaDQ+XG4gIDxoNCAqbmdJZj1cImN1cnJlbnRGaWx0ZXIudGl0bGVcIj57eyBjdXJyZW50RmlsdGVyLnRpdGxlIH19PC9oND5cbiAgPGlnby1vZ2MtZmlsdGVyLXRpbWVcbiAgICBbKGRhdGFzb3VyY2UpXT1cImRhdGFzb3VyY2VcIlxuICAgIFsoY3VycmVudEZpbHRlcildPVwiY3VycmVudEZpbHRlclwiXG4gICAgKGNoYW5nZVByb3BlcnR5KT1cImNoYW5nZVByb3BlcnR5KCRldmVudC52YWx1ZSwgJGV2ZW50LnBvcylcIj5cbiAgPC9pZ28tb2djLWZpbHRlci10aW1lPlxuPC9kaXY+Il19