@igo2/geo 1.13.4 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (467) hide show
  1. package/assets/icons/cross_black_18px.svg +88 -88
  2. package/assets/icons/place_blue_36px.svg +55 -55
  3. package/assets/icons/place_green_36px.svg +55 -55
  4. package/assets/icons/place_red_36px.svg +55 -55
  5. package/assets/icons/place_yellow_36px.svg +55 -55
  6. package/esm2020/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +2 -2
  7. package/esm2020/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +2 -2
  8. package/esm2020/lib/catalog/catalog-browser/catalog-browser.component.mjs +5 -2
  9. package/esm2020/lib/catalog/catalog-browser/catalog-browser.module.mjs +1 -1
  10. package/esm2020/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +2 -2
  11. package/esm2020/lib/catalog/catalog-library/catalog-library-item.component.mjs +2 -2
  12. package/esm2020/lib/catalog/catalog-library/catalog-library.component.mjs +2 -2
  13. package/esm2020/lib/catalog/catalog-library/catalog-library.module.mjs +1 -1
  14. package/esm2020/lib/catalog/catalog.module.mjs +1 -1
  15. package/esm2020/lib/catalog/index.mjs +1 -1
  16. package/esm2020/lib/catalog/shared/catalog.abstract.mjs +1 -1
  17. package/esm2020/lib/catalog/shared/catalog.enum.mjs +1 -1
  18. package/esm2020/lib/catalog/shared/catalog.interface.mjs +1 -1
  19. package/esm2020/lib/catalog/shared/catalog.service.mjs +1 -1
  20. package/esm2020/lib/catalog/shared/index.mjs +1 -1
  21. package/esm2020/lib/datasource/datasource.module.mjs +1 -1
  22. package/esm2020/lib/datasource/index.mjs +1 -1
  23. package/esm2020/lib/datasource/shared/capabilities.service.mjs +1 -1
  24. package/esm2020/lib/datasource/shared/datasource.service.mjs +1 -1
  25. package/esm2020/lib/datasource/shared/datasources/any-datasource.interface.mjs +1 -1
  26. package/esm2020/lib/datasource/shared/datasources/any-datasource.mjs +1 -1
  27. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +1 -1
  28. package/esm2020/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +1 -1
  29. package/esm2020/lib/datasource/shared/datasources/carto-datasource.interface.mjs +1 -1
  30. package/esm2020/lib/datasource/shared/datasources/carto-datasource.mjs +1 -1
  31. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +1 -1
  32. package/esm2020/lib/datasource/shared/datasources/cluster-datasource.mjs +1 -1
  33. package/esm2020/lib/datasource/shared/datasources/data.service.mjs +1 -1
  34. package/esm2020/lib/datasource/shared/datasources/datasource.interface.mjs +1 -1
  35. package/esm2020/lib/datasource/shared/datasources/datasource.mjs +1 -1
  36. package/esm2020/lib/datasource/shared/datasources/feature-datasource.interface.mjs +1 -1
  37. package/esm2020/lib/datasource/shared/datasources/feature-datasource.mjs +1 -1
  38. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +1 -1
  39. package/esm2020/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +1 -1
  40. package/esm2020/lib/datasource/shared/datasources/index.mjs +1 -1
  41. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +1 -1
  42. package/esm2020/lib/datasource/shared/datasources/mvt-datasource.mjs +1 -1
  43. package/esm2020/lib/datasource/shared/datasources/osm-datasource.interface.mjs +1 -1
  44. package/esm2020/lib/datasource/shared/datasources/osm-datasource.mjs +1 -1
  45. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +1 -1
  46. package/esm2020/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +1 -1
  47. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +1 -1
  48. package/esm2020/lib/datasource/shared/datasources/tiledebug-datasource.mjs +1 -1
  49. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +1 -1
  50. package/esm2020/lib/datasource/shared/datasources/websocket-datasource.mjs +1 -1
  51. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +1 -1
  52. package/esm2020/lib/datasource/shared/datasources/wfs-datasource.mjs +1 -1
  53. package/esm2020/lib/datasource/shared/datasources/wfs.service.mjs +1 -1
  54. package/esm2020/lib/datasource/shared/datasources/wms-datasource.interface.mjs +1 -1
  55. package/esm2020/lib/datasource/shared/datasources/wms-datasource.mjs +1 -1
  56. package/esm2020/lib/datasource/shared/datasources/wms-wfs.utils.mjs +1 -1
  57. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +1 -1
  58. package/esm2020/lib/datasource/shared/datasources/wmts-datasource.mjs +1 -1
  59. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +1 -1
  60. package/esm2020/lib/datasource/shared/datasources/xyz-datasource.mjs +1 -1
  61. package/esm2020/lib/datasource/shared/index.mjs +1 -1
  62. package/esm2020/lib/datasource/shared/options/index.mjs +1 -1
  63. package/esm2020/lib/datasource/shared/options/options-api.interface.mjs +1 -1
  64. package/esm2020/lib/datasource/shared/options/options-api.providers.mjs +1 -1
  65. package/esm2020/lib/datasource/shared/options/options-api.service.mjs +1 -1
  66. package/esm2020/lib/datasource/shared/options/options.service.mjs +1 -1
  67. package/esm2020/lib/datasource/utils/esri-style-generator.mjs +1 -1
  68. package/esm2020/lib/datasource/utils/index.mjs +1 -1
  69. package/esm2020/lib/datasource/utils/tilegrid.mjs +1 -1
  70. package/esm2020/lib/directions/directions-buttons/directions-buttons.component.mjs +2 -2
  71. package/esm2020/lib/directions/directions-buttons/index.mjs +1 -1
  72. package/esm2020/lib/directions/directions-inputs/directions-inputs.component.mjs +2 -2
  73. package/esm2020/lib/directions/directions-inputs/index.mjs +1 -1
  74. package/esm2020/lib/directions/directions-results/directions-results.component.mjs +2 -2
  75. package/esm2020/lib/directions/directions-results/index.mjs +1 -1
  76. package/esm2020/lib/directions/directions-sources/directions-source.interface.mjs +1 -1
  77. package/esm2020/lib/directions/directions-sources/directions-source.mjs +1 -1
  78. package/esm2020/lib/directions/directions-sources/directions-source.provider.mjs +1 -1
  79. package/esm2020/lib/directions/directions-sources/index.mjs +1 -1
  80. package/esm2020/lib/directions/directions-sources/osrm-directions-source.mjs +1 -1
  81. package/esm2020/lib/directions/directions.component.mjs +2 -2
  82. package/esm2020/lib/directions/directions.module.mjs +1 -1
  83. package/esm2020/lib/directions/index.mjs +1 -1
  84. package/esm2020/lib/directions/shared/directions-source.service.mjs +1 -1
  85. package/esm2020/lib/directions/shared/directions.enum.mjs +1 -1
  86. package/esm2020/lib/directions/shared/directions.interface.mjs +1 -1
  87. package/esm2020/lib/directions/shared/directions.service.mjs +1 -1
  88. package/esm2020/lib/directions/shared/directions.utils.mjs +1 -1
  89. package/esm2020/lib/directions/shared/index.mjs +1 -1
  90. package/esm2020/lib/directions/shared/store.mjs +1 -1
  91. package/esm2020/lib/download/download-button/download-button.component.mjs +2 -2
  92. package/esm2020/lib/download/download-button/index.mjs +1 -1
  93. package/esm2020/lib/download/download.module.mjs +1 -1
  94. package/esm2020/lib/download/index.mjs +1 -1
  95. package/esm2020/lib/download/shared/download.interface.mjs +1 -1
  96. package/esm2020/lib/download/shared/download.service.mjs +1 -1
  97. package/esm2020/lib/download/shared/index.mjs +1 -1
  98. package/esm2020/lib/draw/draw/draw-layer-popup.component.mjs +2 -2
  99. package/esm2020/lib/draw/draw/draw-popup.component.mjs +562 -32
  100. package/esm2020/lib/draw/draw/draw-shorcuts.component.mjs +2 -2
  101. package/esm2020/lib/draw/draw/draw.component.mjs +358 -130
  102. package/esm2020/lib/draw/draw/draw.module.mjs +12 -4
  103. package/esm2020/lib/draw/drawingTool.module.mjs +1 -1
  104. package/esm2020/lib/draw/index.mjs +1 -1
  105. package/esm2020/lib/draw/shared/draw-icon.service.mjs +1 -1
  106. package/esm2020/lib/draw/shared/draw-style.service.mjs +2 -2
  107. package/esm2020/lib/draw/shared/draw.enum.mjs +14 -1
  108. package/esm2020/lib/draw/shared/draw.interface.mjs +1 -1
  109. package/esm2020/lib/draw/shared/draw.utils.mjs +19 -1
  110. package/esm2020/lib/draw/shared/index.mjs +1 -1
  111. package/esm2020/lib/feature/feature-details/feature-details.component.mjs +2 -2
  112. package/esm2020/lib/feature/feature-details/feature-details.directive.mjs +1 -1
  113. package/esm2020/lib/feature/feature-details/feature-details.module.mjs +1 -1
  114. package/esm2020/lib/feature/feature-form/feature-form.component.mjs +2 -2
  115. package/esm2020/lib/feature/feature-form/feature-form.module.mjs +1 -1
  116. package/esm2020/lib/feature/feature.module.mjs +1 -1
  117. package/esm2020/lib/feature/index.mjs +1 -1
  118. package/esm2020/lib/feature/shared/feature.enums.mjs +1 -1
  119. package/esm2020/lib/feature/shared/feature.interfaces.mjs +1 -1
  120. package/esm2020/lib/feature/shared/feature.utils.mjs +1 -1
  121. package/esm2020/lib/feature/shared/index.mjs +1 -1
  122. package/esm2020/lib/feature/shared/store.mjs +1 -1
  123. package/esm2020/lib/feature/shared/strategies/in-map-extent.mjs +1 -1
  124. package/esm2020/lib/feature/shared/strategies/in-map-resolution.mjs +1 -1
  125. package/esm2020/lib/feature/shared/strategies/index.mjs +1 -1
  126. package/esm2020/lib/feature/shared/strategies/loading-layer.mjs +1 -1
  127. package/esm2020/lib/feature/shared/strategies/loading.mjs +1 -1
  128. package/esm2020/lib/feature/shared/strategies/selection.mjs +1 -1
  129. package/esm2020/lib/feature/shared/strategies.utils.mjs +1 -1
  130. package/esm2020/lib/filter/filter.module.mjs +1 -1
  131. package/esm2020/lib/filter/index.mjs +1 -1
  132. package/esm2020/lib/filter/ogc-filter-button/index.mjs +1 -1
  133. package/esm2020/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +2 -2
  134. package/esm2020/lib/filter/ogc-filter-form/index.mjs +1 -1
  135. package/esm2020/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +2 -2
  136. package/esm2020/lib/filter/ogc-filter-selection/index.mjs +1 -1
  137. package/esm2020/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +2 -2
  138. package/esm2020/lib/filter/ogc-filter-time/index.mjs +1 -1
  139. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +2 -2
  140. package/esm2020/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +2 -2
  141. package/esm2020/lib/filter/ogc-filterable-form/index.mjs +1 -1
  142. package/esm2020/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +2 -2
  143. package/esm2020/lib/filter/ogc-filterable-item/index.mjs +1 -1
  144. package/esm2020/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +2 -2
  145. package/esm2020/lib/filter/ogc-filterable-list/index.mjs +1 -1
  146. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +1 -1
  147. package/esm2020/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +2 -2
  148. package/esm2020/lib/filter/shared/filterable-datasource.pipe.mjs +1 -1
  149. package/esm2020/lib/filter/shared/index.mjs +1 -1
  150. package/esm2020/lib/filter/shared/ogc-filter-time.service.mjs +1 -1
  151. package/esm2020/lib/filter/shared/ogc-filter.enum.mjs +1 -1
  152. package/esm2020/lib/filter/shared/ogc-filter.interface.mjs +1 -1
  153. package/esm2020/lib/filter/shared/ogc-filter.mjs +1 -1
  154. package/esm2020/lib/filter/shared/ogc-filter.service.mjs +1 -1
  155. package/esm2020/lib/filter/shared/spatial-filter.enum.mjs +1 -1
  156. package/esm2020/lib/filter/shared/spatial-filter.interface.mjs +1 -1
  157. package/esm2020/lib/filter/shared/spatial-filter.service.mjs +1 -1
  158. package/esm2020/lib/filter/shared/time-filter.enum.mjs +1 -1
  159. package/esm2020/lib/filter/shared/time-filter.interface.mjs +1 -1
  160. package/esm2020/lib/filter/shared/time-filter.service.mjs +1 -1
  161. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/index.mjs +1 -1
  162. package/esm2020/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +21 -8
  163. package/esm2020/lib/filter/spatial-filter/spatial-filter-list/index.mjs +1 -1
  164. package/esm2020/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +2 -2
  165. package/esm2020/lib/filter/spatial-filter/spatial-filter-type/index.mjs +1 -1
  166. package/esm2020/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +2 -2
  167. package/esm2020/lib/filter/time-filter-button/index.mjs +1 -1
  168. package/esm2020/lib/filter/time-filter-button/time-filter-button.component.mjs +2 -2
  169. package/esm2020/lib/filter/time-filter-form/index.mjs +1 -1
  170. package/esm2020/lib/filter/time-filter-form/time-filter-form.component.mjs +2 -2
  171. package/esm2020/lib/filter/time-filter-item/index.mjs +1 -1
  172. package/esm2020/lib/filter/time-filter-item/time-filter-item.component.mjs +2 -2
  173. package/esm2020/lib/filter/time-filter-list/index.mjs +1 -1
  174. package/esm2020/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +1 -1
  175. package/esm2020/lib/filter/time-filter-list/time-filter-list.component.mjs +2 -2
  176. package/esm2020/lib/geo.module.mjs +1 -1
  177. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +12 -2
  178. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +2 -2
  179. package/esm2020/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +1 -1
  180. package/esm2020/lib/geometry/geometry.module.mjs +1 -1
  181. package/esm2020/lib/geometry/index.mjs +1 -1
  182. package/esm2020/lib/geometry/shared/controls/draw.mjs +53 -10
  183. package/esm2020/lib/geometry/shared/controls/index.mjs +1 -1
  184. package/esm2020/lib/geometry/shared/controls/modify.mjs +1 -1
  185. package/esm2020/lib/geometry/shared/controls/slice.mjs +1 -1
  186. package/esm2020/lib/geometry/shared/geometry.errors.mjs +1 -1
  187. package/esm2020/lib/geometry/shared/geometry.interfaces.mjs +1 -1
  188. package/esm2020/lib/geometry/shared/geometry.utils.mjs +1 -1
  189. package/esm2020/lib/geometry/shared/index.mjs +1 -1
  190. package/esm2020/lib/import-export/export-button/export-button.component.mjs +2 -2
  191. package/esm2020/lib/import-export/export-button/index.mjs +1 -1
  192. package/esm2020/lib/import-export/import-export/import-export.component.mjs +2 -2
  193. package/esm2020/lib/import-export/import-export/index.mjs +1 -1
  194. package/esm2020/lib/import-export/import-export.module.mjs +1 -1
  195. package/esm2020/lib/import-export/index.mjs +1 -1
  196. package/esm2020/lib/import-export/shared/drop-geo-file.directive.mjs +1 -1
  197. package/esm2020/lib/import-export/shared/export.errors.mjs +1 -1
  198. package/esm2020/lib/import-export/shared/export.interface.mjs +1 -1
  199. package/esm2020/lib/import-export/shared/export.service.mjs +2 -2
  200. package/esm2020/lib/import-export/shared/export.type.mjs +1 -1
  201. package/esm2020/lib/import-export/shared/export.utils.mjs +1 -1
  202. package/esm2020/lib/import-export/shared/import.errors.mjs +1 -1
  203. package/esm2020/lib/import-export/shared/import.interface.mjs +1 -1
  204. package/esm2020/lib/import-export/shared/import.service.mjs +26 -6
  205. package/esm2020/lib/import-export/shared/import.utils.mjs +1 -1
  206. package/esm2020/lib/import-export/shared/index.mjs +1 -1
  207. package/esm2020/lib/import-export/style-list/index.mjs +1 -1
  208. package/esm2020/lib/import-export/style-list/style-list.interface.mjs +1 -1
  209. package/esm2020/lib/import-export/style-list/style-list.module.mjs +1 -1
  210. package/esm2020/lib/import-export/style-list/style-list.provider.mjs +1 -1
  211. package/esm2020/lib/import-export/style-list/style-list.service.mjs +1 -1
  212. package/esm2020/lib/layer/index.mjs +1 -1
  213. package/esm2020/lib/layer/layer-item/index.mjs +1 -1
  214. package/esm2020/lib/layer/layer-item/layer-item.component.mjs +2 -2
  215. package/esm2020/lib/layer/layer-legend/index.mjs +1 -1
  216. package/esm2020/lib/layer/layer-legend/layer-legend.component.mjs +2 -2
  217. package/esm2020/lib/layer/layer-legend-item/index.mjs +1 -1
  218. package/esm2020/lib/layer/layer-legend-item/layer-legend-item.component.mjs +2 -2
  219. package/esm2020/lib/layer/layer-legend-list/index.mjs +1 -1
  220. package/esm2020/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +1 -1
  221. package/esm2020/lib/layer/layer-legend-list/layer-legend-list.component.mjs +2 -2
  222. package/esm2020/lib/layer/layer-list/index.mjs +1 -1
  223. package/esm2020/lib/layer/layer-list/layer-list-binding.directive.mjs +1 -1
  224. package/esm2020/lib/layer/layer-list/layer-list.component.mjs +2 -2
  225. package/esm2020/lib/layer/layer-list/layer-list.enum.mjs +1 -1
  226. package/esm2020/lib/layer/layer-list-tool/index.mjs +1 -1
  227. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.component.mjs +2 -2
  228. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.enum.mjs +1 -1
  229. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +1 -1
  230. package/esm2020/lib/layer/layer-list-tool/layer-list-tool.service.mjs +1 -1
  231. package/esm2020/lib/layer/layer.module.mjs +1 -1
  232. package/esm2020/lib/layer/shared/clusterParam.mjs +1 -1
  233. package/esm2020/lib/layer/shared/index.mjs +1 -1
  234. package/esm2020/lib/layer/shared/layer.enums.mjs +1 -1
  235. package/esm2020/lib/layer/shared/layer.service.mjs +1 -1
  236. package/esm2020/lib/layer/shared/layers/any-layer.interface.mjs +1 -1
  237. package/esm2020/lib/layer/shared/layers/any-layer.mjs +1 -1
  238. package/esm2020/lib/layer/shared/layers/image-layer.interface.mjs +1 -1
  239. package/esm2020/lib/layer/shared/layers/image-layer.mjs +1 -1
  240. package/esm2020/lib/layer/shared/layers/index.mjs +1 -1
  241. package/esm2020/lib/layer/shared/layers/layer.interface.mjs +1 -1
  242. package/esm2020/lib/layer/shared/layers/layer.mjs +1 -1
  243. package/esm2020/lib/layer/shared/layers/tile-layer.interface.mjs +1 -1
  244. package/esm2020/lib/layer/shared/layers/tile-layer.mjs +1 -1
  245. package/esm2020/lib/layer/shared/layers/vector-layer.interface.mjs +1 -1
  246. package/esm2020/lib/layer/shared/layers/vector-layer.mjs +1 -1
  247. package/esm2020/lib/layer/shared/layers/vectortile-layer.interface.mjs +1 -1
  248. package/esm2020/lib/layer/shared/layers/vectortile-layer.mjs +1 -1
  249. package/esm2020/lib/layer/shared/style.service.mjs +1 -1
  250. package/esm2020/lib/layer/shared/vector-style.interface.mjs +1 -1
  251. package/esm2020/lib/layer/style-modal/index.mjs +1 -1
  252. package/esm2020/lib/layer/style-modal/style-modal.component.mjs +2 -2
  253. package/esm2020/lib/layer/track-feature-button/index.mjs +1 -1
  254. package/esm2020/lib/layer/track-feature-button/track-feature-button.component.mjs +2 -2
  255. package/esm2020/lib/layer/utils/image-watcher.mjs +1 -1
  256. package/esm2020/lib/layer/utils/index.mjs +1 -1
  257. package/esm2020/lib/layer/utils/layer.utils.mjs +1 -1
  258. package/esm2020/lib/layer/utils/outputLegend.mjs +1 -1
  259. package/esm2020/lib/layer/utils/tile-watcher.mjs +1 -1
  260. package/esm2020/lib/layer/utils/vector-watcher.mjs +1 -1
  261. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +1 -1
  262. package/esm2020/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +2 -2
  263. package/esm2020/lib/map/baselayers-switcher/index.mjs +1 -1
  264. package/esm2020/lib/map/baselayers-switcher/mini-basemap.component.mjs +2 -2
  265. package/esm2020/lib/map/geolocate-button/geolocate-button.component.mjs +2 -2
  266. package/esm2020/lib/map/geolocate-button/index.mjs +1 -1
  267. package/esm2020/lib/map/index.mjs +1 -1
  268. package/esm2020/lib/map/info-section/index.mjs +1 -1
  269. package/esm2020/lib/map/info-section/info-section.component.mjs +2 -2
  270. package/esm2020/lib/map/map-browser/index.mjs +1 -1
  271. package/esm2020/lib/map/map-browser/map-browser.component.mjs +2 -2
  272. package/esm2020/lib/map/map-center/index.mjs +1 -1
  273. package/esm2020/lib/map/map-center/map-center.component.mjs +2 -2
  274. package/esm2020/lib/map/map.module.mjs +1 -1
  275. package/esm2020/lib/map/menu-button/index.mjs +1 -1
  276. package/esm2020/lib/map/menu-button/menu-button.component.mjs +2 -2
  277. package/esm2020/lib/map/offline-button/index.mjs +1 -1
  278. package/esm2020/lib/map/offline-button/offline-button.component.mjs +2 -2
  279. package/esm2020/lib/map/rotation-button/index.mjs +1 -1
  280. package/esm2020/lib/map/rotation-button/rotation-button.component.mjs +2 -2
  281. package/esm2020/lib/map/shared/controllers/controller.mjs +1 -1
  282. package/esm2020/lib/map/shared/controllers/geolocation.mjs +1 -1
  283. package/esm2020/lib/map/shared/controllers/index.mjs +1 -1
  284. package/esm2020/lib/map/shared/controllers/view.mjs +1 -1
  285. package/esm2020/lib/map/shared/hover-feature.directive.mjs +2 -2
  286. package/esm2020/lib/map/shared/index.mjs +1 -1
  287. package/esm2020/lib/map/shared/linkedLayers.utils.mjs +3 -3
  288. package/esm2020/lib/map/shared/map-pointer-position.directive.mjs +1 -1
  289. package/esm2020/lib/map/shared/map.enums.mjs +1 -1
  290. package/esm2020/lib/map/shared/map.interface.mjs +1 -1
  291. package/esm2020/lib/map/shared/map.mjs +1 -1
  292. package/esm2020/lib/map/shared/map.service.mjs +1 -1
  293. package/esm2020/lib/map/shared/map.utils.mjs +4 -1
  294. package/esm2020/lib/map/shared/mapOffline.directive.mjs +1 -1
  295. package/esm2020/lib/map/shared/projection.interfaces.mjs +1 -1
  296. package/esm2020/lib/map/shared/projection.service.mjs +1 -1
  297. package/esm2020/lib/map/shared/projection.utils.mjs +1 -1
  298. package/esm2020/lib/map/swipe-control/index.mjs +1 -1
  299. package/esm2020/lib/map/swipe-control/swipe-control.component.mjs +2 -2
  300. package/esm2020/lib/map/utils/layer-watcher.mjs +1 -1
  301. package/esm2020/lib/map/wake-lock-button/index.mjs +1 -1
  302. package/esm2020/lib/map/wake-lock-button/wake-lock-button.component.mjs +2 -2
  303. package/esm2020/lib/map/zoom-button/index.mjs +1 -1
  304. package/esm2020/lib/map/zoom-button/zoom-button.component.mjs +2 -2
  305. package/esm2020/lib/measure/index.mjs +1 -1
  306. package/esm2020/lib/measure/measure.module.mjs +1 -1
  307. package/esm2020/lib/measure/measurer/measure-format.pipe.mjs +1 -1
  308. package/esm2020/lib/measure/measurer/measurer-dialog.component.mjs +2 -2
  309. package/esm2020/lib/measure/measurer/measurer-item.component.mjs +2 -2
  310. package/esm2020/lib/measure/measurer/measurer.component.mjs +2 -2
  311. package/esm2020/lib/measure/measurer/measurer.module.mjs +1 -1
  312. package/esm2020/lib/measure/shared/index.mjs +1 -1
  313. package/esm2020/lib/measure/shared/measure.enum.mjs +1 -1
  314. package/esm2020/lib/measure/shared/measure.interfaces.mjs +1 -1
  315. package/esm2020/lib/measure/shared/measure.utils.mjs +1 -1
  316. package/esm2020/lib/metadata/index.mjs +1 -1
  317. package/esm2020/lib/metadata/metadata-button/index.mjs +1 -1
  318. package/esm2020/lib/metadata/metadata-button/metadata-button.component.mjs +3 -3
  319. package/esm2020/lib/metadata/metadata.module.mjs +1 -1
  320. package/esm2020/lib/metadata/shared/index.mjs +1 -1
  321. package/esm2020/lib/metadata/shared/metadata.interface.mjs +1 -1
  322. package/esm2020/lib/metadata/shared/metadata.service.mjs +1 -1
  323. package/esm2020/lib/offline/geoDB/configFileToGeoDB.service.mjs +33 -4
  324. package/esm2020/lib/offline/geoDB/geoDB.enums.mjs +1 -1
  325. package/esm2020/lib/offline/geoDB/geoDB.interface.mjs +1 -1
  326. package/esm2020/lib/offline/geoDB/geoDB.service.mjs +12 -12
  327. package/esm2020/lib/offline/geoDB/index.mjs +1 -1
  328. package/esm2020/lib/offline/index.mjs +1 -1
  329. package/esm2020/lib/offline/shared/geo-network.service.mjs +1 -1
  330. package/esm2020/lib/offline/shared/index.mjs +1 -1
  331. package/esm2020/lib/overlay/index.mjs +1 -1
  332. package/esm2020/lib/overlay/overlay.module.mjs +1 -1
  333. package/esm2020/lib/overlay/shared/index.mjs +1 -1
  334. package/esm2020/lib/overlay/shared/overlay-marker-style.utils.mjs +1 -1
  335. package/esm2020/lib/overlay/shared/overlay.directive.mjs +1 -1
  336. package/esm2020/lib/overlay/shared/overlay.enum.mjs +1 -1
  337. package/esm2020/lib/overlay/shared/overlay.mjs +1 -1
  338. package/esm2020/lib/overlay/shared/overlay.service.mjs +1 -1
  339. package/esm2020/lib/overlay/shared/overlay.utils.mjs +1 -1
  340. package/esm2020/lib/print/index.mjs +1 -1
  341. package/esm2020/lib/print/print/print.component.mjs +2 -2
  342. package/esm2020/lib/print/print-form/index.mjs +1 -1
  343. package/esm2020/lib/print/print-form/print-form.component.mjs +2 -2
  344. package/esm2020/lib/print/print.module.mjs +1 -1
  345. package/esm2020/lib/print/shared/geopdf.mjs +58 -0
  346. package/esm2020/lib/print/shared/index.mjs +2 -1
  347. package/esm2020/lib/print/shared/print.interface.mjs +1 -1
  348. package/esm2020/lib/print/shared/print.service.mjs +118 -64
  349. package/esm2020/lib/print/shared/print.type.mjs +1 -1
  350. package/esm2020/lib/query/index.mjs +1 -1
  351. package/esm2020/lib/query/query.module.mjs +1 -1
  352. package/esm2020/lib/query/shared/index.mjs +1 -1
  353. package/esm2020/lib/query/shared/query-search-source.mjs +1 -1
  354. package/esm2020/lib/query/shared/query-search-source.providers.mjs +1 -1
  355. package/esm2020/lib/query/shared/query.directive.mjs +1 -1
  356. package/esm2020/lib/query/shared/query.enums.mjs +1 -1
  357. package/esm2020/lib/query/shared/query.interfaces.mjs +1 -1
  358. package/esm2020/lib/query/shared/query.service.mjs +3 -3
  359. package/esm2020/lib/query/shared/query.utils.mjs +1 -1
  360. package/esm2020/lib/search/index.mjs +1 -1
  361. package/esm2020/lib/search/search-bar/search-bar.component.mjs +2 -2
  362. package/esm2020/lib/search/search-bar/search-bar.module.mjs +1 -1
  363. package/esm2020/lib/search/search-bar/search-url-param.directive.mjs +1 -1
  364. package/esm2020/lib/search/search-results/search-results-add-button.component.mjs +2 -2
  365. package/esm2020/lib/search/search-results/search-results-item.component.mjs +2 -2
  366. package/esm2020/lib/search/search-results/search-results.component.mjs +2 -2
  367. package/esm2020/lib/search/search-results/search-results.module.mjs +1 -1
  368. package/esm2020/lib/search/search-selector/search-selector.component.mjs +2 -2
  369. package/esm2020/lib/search/search-selector/search-selector.module.mjs +1 -1
  370. package/esm2020/lib/search/search-settings/search-settings.component.mjs +2 -2
  371. package/esm2020/lib/search/search-settings/search-settings.module.mjs +1 -1
  372. package/esm2020/lib/search/search.module.mjs +1 -1
  373. package/esm2020/lib/search/shared/index.mjs +1 -1
  374. package/esm2020/lib/search/shared/search-pointer-summary.directive.mjs +1 -1
  375. package/esm2020/lib/search/shared/search-source-service.providers.mjs +1 -1
  376. package/esm2020/lib/search/shared/search-source.service.mjs +1 -1
  377. package/esm2020/lib/search/shared/search.enums.mjs +1 -1
  378. package/esm2020/lib/search/shared/search.interfaces.mjs +1 -1
  379. package/esm2020/lib/search/shared/search.service.mjs +1 -1
  380. package/esm2020/lib/search/shared/search.utils.mjs +1 -1
  381. package/esm2020/lib/search/shared/sources/coordinates.interfaces.mjs +1 -1
  382. package/esm2020/lib/search/shared/sources/coordinates.mjs +1 -1
  383. package/esm2020/lib/search/shared/sources/coordinates.providers.mjs +1 -1
  384. package/esm2020/lib/search/shared/sources/icherche.interfaces.mjs +1 -1
  385. package/esm2020/lib/search/shared/sources/icherche.mjs +1 -1
  386. package/esm2020/lib/search/shared/sources/icherche.providers.mjs +1 -1
  387. package/esm2020/lib/search/shared/sources/ilayer.interfaces.mjs +1 -1
  388. package/esm2020/lib/search/shared/sources/ilayer.mjs +1 -1
  389. package/esm2020/lib/search/shared/sources/ilayer.providers.mjs +1 -1
  390. package/esm2020/lib/search/shared/sources/index.mjs +1 -3
  391. package/esm2020/lib/search/shared/sources/nominatim.interfaces.mjs +1 -1
  392. package/esm2020/lib/search/shared/sources/nominatim.mjs +2 -2
  393. package/esm2020/lib/search/shared/sources/nominatim.providers.mjs +1 -1
  394. package/esm2020/lib/search/shared/sources/source.interfaces.mjs +1 -1
  395. package/esm2020/lib/search/shared/sources/source.mjs +1 -1
  396. package/esm2020/lib/search/shared/sources/storedqueries.interfaces.mjs +1 -1
  397. package/esm2020/lib/search/shared/sources/storedqueries.mjs +1 -1
  398. package/esm2020/lib/search/shared/sources/storedqueries.providers.mjs +1 -1
  399. package/esm2020/lib/toast/index.mjs +1 -1
  400. package/esm2020/lib/toast/toast.component.mjs +2 -2
  401. package/esm2020/lib/toast/toast.module.mjs +1 -1
  402. package/esm2020/lib/utils/commonVectorStyle.interface.mjs +1 -1
  403. package/esm2020/lib/utils/commonVectorStyle.mjs +1 -1
  404. package/esm2020/lib/utils/googleLinks.mjs +1 -1
  405. package/esm2020/lib/utils/id-generator.mjs +1 -1
  406. package/esm2020/lib/utils/index.mjs +1 -1
  407. package/esm2020/lib/utils/osmLinks.mjs +1 -1
  408. package/esm2020/lib/wkt/index.mjs +1 -1
  409. package/esm2020/lib/wkt/shared/index.mjs +1 -1
  410. package/esm2020/lib/wkt/shared/wkt.service.mjs +15 -15
  411. package/esm2020/lib/wkt/wkt.module.mjs +1 -1
  412. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +2 -2
  413. package/esm2020/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +1 -1
  414. package/esm2020/lib/workspace/confirmation-popup/index.mjs +1 -1
  415. package/esm2020/lib/workspace/index.mjs +1 -1
  416. package/esm2020/lib/workspace/shared/edition-workspace.mjs +1 -1
  417. package/esm2020/lib/workspace/shared/edition-workspace.service.mjs +1 -1
  418. package/esm2020/lib/workspace/shared/feature-workspace.mjs +1 -1
  419. package/esm2020/lib/workspace/shared/feature-workspace.service.mjs +1 -1
  420. package/esm2020/lib/workspace/shared/index.mjs +1 -1
  421. package/esm2020/lib/workspace/shared/wfs-workspace.mjs +1 -1
  422. package/esm2020/lib/workspace/shared/wfs-workspace.service.mjs +1 -1
  423. package/esm2020/lib/workspace/shared/wms-workspace.service.mjs +1 -1
  424. package/esm2020/lib/workspace/shared/workspace.utils.mjs +1 -1
  425. package/esm2020/lib/workspace/widgets/index.mjs +1 -1
  426. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +2 -2
  427. package/esm2020/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +1 -1
  428. package/esm2020/lib/workspace/widgets/widgets.mjs +1 -1
  429. package/esm2020/lib/workspace/workspace-selector/workspace-selector.directive.mjs +1 -1
  430. package/esm2020/lib/workspace/workspace-selector/workspace-selector.module.mjs +1 -1
  431. package/esm2020/lib/workspace/workspace-updator/workspace-updator.directive.mjs +1 -1
  432. package/esm2020/lib/workspace/workspace-updator/workspace-updator.module.mjs +1 -1
  433. package/esm2020/lib/workspace/workspace.module.mjs +1 -1
  434. package/esm2020/public_api.mjs +1 -1
  435. package/fesm2015/igo2-geo.mjs +1405 -494
  436. package/fesm2015/igo2-geo.mjs.map +1 -1
  437. package/fesm2020/igo2-geo.mjs +1357 -490
  438. package/fesm2020/igo2-geo.mjs.map +1 -1
  439. package/lib/catalog/shared/catalog.abstract.d.ts +1 -0
  440. package/lib/draw/draw/draw-popup.component.d.ts +52 -5
  441. package/lib/draw/draw/draw.component.d.ts +34 -4
  442. package/lib/draw/draw/draw.module.d.ts +3 -1
  443. package/lib/draw/shared/draw.enum.d.ts +11 -0
  444. package/lib/draw/shared/draw.interface.d.ts +4 -0
  445. package/lib/draw/shared/draw.utils.d.ts +2 -0
  446. package/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.d.ts +2 -1
  447. package/lib/geometry/geometry-form-field/geometry-form-field-input.component.d.ts +7 -1
  448. package/lib/geometry/shared/controls/draw.d.ts +18 -0
  449. package/lib/import-export/shared/import.interface.d.ts +2 -1
  450. package/lib/import-export/shared/import.service.d.ts +7 -0
  451. package/lib/layer/shared/layers/layer.interface.d.ts +4 -0
  452. package/lib/map/shared/map.utils.d.ts +1 -0
  453. package/lib/offline/geoDB/configFileToGeoDB.service.d.ts +1 -0
  454. package/lib/offline/geoDB/geoDB.interface.d.ts +1 -0
  455. package/lib/offline/geoDB/geoDB.service.d.ts +3 -3
  456. package/lib/print/shared/geopdf.d.ts +1 -0
  457. package/lib/print/shared/index.d.ts +1 -0
  458. package/lib/print/shared/print.interface.d.ts +5 -0
  459. package/lib/print/shared/print.service.d.ts +17 -8
  460. package/lib/search/shared/sources/index.d.ts +0 -2
  461. package/ngcc.config.js +3 -3
  462. package/package.json +4 -4
  463. package/style/geo.theming.scss +12 -12
  464. package/esm2020/lib/search/shared/sources/cadastre.mjs +0 -126
  465. package/esm2020/lib/search/shared/sources/cadastre.providers.mjs +0 -23
  466. package/lib/search/shared/sources/cadastre.d.ts +0 -33
  467. package/lib/search/shared/sources/cadastre.providers.d.ts +0 -18
@@ -11,7 +11,7 @@ import { MatListModule } from '@angular/material/list';
11
11
  import * as i4 from '@angular/material/tooltip';
12
12
  import { MatTooltipModule } from '@angular/material/tooltip';
13
13
  import * as i5$1 from '@igo2/common';
14
- import { getEntityId, getEntityTitle, getEntityProperty, getEntityRevision, getEntityIcon, EntityStore, EntityStoreStrategy, EntityStoreWatcher, SecureImagePipe, IgoListModule, IgoCollapsibleModule, IgoImageModule, IgoPanelModule, IgoMatBadgeIconModule, IgoCustomHtmlModule, IgoEntityTableModule, IgoKeyValueModule, IgoFormModule, IgoFormFieldComponent, DOMService, EntityStoreFilterSelectionStrategy, EntityTableColumnRenderer, IgoEntityModule, IgoDOMModule, DragAndDropDirective, IgoSpinnerModule, IgoDrapDropModule, IgoConfirmDialogModule, getEntityTitleHtml, EntityStoreFilterCustomFuncStrategy, IgoStopPropagationModule, IgoFlexibleModule, WidgetService, Workspace, ActionStore, IgoWidgetModule } from '@igo2/common';
14
+ import { getEntityId, getEntityTitle, getEntityProperty, getEntityRevision, getEntityIcon, EntityStore, EntityStoreStrategy, EntityStoreWatcher, SecureImagePipe, EntityTableColumnRenderer, IgoListModule, IgoCollapsibleModule, IgoImageModule, IgoPanelModule, IgoMatBadgeIconModule, IgoCustomHtmlModule, IgoEntityTableModule, IgoKeyValueModule, IgoFormModule, IgoFormFieldComponent, DOMService, EntityStoreFilterSelectionStrategy, IgoEntityModule, IgoDOMModule, DragAndDropDirective, IgoSpinnerModule, IgoDrapDropModule, IgoConfirmDialogModule, getEntityTitleHtml, EntityStoreFilterCustomFuncStrategy, IgoStopPropagationModule, IgoFlexibleModule, WidgetService, Workspace, ActionStore, IgoWidgetModule } from '@igo2/common';
15
15
  import * as i3 from '@angular/material/button';
16
16
  import { MatButtonModule } from '@angular/material/button';
17
17
  import * as i2$1 from '@igo2/core';
@@ -19,7 +19,7 @@ import { IgoLanguageModule, ConfigService, Media, StorageScope, IgoMessageModule
19
19
  import * as i1 from '@angular/material/dialog';
20
20
  import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
21
21
  import * as i7 from '@ngx-translate/core';
22
- import { BehaviorSubject, combineLatest, of, Observable, forkJoin, Subject, interval, skipWhile as skipWhile$1, zip, EMPTY, ReplaySubject, timer, fromEvent, throwError } from 'rxjs';
22
+ import { BehaviorSubject, combineLatest, of, Observable, forkJoin, Subject, interval, skipWhile as skipWhile$1, zip, EMPTY, ReplaySubject, timer, fromEvent, Subscription, throwError } from 'rxjs';
23
23
  import { map, concatMap, first, catchError, skipWhile, debounceTime, skip, distinctUntilChanged, switchMap, take, mergeMap, debounce, takeUntil } from 'rxjs/operators';
24
24
  import { Watcher, uuid, SubjectStatus, NumberUtils, ObjectUtils, userAgent, Clipboard, downloadContent, strEnum, ChangeUtils } from '@igo2/utils';
25
25
  import olMap from 'ol/Map';
@@ -54,7 +54,7 @@ import { WMSCapabilities, WMTSCapabilities, EsriJSON } from 'ol/format';
54
54
  import { Md5 } from 'ts-md5';
55
55
  import { MAC } from 'ol/has';
56
56
  import * as olfilter from 'ol/format/filter';
57
- import olWKT from 'ol/format/WKT';
57
+ import olFormatWKT from 'ol/format/WKT';
58
58
  import olFormatWFS from 'ol/format/WFS';
59
59
  import moment from 'moment';
60
60
  import olFormatGML2 from 'ol/format/GML2';
@@ -105,10 +105,10 @@ import { MAT_DATE_LOCALE, MatOptionModule, MatNativeDateModule } from '@angular/
105
105
  import * as i13 from '@angular/material/form-field';
106
106
  import { MatFormFieldModule } from '@angular/material/form-field';
107
107
  import * as i2$2 from '@angular/forms';
108
- import { ReactiveFormsModule, FormsModule, Validators, UntypedFormControl } from '@angular/forms';
108
+ import { UntypedFormControl, ReactiveFormsModule, FormsModule, Validators } from '@angular/forms';
109
109
  import * as i15 from '@angular/material/select';
110
110
  import { MatSelectModule } from '@angular/material/select';
111
- import * as i12$1 from '@angular/material/checkbox';
111
+ import * as i12 from '@angular/material/checkbox';
112
112
  import { MatCheckboxModule } from '@angular/material/checkbox';
113
113
  import * as i11 from '@angular/material/divider';
114
114
  import { MatDividerModule } from '@angular/material/divider';
@@ -120,7 +120,7 @@ import * as i23 from '@angular/material/slide-toggle';
120
120
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
121
121
  import * as i13$1 from '@angular/material/slider';
122
122
  import { MatSliderModule, MatSlider } from '@angular/material/slider';
123
- import * as i12 from 'ngx-color-picker';
123
+ import * as i12$1 from 'ngx-color-picker';
124
124
  import { ColorPickerModule } from 'ngx-color-picker';
125
125
  import scrollIntoView from 'scroll-into-view-if-needed';
126
126
  import OlOverlay from 'ol/Overlay';
@@ -135,13 +135,13 @@ import { doubleClick } from 'ol/events/condition';
135
135
  import lineIntersect from '@turf/line-intersect';
136
136
  import * as i18 from '@angular/material/button-toggle';
137
137
  import { MatButtonToggleModule } from '@angular/material/button-toggle';
138
+ import * as i17 from '@angular/material/radio';
139
+ import { MatRadioModule } from '@angular/material/radio';
138
140
  import * as i11$1 from '@angular/material/autocomplete';
139
141
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
140
142
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
141
143
  import * as i25 from '@angular/material/datepicker';
142
144
  import { MatDatepickerModule } from '@angular/material/datepicker';
143
- import * as i17 from '@angular/material/radio';
144
- import { MatRadioModule } from '@angular/material/radio';
145
145
  import * as i21 from '@angular/material/table';
146
146
  import { MatTableModule } from '@angular/material/table';
147
147
  import * as i20 from '@angular/material/tabs';
@@ -157,7 +157,7 @@ import { SelectionModel } from '@angular/cdk/collections';
157
157
  import { NestedTreeControl } from '@angular/cdk/tree';
158
158
  import { encode } from 'windows-1252';
159
159
  import { saveAs } from 'file-saver';
160
- import jspdf from 'jspdf';
160
+ import jsPDF from 'jspdf';
161
161
  import html2canvas from 'html2canvas';
162
162
  import JSZip from 'jszip';
163
163
  import * as i3$1 from '@angular/cdk/drag-drop';
@@ -269,7 +269,7 @@ MetadataButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Met
269
269
  } }, dependencies: [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i7.TranslatePipe], changeDetection: 0 });
270
270
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MetadataButtonComponent, [{
271
271
  type: Component,
272
- args: [{ selector: 'igo-metadata-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"(options && options.metadata && options.metadata.url) || (options && options.metadata && options.metadata.abstract)\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.metadata.show' | translate\"\n [color]=\"color\"\n (click)=\"openMetadata(options.metadata)\">\n <mat-icon svgIcon=\"information-outline\"></mat-icon>\n</button>\n" }]
272
+ args: [{ selector: 'igo-metadata-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n *ngIf=\"(options && options.metadata && options.metadata.url) || (options && options.metadata && options.metadata.abstract)\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.metadata.show' | translate\"\r\n [color]=\"color\"\r\n (click)=\"openMetadata(options.metadata)\">\r\n <mat-icon svgIcon=\"information-outline\"></mat-icon>\r\n</button>\r\n" }]
273
273
  }], function () { return [{ type: MetadataService }, { type: i1.MatDialog }]; }, { layer: [{
274
274
  type: Input
275
275
  }], color: [{
@@ -300,7 +300,7 @@ MetadataAbstractComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: M
300
300
  } }, dependencies: [i1$1.NgIf, i3.MatButton, i1.MatDialogClose, i1.MatDialogTitle, i1.MatDialogContent], styles: [".close-button{top:5px;right:5px;padding:7px;line-height:10px;position:absolute!important;min-width:auto}mat-dialog-container{position:relative}\n"], encapsulation: 2 });
301
301
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MetadataAbstractComponent, [{
302
302
  type: Component,
303
- args: [{ selector: 'igo-metadata-abstract', encapsulation: ViewEncapsulation.None, template: "<h2 mat-dialog-title>{{ data.layerTitle }}</h2>\n<button class=\"close-button\" mat-button mat-dialog-close>X</button>\n<mat-dialog-content *ngIf=\"data.type !== 'arcgisrest'\" class=\"mat-typography\">\n <h3>{{ data.abstract }}</h3>\n</mat-dialog-content>\n<mat-dialog-content *ngIf=\"data.type === 'arcgisrest'\" class=\"mat-typography\">\n <h3 [innerHTML]=\"data.abstract\"></h3>\n</mat-dialog-content>\n", styles: [".close-button{top:5px;right:5px;padding:7px;line-height:10px;position:absolute!important;min-width:auto}mat-dialog-container{position:relative}\n"] }]
303
+ args: [{ selector: 'igo-metadata-abstract', encapsulation: ViewEncapsulation.None, template: "<h2 mat-dialog-title>{{ data.layerTitle }}</h2>\r\n<button class=\"close-button\" mat-button mat-dialog-close>X</button>\r\n<mat-dialog-content *ngIf=\"data.type !== 'arcgisrest'\" class=\"mat-typography\">\r\n <h3>{{ data.abstract }}</h3>\r\n</mat-dialog-content>\r\n<mat-dialog-content *ngIf=\"data.type === 'arcgisrest'\" class=\"mat-typography\">\r\n <h3 [innerHTML]=\"data.abstract\"></h3>\r\n</mat-dialog-content>\r\n", styles: [".close-button{top:5px;right:5px;padding:7px;line-height:10px;position:absolute!important;min-width:auto}mat-dialog-container{position:relative}\n"] }]
304
304
  }], function () { return [{ type: undefined, decorators: [{
305
305
  type: Inject,
306
306
  args: [MAT_DIALOG_DATA]
@@ -1095,6 +1095,9 @@ function roundCoordTo(coord, decimal = 3) {
1095
1095
  NumberUtils.roundToNDecimal(coord[1], decimal)
1096
1096
  ];
1097
1097
  }
1098
+ function roundCoordToString(coord, decimal = 3) {
1099
+ return roundCoordTo(coord, decimal).map(r => r.toString());
1100
+ }
1098
1101
  /**
1099
1102
  * Returns an array of converted coordinates.
1100
1103
  * Conversion is done for every configured projections
@@ -1554,7 +1557,7 @@ class OgcFilterWriter {
1554
1557
  const wfsExpression = filterOptions.expression;
1555
1558
  let geometry;
1556
1559
  if (wfsWktGeometry) {
1557
- const wkt = new olWKT();
1560
+ const wkt = new olFormatWKT();
1558
1561
  geometry = wkt.readGeometry(wfsWktGeometry, {
1559
1562
  dataProjection: wfsSrsName,
1560
1563
  featureProjection: wfsSrsName || 'EPSG:3857'
@@ -7713,7 +7716,7 @@ function getDirectParentLayerByProperty(map, layer, property) {
7713
7716
  }
7714
7717
  });
7715
7718
  if (parents.length > 1) {
7716
- console.warn(`Your layer ${layer.title || layer.id} must only have 1 parent (${parents.map(p => p.title || p.id)})
7719
+ console.warn(`Your layer ${layer.title || layer.id} must only have 1 parent (${parents.map(p => p.title || p.id)})
7717
7720
  , The first parent (${parents[0].title || parents[0].id}) will be use to sync properties`);
7718
7721
  }
7719
7722
  return parents[0];
@@ -7768,7 +7771,7 @@ function getDirectParentLayerByDeletion(map, layer) {
7768
7771
  }
7769
7772
  });
7770
7773
  if (parents.length > 1) {
7771
- console.warn(`Your layer ${layer.title || layer.id} must only have 1 parent (${parents.map(p => p.title || p.id)})
7774
+ console.warn(`Your layer ${layer.title || layer.id} must only have 1 parent (${parents.map(p => p.title || p.id)})
7772
7775
  , The first parent (${parents[0].title || parents[0].id}) will be use to sync properties`);
7773
7776
  }
7774
7777
  return parents[0];
@@ -8345,7 +8348,7 @@ MapBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MapBrow
8345
8348
  } }, styles: ["[_nghost-%COMP%]{position:relative;display:block}[_nghost-%COMP%], .igo-map-browser-target[_ngcontent-%COMP%]{width:100%;height:100%}[_nghost-%COMP%] igo-zoom-button{position:absolute;bottom:50px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-zoom-button{display:none}}[_nghost-%COMP%] igo-offline-button{position:absolute;bottom:15px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-offline-button{bottom:5px}}[_nghost-%COMP%] igo-geolocate-button{position:absolute;bottom:5px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-geolocate-button{bottom:5px}}[_nghost-%COMP%] igo-rotation-button{position:absolute;top:50px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-rotation-button{bottom:50px}}[_nghost-%COMP%] igo-wake-lock-button{position:absolute;top:95px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-wake-lock-button{bottom:50px}}[_nghost-%COMP%] igo-home-extent-button{position:absolute;bottom:135px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-home-extent-button{bottom:5px;right:95px}}[_nghost-%COMP%] igo-user-button{position:absolute;bottom:5px;right:55px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){[_nghost-%COMP%] igo-user-button{right:90px}}[_nghost-%COMP%] igo-baselayers-switcher{position:absolute;bottom:5px;left:5px}[_nghost-%COMP%] .ol-attribution{flex-flow:row;left:50px;bottom:5px;text-align:left;padding:0;margin-right:90px;background-color:#fff0;width:calc(100% - 100px)}[_nghost-%COMP%] .ol-attribution.ol-logo-only{height:inherit}[_nghost-%COMP%] .ol-attribution.ol-collapsed{background:none}[_nghost-%COMP%] .ol-attribution.ol-collapsed button{transform:none}[_nghost-%COMP%] .ol-attribution button{transform:rotate(180deg);background-color:#fff;cursor:pointer;outline:none}[_nghost-%COMP%] .ol-scale-line-inner{color:#000;border-color:#000;text-shadow:rgb(255,255,255) -1px -1px 3px,rgb(255,255,255) 1px -1px 3px,rgb(255,255,255) -1px 1px 3px,rgb(255,255,255) 1px 1px 4px;box-shadow:0 1px 0 1px #fff9}[_nghost-%COMP%] .ol-scale-line{background-color:#fff0;bottom:4px;transform:translate(-50%);left:50%}[_nghost-%COMP%] .ol-scale-bar{background-color:#fff0;bottom:4px;transform:translate(-50%);left:50%}[_nghost-%COMP%] .ol-scale-text{text-shadow:rgb(255,255,255) -1px -1px 3px,rgb(255,255,255) 1px -1px 3px,rgb(255,255,255) -1px 1px 3px,rgb(255,255,255) 1px 1px 4px}[_nghost-%COMP%] .ol-scale-step-text{text-shadow:rgb(255,255,255) -1px -1px 3px,rgb(255,255,255) 1px -1px 3px,rgb(255,255,255) -1px 1px 3px,rgb(255,255,255) 1px 1px 4px}[_nghost-%COMP%] canvas{display:block}"] });
8346
8349
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapBrowserComponent, [{
8347
8350
  type: Component,
8348
- args: [{ selector: 'igo-map-browser', template: "<div [id]=\"id\" class=\"igo-map-browser-target\"></div>\n<ng-content></ng-content>\n", styles: [":host{position:relative;display:block}:host,.igo-map-browser-target{width:100%;height:100%}:host ::ng-deep igo-zoom-button{position:absolute;bottom:50px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host ::ng-deep igo-zoom-button{display:none}}:host ::ng-deep igo-offline-button{position:absolute;bottom:15px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host ::ng-deep igo-offline-button{bottom:5px}}:host ::ng-deep igo-geolocate-button{position:absolute;bottom:5px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host ::ng-deep igo-geolocate-button{bottom:5px}}:host ::ng-deep igo-rotation-button{position:absolute;top:50px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host ::ng-deep igo-rotation-button{bottom:50px}}:host ::ng-deep igo-wake-lock-button{position:absolute;top:95px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host ::ng-deep igo-wake-lock-button{bottom:50px}}:host ::ng-deep igo-home-extent-button{position:absolute;bottom:135px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host ::ng-deep igo-home-extent-button{bottom:5px;right:95px}}:host ::ng-deep igo-user-button{position:absolute;bottom:5px;right:55px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host ::ng-deep igo-user-button{right:90px}}:host ::ng-deep igo-baselayers-switcher{position:absolute;bottom:5px;left:5px}:host ::ng-deep .ol-attribution{flex-flow:row;left:50px;bottom:5px;text-align:left;padding:0;margin-right:90px;background-color:#fff0;width:calc(100% - 100px)}:host ::ng-deep .ol-attribution.ol-logo-only{height:inherit}:host ::ng-deep .ol-attribution.ol-collapsed{background:none}:host ::ng-deep .ol-attribution.ol-collapsed button{transform:none}:host ::ng-deep .ol-attribution button{transform:rotate(180deg);background-color:#fff;cursor:pointer;outline:none}:host ::ng-deep .ol-scale-line-inner{color:#000;border-color:#000;text-shadow:rgb(255,255,255) -1px -1px 3px,rgb(255,255,255) 1px -1px 3px,rgb(255,255,255) -1px 1px 3px,rgb(255,255,255) 1px 1px 4px;box-shadow:0 1px 0 1px #fff9}:host ::ng-deep .ol-scale-line{background-color:#fff0;bottom:4px;transform:translate(-50%);left:50%}:host ::ng-deep .ol-scale-bar{background-color:#fff0;bottom:4px;transform:translate(-50%);left:50%}:host ::ng-deep .ol-scale-text{text-shadow:rgb(255,255,255) -1px -1px 3px,rgb(255,255,255) 1px -1px 3px,rgb(255,255,255) -1px 1px 3px,rgb(255,255,255) 1px 1px 4px}:host ::ng-deep .ol-scale-step-text{text-shadow:rgb(255,255,255) -1px -1px 3px,rgb(255,255,255) 1px -1px 3px,rgb(255,255,255) -1px 1px 3px,rgb(255,255,255) 1px 1px 4px}:host ::ng-deep canvas{display:block}\n"] }]
8351
+ args: [{ selector: 'igo-map-browser', template: "<div [id]=\"id\" class=\"igo-map-browser-target\"></div>\r\n<ng-content></ng-content>\r\n", styles: [":host{position:relative;display:block}:host,.igo-map-browser-target{width:100%;height:100%}:host ::ng-deep igo-zoom-button{position:absolute;bottom:50px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host ::ng-deep igo-zoom-button{display:none}}:host ::ng-deep igo-offline-button{position:absolute;bottom:15px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host ::ng-deep igo-offline-button{bottom:5px}}:host ::ng-deep igo-geolocate-button{position:absolute;bottom:5px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host ::ng-deep igo-geolocate-button{bottom:5px}}:host ::ng-deep igo-rotation-button{position:absolute;top:50px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host ::ng-deep igo-rotation-button{bottom:50px}}:host ::ng-deep igo-wake-lock-button{position:absolute;top:95px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host ::ng-deep igo-wake-lock-button{bottom:50px}}:host ::ng-deep igo-home-extent-button{position:absolute;bottom:135px;right:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host ::ng-deep igo-home-extent-button{bottom:5px;right:95px}}:host ::ng-deep igo-user-button{position:absolute;bottom:5px;right:55px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){:host ::ng-deep igo-user-button{right:90px}}:host ::ng-deep igo-baselayers-switcher{position:absolute;bottom:5px;left:5px}:host ::ng-deep .ol-attribution{flex-flow:row;left:50px;bottom:5px;text-align:left;padding:0;margin-right:90px;background-color:#fff0;width:calc(100% - 100px)}:host ::ng-deep .ol-attribution.ol-logo-only{height:inherit}:host ::ng-deep .ol-attribution.ol-collapsed{background:none}:host ::ng-deep .ol-attribution.ol-collapsed button{transform:none}:host ::ng-deep .ol-attribution button{transform:rotate(180deg);background-color:#fff;cursor:pointer;outline:none}:host ::ng-deep .ol-scale-line-inner{color:#000;border-color:#000;text-shadow:rgb(255,255,255) -1px -1px 3px,rgb(255,255,255) 1px -1px 3px,rgb(255,255,255) -1px 1px 3px,rgb(255,255,255) 1px 1px 4px;box-shadow:0 1px 0 1px #fff9}:host ::ng-deep .ol-scale-line{background-color:#fff0;bottom:4px;transform:translate(-50%);left:50%}:host ::ng-deep .ol-scale-bar{background-color:#fff0;bottom:4px;transform:translate(-50%);left:50%}:host ::ng-deep .ol-scale-text{text-shadow:rgb(255,255,255) -1px -1px 3px,rgb(255,255,255) 1px -1px 3px,rgb(255,255,255) -1px 1px 3px,rgb(255,255,255) 1px 1px 4px}:host ::ng-deep .ol-scale-step-text{text-shadow:rgb(255,255,255) -1px -1px 3px,rgb(255,255,255) 1px -1px 3px,rgb(255,255,255) -1px 1px 3px,rgb(255,255,255) 1px 1px 4px}:host ::ng-deep canvas{display:block}\n"] }]
8349
8352
  }], function () { return [{ type: i2$1.ActivityService }]; }, { map: [{
8350
8353
  type: Input
8351
8354
  }], view: [{
@@ -8687,7 +8690,7 @@ class HoverFeatureDirective {
8687
8690
  zIndex: 901,
8688
8691
  renderMode: "vector",
8689
8692
  declutter: true,
8690
- source: new olSourceVectorTile({}),
8693
+ source: new olSourceVectorTile({ projection: this.map.projection }),
8691
8694
  style: (feature, resolution) => {
8692
8695
  if (this.mvtStyleOptions && feature.getId() in this.selectionMVT) {
8693
8696
  return this.createHoverStyle(feature, this.mvtStyleOptions, resolution);
@@ -9182,7 +9185,7 @@ ZoomButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ZoomBut
9182
9185
  } }, dependencies: [i2.MatIcon, i3.MatButton, i4.MatTooltip, i7.TranslatePipe], styles: [".igo-zoom-button-container[_ngcontent-%COMP%]{width:40px}.igo-zoom-button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{background-color:#fff}.igo-zoom-button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{background-color:#efefef}.igo-zoom-button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:first-child{margin-bottom:2px}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
9183
9186
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ZoomButtonComponent, [{
9184
9187
  type: Component,
9185
- args: [{ selector: 'igo-zoom-button', template: "<div class=\"igo-zoom-button-container\">\n <button\n mat-icon-button\n [matTooltip]=\"'igo.geo.mapButtons.zoomIn' | translate: {zoom: zoom + 1}\"\n matTooltipPosition=\"left\"\n [color]=\"color\"\n [disabled]=\"zoom >= maxZoom\"\n (click)=\"map.viewController.zoomIn()\">\n <mat-icon svgIcon=\"plus\"></mat-icon>\n </button>\n\n <button\n mat-icon-button\n [matTooltip]=\"'igo.geo.mapButtons.zoomOut' | translate: {zoom: zoom - 1}\"\n matTooltipPosition=\"left\"\n [color]=\"color\"\n [disabled]=\"zoom <= minZoom\"\n (click)=\"map.viewController.zoomOut()\">\n <mat-icon svgIcon=\"minus\"></mat-icon>\n </button>\n</div>\n", styles: [".igo-zoom-button-container{width:40px}.igo-zoom-button-container button{background-color:#fff}.igo-zoom-button-container button:hover{background-color:#efefef}.igo-zoom-button-container button:first-child{margin-bottom:2px}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}\n"] }]
9188
+ args: [{ selector: 'igo-zoom-button', template: "<div class=\"igo-zoom-button-container\">\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'igo.geo.mapButtons.zoomIn' | translate: {zoom: zoom + 1}\"\r\n matTooltipPosition=\"left\"\r\n [color]=\"color\"\r\n [disabled]=\"zoom >= maxZoom\"\r\n (click)=\"map.viewController.zoomIn()\">\r\n <mat-icon svgIcon=\"plus\"></mat-icon>\r\n </button>\r\n\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'igo.geo.mapButtons.zoomOut' | translate: {zoom: zoom - 1}\"\r\n matTooltipPosition=\"left\"\r\n [color]=\"color\"\r\n [disabled]=\"zoom <= minZoom\"\r\n (click)=\"map.viewController.zoomOut()\">\r\n <mat-icon svgIcon=\"minus\"></mat-icon>\r\n </button>\r\n</div>\r\n", styles: [".igo-zoom-button-container{width:40px}.igo-zoom-button-container button{background-color:#fff}.igo-zoom-button-container button:hover{background-color:#efefef}.igo-zoom-button-container button:first-child{margin-bottom:2px}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}\n"] }]
9186
9189
  }], function () { return []; }, { map: [{
9187
9190
  type: Input
9188
9191
  }], color: [{
@@ -9236,7 +9239,7 @@ MenuButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MenuBut
9236
9239
  } }, dependencies: [i1$1.NgClass, i2.MatIcon, i3.MatButton, i4.MatTooltip, i7.TranslatePipe], styles: ["#menu-button[_ngcontent-%COMP%]{background-color:#fff;border-radius:0;left:5px;top:5px}#menu-button.menu-button-reverse-color[_ngcontent-%COMP%]{height:40px;border-radius:0;height:45px;width:48px;left:0px;top:3px}#menu-button.menu-button-reverse-color-close[_ngcontent-%COMP%]{border-radius:0;left:5px;top:5px}mat-icon.disabled[_ngcontent-%COMP%]{color:#00000061}#menu-button[_ngcontent-%COMP%] div.mat-button-ripple-round{border-radius:0}"] });
9237
9240
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MenuButtonComponent, [{
9238
9241
  type: Component,
9239
- args: [{ selector: 'igo-menu-button', template: "<button\n mat-icon-button\n id= \"menu-button\"\n [ngClass]=\"menuButtonClass\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"(sidenavOpened ? 'menu.close' : 'menu.open') | translate\"\n (click)=\"onToggleSidenavClick()\">\n <mat-icon svgIcon=\"menu\"></mat-icon>\n</button>\n", styles: ["#menu-button{background-color:#fff;border-radius:0;left:5px;top:5px}#menu-button.menu-button-reverse-color{height:40px;border-radius:0;height:45px;width:48px;left:0px;top:3px}#menu-button.menu-button-reverse-color-close{border-radius:0;left:5px;top:5px}mat-icon.disabled{color:#00000061}#menu-button ::ng-deep div.mat-button-ripple-round{border-radius:0}\n"] }]
9242
+ args: [{ selector: 'igo-menu-button', template: "<button\r\n mat-icon-button\r\n id= \"menu-button\"\r\n [ngClass]=\"menuButtonClass\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"(sidenavOpened ? 'menu.close' : 'menu.open') | translate\"\r\n (click)=\"onToggleSidenavClick()\">\r\n <mat-icon svgIcon=\"menu\"></mat-icon>\r\n</button>\r\n", styles: ["#menu-button{background-color:#fff;border-radius:0;left:5px;top:5px}#menu-button.menu-button-reverse-color{height:40px;border-radius:0;height:45px;width:48px;left:0px;top:3px}#menu-button.menu-button-reverse-color-close{border-radius:0;left:5px;top:5px}mat-icon.disabled{color:#00000061}#menu-button ::ng-deep div.mat-button-ripple-round{border-radius:0}\n"] }]
9240
9243
  }], function () { return [{ type: i2$1.ConfigService }]; }, { sidenavOpened: [{
9241
9244
  type: Input
9242
9245
  }], openSidenav: [{
@@ -9306,7 +9309,7 @@ GeolocateButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Ge
9306
9309
  } }, dependencies: [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-geolocate-button-container[_ngcontent-%COMP%]{width:40px;background-color:#fff}.igo-geolocate-button-container[_ngcontent-%COMP%]:hover{background-color:#efefef}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
9307
9310
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GeolocateButtonComponent, [{
9308
9311
  type: Component,
9309
- args: [{ selector: 'igo-geolocate-button', template: "<div class=\"igo-geolocate-button-container\" *ngIf=\"map.geolocationController\">\n <button\n mat-icon-button\n [matTooltip]=\"map.geolocationController.tracking ? ('igo.geo.mapButtons.geolocateInactive' | translate) :('igo.geo.mapButtons.geolocate' | translate)\"\n matTooltipPosition=\"left\"\n [color]=\"color\"\n (click)=\"onGeolocationClick()\">\n <mat-icon svgIcon=\"{{icon$ | async}}\"></mat-icon>\n </button>\n</div>\n", styles: [".igo-geolocate-button-container{width:40px;background-color:#fff}.igo-geolocate-button-container:hover{background-color:#efefef}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}\n"] }]
9312
+ args: [{ selector: 'igo-geolocate-button', template: "<div class=\"igo-geolocate-button-container\" *ngIf=\"map.geolocationController\">\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"map.geolocationController.tracking ? ('igo.geo.mapButtons.geolocateInactive' | translate) :('igo.geo.mapButtons.geolocate' | translate)\"\r\n matTooltipPosition=\"left\"\r\n [color]=\"color\"\r\n (click)=\"onGeolocationClick()\">\r\n <mat-icon svgIcon=\"{{icon$ | async}}\"></mat-icon>\r\n </button>\r\n</div>\r\n", styles: [".igo-geolocate-button-container{width:40px;background-color:#fff}.igo-geolocate-button-container:hover{background-color:#efefef}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}\n"] }]
9310
9313
  }], function () { return [{ type: i2$1.ConfigService }]; }, { map: [{
9311
9314
  type: Input
9312
9315
  }], color: [{
@@ -9425,7 +9428,7 @@ OfflineButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Offl
9425
9428
  } }, dependencies: [i1$1.NgClass, i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i7.TranslatePipe], styles: [".baseStyle[_ngcontent-%COMP%]{width:40px;background-color:#fff}.baseStyle[_ngcontent-%COMP%]:hover{background-color:#efefef}.toggleStyle[_ngcontent-%COMP%]{width:40px;background-color:#b9b9b9}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
9426
9429
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OfflineButtonComponent, [{
9427
9430
  type: Component,
9428
- args: [{ selector: 'igo-offline-button', template: "<div *ngIf=\"visible\" class=\"igo-user-button-container\">\n <div>\n <button\n mat-icon-button\n [matTooltip]=\"checked ? ('igo.geo.mapButtons.online' | translate): ('igo.geo.mapButtons.offline' | translate)\"\n matTooltipPosition=\"left\"\n [ngClass]=\"[btnStyle]\"\n [color]=\"checked ? color : [colorOff]\"\n (click)=\"onToggle()\"\n (click)=\"map.onOfflineToggle(check)\">\n <mat-icon svgIcon=\"wifi-strength-off\"></mat-icon>\n </button>\n </div>\n</div>", styles: [".baseStyle{width:40px;background-color:#fff}.baseStyle:hover{background-color:#efefef}.toggleStyle{width:40px;background-color:#b9b9b9}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}\n"] }]
9431
+ args: [{ selector: 'igo-offline-button', template: "<div *ngIf=\"visible\" class=\"igo-user-button-container\">\r\n <div>\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"checked ? ('igo.geo.mapButtons.online' | translate): ('igo.geo.mapButtons.offline' | translate)\"\r\n matTooltipPosition=\"left\"\r\n [ngClass]=\"[btnStyle]\"\r\n [color]=\"checked ? color : [colorOff]\"\r\n (click)=\"onToggle()\"\r\n (click)=\"map.onOfflineToggle(check)\">\r\n <mat-icon svgIcon=\"wifi-strength-off\"></mat-icon>\r\n </button>\r\n </div>\r\n</div>", styles: [".baseStyle{width:40px;background-color:#fff}.baseStyle:hover{background-color:#efefef}.toggleStyle{width:40px;background-color:#b9b9b9}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}\n"] }]
9429
9432
  }], function () { return [{ type: i2$1.ConfigService }]; }, { change: [{
9430
9433
  type: Output
9431
9434
  }], map: [{
@@ -9530,7 +9533,7 @@ WakeLockButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Wak
9530
9533
  } }, dependencies: [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-wake-lock-button-container[_ngcontent-%COMP%]{width:40px;background-color:#fff}.igo-wake-lock-button-container[_ngcontent-%COMP%]:hover{background-color:#efefef}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"] });
9531
9534
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WakeLockButtonComponent, [{
9532
9535
  type: Component,
9533
- args: [{ selector: 'igo-wake-lock-button', template: "<div *ngIf=\"visible\" class=\"igo-wake-lock-button-container\">\n <div>\n <button \n [color]=\"color\"\n mat-icon-button\n [matTooltip]=\"enabled ? ('igo.geo.mapButtons.preventSreenLock' | translate): ('igo.geo.mapButtons.letScreenLock' | translate)\"\n matTooltipPosition=\"left\"\n (click)=\"toggleWakeLock()\">\n <mat-icon svgIcon=\"{{icon$ | async}}\"></mat-icon>\n </button>\n </div>\n</div>", styles: [".igo-wake-lock-button-container{width:40px;background-color:#fff}.igo-wake-lock-button-container:hover{background-color:#efefef}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}\n"] }]
9536
+ args: [{ selector: 'igo-wake-lock-button', template: "<div *ngIf=\"visible\" class=\"igo-wake-lock-button-container\">\r\n <div>\r\n <button \r\n [color]=\"color\"\r\n mat-icon-button\r\n [matTooltip]=\"enabled ? ('igo.geo.mapButtons.preventSreenLock' | translate): ('igo.geo.mapButtons.letScreenLock' | translate)\"\r\n matTooltipPosition=\"left\"\r\n (click)=\"toggleWakeLock()\">\r\n <mat-icon svgIcon=\"{{icon$ | async}}\"></mat-icon>\r\n </button>\r\n </div>\r\n</div>", styles: [".igo-wake-lock-button-container{width:40px;background-color:#fff}.igo-wake-lock-button-container:hover{background-color:#efefef}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}\n"] }]
9534
9537
  }], function () { return [{ type: i2$1.ConfigService }, { type: i2$1.StorageService }]; }, { color: [{
9535
9538
  type: Input
9536
9539
  }], map: [{
@@ -9643,7 +9646,7 @@ BaseLayersSwitcherComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
9643
9646
  } }, styles: [".igo-baselayers-switcher-container[_ngcontent-%COMP%]{height:auto;position:relative}.container-expand[_ngcontent-%COMP%]{overflow:hidden;border-width:0}.more-baselayers[_ngcontent-%COMP%]{width:80px;height:20px;background-color:#fff;text-align:center;cursor:pointer}.more-baselayers[_ngcontent-%COMP%]:hover{background-color:#efefef}.igo-baselayers-switcher-button-container[_ngcontent-%COMP%]{width:40px;background-color:#fff}.igo-baselayers-switcher-button-container[_ngcontent-%COMP%]:hover{background-color:#efefef}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}"], data: { animation: [baseLayersSwitcherSlideInOut()] } });
9644
9647
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseLayersSwitcherComponent, [{
9645
9648
  type: Component,
9646
- args: [{ selector: 'igo-baselayers-switcher', animations: [baseLayersSwitcherSlideInOut()], template: "<div *ngIf=\"baseLayers.length > 0\"\n class=\"igo-baselayers-switcher-container\"\n [ngClass]=\"{'container-expand': expand}\"\n [@baseLayerSwitcherState]=\"expand ? 'expand' : useStaticIcon ? 'collapseIcon' : 'collapseMap'\"\n (@baseLayerSwitcherState.start)=\"showButton=false\"\n (@baseLayerSwitcherState.done)=\"showButton=true\"\n (click)=\"collapseOrExpand()\">\n\n <div *ngIf=\"useStaticIcon && !expand && showButton\" class=\"igo-baselayers-switcher-button-container\">\n <button\n mat-icon-button\n [matTooltip]=\"'igo.geo.mapButtons.baselayerSwitcher' | translate\"\n matTooltipPosition=\"right\"\n color=\"primary\">\n <mat-icon svgIcon=\"image-multiple\"></mat-icon>\n </button>\n </div>\n\n <igo-mini-basemap class=\"mat-typography\" *ngFor=\"let baseLayer of baseLayers; let i = index\"\n [map]=\"map\"\n [baseLayer]=\"baseLayer\"\n [title]=\"(baseLayers.length > 2 && !expand) ? ('igo.geo.baselayersSwitcher.title' | translate) : baseLayer.title\"\n [display]=\"expand || (i === 0 && !useStaticIcon)\"\n [disabled]=\"!expand && baseLayers.length > 1\">\n </igo-mini-basemap>\n\n <div class=\"more-baselayers\">\n <mat-icon class=\"material-icons mat-icon mat-list-avatar\" color=\"primary\" svgIcon=\"menu-down\"></mat-icon>\n </div>\n\n</div>\n", styles: [".igo-baselayers-switcher-container{height:auto;position:relative}.container-expand{overflow:hidden;border-width:0}.more-baselayers{width:80px;height:20px;background-color:#fff;text-align:center;cursor:pointer}.more-baselayers:hover{background-color:#efefef}.igo-baselayers-switcher-button-container{width:40px;background-color:#fff}.igo-baselayers-switcher-button-container:hover{background-color:#efefef}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}\n"] }]
9649
+ args: [{ selector: 'igo-baselayers-switcher', animations: [baseLayersSwitcherSlideInOut()], template: "<div *ngIf=\"baseLayers.length > 0\"\r\n class=\"igo-baselayers-switcher-container\"\r\n [ngClass]=\"{'container-expand': expand}\"\r\n [@baseLayerSwitcherState]=\"expand ? 'expand' : useStaticIcon ? 'collapseIcon' : 'collapseMap'\"\r\n (@baseLayerSwitcherState.start)=\"showButton=false\"\r\n (@baseLayerSwitcherState.done)=\"showButton=true\"\r\n (click)=\"collapseOrExpand()\">\r\n\r\n <div *ngIf=\"useStaticIcon && !expand && showButton\" class=\"igo-baselayers-switcher-button-container\">\r\n <button\r\n mat-icon-button\r\n [matTooltip]=\"'igo.geo.mapButtons.baselayerSwitcher' | translate\"\r\n matTooltipPosition=\"right\"\r\n color=\"primary\">\r\n <mat-icon svgIcon=\"image-multiple\"></mat-icon>\r\n </button>\r\n </div>\r\n\r\n <igo-mini-basemap class=\"mat-typography\" *ngFor=\"let baseLayer of baseLayers; let i = index\"\r\n [map]=\"map\"\r\n [baseLayer]=\"baseLayer\"\r\n [title]=\"(baseLayers.length > 2 && !expand) ? ('igo.geo.baselayersSwitcher.title' | translate) : baseLayer.title\"\r\n [display]=\"expand || (i === 0 && !useStaticIcon)\"\r\n [disabled]=\"!expand && baseLayers.length > 1\">\r\n </igo-mini-basemap>\r\n\r\n <div class=\"more-baselayers\">\r\n <mat-icon class=\"material-icons mat-icon mat-list-avatar\" color=\"primary\" svgIcon=\"menu-down\"></mat-icon>\r\n </div>\r\n\r\n</div>\r\n", styles: [".igo-baselayers-switcher-container{height:auto;position:relative}.container-expand{overflow:hidden;border-width:0}.more-baselayers{width:80px;height:20px;background-color:#fff;text-align:center;cursor:pointer}.more-baselayers:hover{background-color:#efefef}.igo-baselayers-switcher-button-container{width:40px;background-color:#fff}.igo-baselayers-switcher-button-container:hover{background-color:#efefef}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}\n"] }]
9647
9650
  }], function () { return [{ type: i2$1.MediaService }]; }, { map: [{
9648
9651
  type: Input
9649
9652
  }], useStaticIcon: [{
@@ -9656,7 +9659,7 @@ class GeoDBService {
9656
9659
  this.compression = compression;
9657
9660
  this.dbName = 'geoData';
9658
9661
  this.collisionsMap = new Map();
9659
- this._newTiles = 0;
9662
+ this._newData = 0;
9660
9663
  }
9661
9664
  /**
9662
9665
  * Only blob can be will be compressed
@@ -9691,7 +9694,7 @@ class GeoDBService {
9691
9694
  return this.ngxIndexedDBService.getByID(this.dbName, url);
9692
9695
  }), concatMap((dbObject) => {
9693
9696
  if (!dbObject) {
9694
- this._newTiles++;
9697
+ this._newData++;
9695
9698
  return this.ngxIndexedDBService.add(this.dbName, geoDBData);
9696
9699
  }
9697
9700
  else {
@@ -9743,11 +9746,11 @@ class GeoDBService {
9743
9746
  deleteByKey(url) {
9744
9747
  return this.ngxIndexedDBService.deleteByKey(this.dbName, url);
9745
9748
  }
9746
- getRegionTileCountByID(id) {
9749
+ getRegionCountByID(id) {
9747
9750
  const subject = new Subject();
9748
9751
  const dbRequest = this.getRegionByID(id)
9749
- .subscribe((tiles) => {
9750
- subject.next(tiles.length);
9752
+ .subscribe((datas) => {
9753
+ subject.next(datas.length);
9751
9754
  subject.complete();
9752
9755
  });
9753
9756
  return subject;
@@ -9766,9 +9769,9 @@ class GeoDBService {
9766
9769
  }
9767
9770
  const IDBKey = IDBKeyRange.only(id);
9768
9771
  const dbRequest = this.ngxIndexedDBService.getAllByIndex(this.dbName, 'regionID', IDBKey);
9769
- dbRequest.subscribe((tiles) => {
9770
- tiles.forEach((tile) => {
9771
- this.ngxIndexedDBService.deleteByKey(this.dbName, tile.url);
9772
+ dbRequest.subscribe((datas) => {
9773
+ datas.forEach((data) => {
9774
+ this.ngxIndexedDBService.deleteByKey(this.dbName, data.url);
9772
9775
  });
9773
9776
  });
9774
9777
  return dbRequest;
@@ -9779,7 +9782,7 @@ class GeoDBService {
9779
9782
  }
9780
9783
  resetCounters() {
9781
9784
  this.resetCollisionsMap();
9782
- this._newTiles = 0;
9785
+ this._newData = 0;
9783
9786
  }
9784
9787
  resetCollisionsMap() {
9785
9788
  this.collisionsMap = new Map();
@@ -9797,8 +9800,8 @@ class GeoDBService {
9797
9800
  }
9798
9801
  }
9799
9802
  }
9800
- get newTiles() {
9801
- return this._newTiles;
9803
+ get newData() {
9804
+ return this._newData;
9802
9805
  }
9803
9806
  }
9804
9807
  GeoDBService.ɵfac = function GeoDBService_Factory(t) { return new (t || GeoDBService)(i0.ɵɵinject(i1$3.NgxIndexedDBService), i0.ɵɵinject(i2$1.CompressionService)); };
@@ -10158,7 +10161,7 @@ MiniBaseMapComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MiniBa
10158
10161
  } }, styles: [".igo-mini-basemap-container[_ngcontent-%COMP%]{width:80px;height:80px;background-color:#ffffff03;border:2px solid white;box-shadow:0 1px 4px #0000004d;cursor:pointer;margin-top:5px}.igo-mini-basemap-container[_ngcontent-%COMP%]:hover .igo-mini-basemap-title[_ngcontent-%COMP%]{color:#000;text-shadow:0 0 5px white}.igo-mini-basemap-container[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:100%;height:100%}.igo-mini-basemap-title[_ngcontent-%COMP%]{position:relative;top:-76px;height:76px;width:76px;text-align:center;vertical-align:bottom;color:#fff;text-shadow:0 0 5px black;white-space:normal;display:flex;align-items:flex-end;justify-content:center}"] });
10159
10162
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MiniBaseMapComponent, [{
10160
10163
  type: Component,
10161
- args: [{ selector: 'igo-mini-basemap', template: "<div class=\"igo-mini-basemap-container\">\n\n <div *ngIf=\"display\" (click)=\"changeBaseLayer(baseLayer)\">\n <igo-map-browser [map]=\"basemap\"></igo-map-browser>\n <div *ngIf='title' class='igo-mini-basemap-title'> {{title}} </div>\n </div>\n\n</div>\n", styles: [".igo-mini-basemap-container{width:80px;height:80px;background-color:#ffffff03;border:2px solid white;box-shadow:0 1px 4px #0000004d;cursor:pointer;margin-top:5px}.igo-mini-basemap-container:hover .igo-mini-basemap-title{color:#000;text-shadow:0 0 5px white}.igo-mini-basemap-container>div{width:100%;height:100%}.igo-mini-basemap-title{position:relative;top:-76px;height:76px;width:76px;text-align:center;vertical-align:bottom;color:#fff;text-shadow:0 0 5px black;white-space:normal;display:flex;align-items:flex-end;justify-content:center}\n"] }]
10164
+ args: [{ selector: 'igo-mini-basemap', template: "<div class=\"igo-mini-basemap-container\">\r\n\r\n <div *ngIf=\"display\" (click)=\"changeBaseLayer(baseLayer)\">\r\n <igo-map-browser [map]=\"basemap\"></igo-map-browser>\r\n <div *ngIf='title' class='igo-mini-basemap-title'> {{title}} </div>\r\n </div>\r\n\r\n</div>\r\n", styles: [".igo-mini-basemap-container{width:80px;height:80px;background-color:#ffffff03;border:2px solid white;box-shadow:0 1px 4px #0000004d;cursor:pointer;margin-top:5px}.igo-mini-basemap-container:hover .igo-mini-basemap-title{color:#000;text-shadow:0 0 5px white}.igo-mini-basemap-container>div{width:100%;height:100%}.igo-mini-basemap-title{position:relative;top:-76px;height:76px;width:76px;text-align:center;vertical-align:bottom;color:#fff;text-shadow:0 0 5px black;white-space:normal;display:flex;align-items:flex-end;justify-content:center}\n"] }]
10162
10165
  }], function () { return [{ type: LayerService }, { type: i0.ApplicationRef }]; }, { map: [{
10163
10166
  type: Input
10164
10167
  }], disabled: [{
@@ -10223,7 +10226,7 @@ RotationButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Rot
10223
10226
  } }, dependencies: [i1$1.NgIf, i1$1.NgStyle, i2.MatIcon, i3.MatButton, i4.MatTooltip, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-rotation-button-container[_ngcontent-%COMP%]{width:40px;background-color:#fff}.igo-rotation-button-container[_ngcontent-%COMP%]:hover{background-color:#efefef}button[_ngcontent-%COMP%], [_nghost-%COMP%] button .mat-button-ripple-round{border-radius:0}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){button[_ngcontent-%COMP%]:disabled, [_nghost-%COMP%] button .mat-button-ripple-round:disabled{display:none}}"] });
10224
10227
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RotationButtonComponent, [{
10225
10228
  type: Component,
10226
- args: [{ selector: 'igo-rotation-button', template: "<div *ngIf=\"((rotated$ | async) && !showIfNoRotation) || showIfNoRotation\" class=\"igo-rotation-button-container\"\n [matTooltip]=\"(rotated$ | async) ? ('igo.geo.mapButtons.resetRotation' | translate: {azimuth: azimuthRounded, rotation: rotationRounded}): ('igo.geo.mapButtons.tipRotation' | translate)\"\n matTooltipPosition=\"left\">\n <button mat-icon-button matTooltipPosition=\"left\" [color]=\"color\" [disabled]=\"(rotated$ | async) === false\"\n (click)=\"map.viewController.resetRotation()\">\n <mat-icon [ngStyle]=\"currentStyle$ | async\" svgIcon=\"navigation\">\n </mat-icon>\n </button>\n</div>\n", styles: [".igo-rotation-button-container{width:40px;background-color:#fff}.igo-rotation-button-container:hover{background-color:#efefef}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){button:disabled,:host ::ng-deep button .mat-button-ripple-round:disabled{display:none}}\n"] }]
10229
+ args: [{ selector: 'igo-rotation-button', template: "<div *ngIf=\"((rotated$ | async) && !showIfNoRotation) || showIfNoRotation\" class=\"igo-rotation-button-container\"\r\n [matTooltip]=\"(rotated$ | async) ? ('igo.geo.mapButtons.resetRotation' | translate: {azimuth: azimuthRounded, rotation: rotationRounded}): ('igo.geo.mapButtons.tipRotation' | translate)\"\r\n matTooltipPosition=\"left\">\r\n <button mat-icon-button matTooltipPosition=\"left\" [color]=\"color\" [disabled]=\"(rotated$ | async) === false\"\r\n (click)=\"map.viewController.resetRotation()\">\r\n <mat-icon [ngStyle]=\"currentStyle$ | async\" svgIcon=\"navigation\">\r\n </mat-icon>\r\n </button>\r\n</div>\r\n", styles: [".igo-rotation-button-container{width:40px;background-color:#fff}.igo-rotation-button-container:hover{background-color:#efefef}button,:host ::ng-deep button .mat-button-ripple-round{border-radius:0}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){button:disabled,:host ::ng-deep button .mat-button-ripple-round:disabled{display:none}}\n"] }]
10227
10230
  }], function () { return []; }, { map: [{
10228
10231
  type: Input
10229
10232
  }], showIfNoRotation: [{
@@ -10417,7 +10420,7 @@ SwipeControlComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Swipe
10417
10420
  } }, styles: [".igo-swipe-control-container[_ngcontent-%COMP%]{position:absolute;width:80px;height:100%;top:0%;left:50%;cursor:-webkit-grab;cursor:grab;z-index:1;transform:translate(-40px)}.igo-swipe-control-container[_ngcontent-%COMP%]:active{cursor:-webkit-grabbing;cursor:grabbing}.igo-swipe-control-line[_ngcontent-%COMP%]{position:absolute;width:4px;height:100%;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#5e5a5a}.igo-swipe-control-arrows[_ngcontent-%COMP%]{position:absolute;width:32px;height:32px;left:50%;top:50%;transform:translate(-50%,-50%);margin-top:-16px;padding:5px 4px;background-color:#5e5a5a;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0)}.igo-swipe-control-arrows[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{display:inline-block;width:0;height:0;border-top:10px solid transparent;border-bottom:10px solid transparent}.igo-swipe-control-arrows[_ngcontent-%COMP%] .igo-arrow-right[_ngcontent-%COMP%]{margin-left:4px;border-left:10px solid white}.igo-swipe-control-arrows[_ngcontent-%COMP%] .igo-arrow-left[_ngcontent-%COMP%]{border-right:10px solid white}.igo-swipe-control-arrows[_ngcontent-%COMP%]:active{display:none}"] });
10418
10421
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SwipeControlComponent, [{
10419
10422
  type: Component,
10420
- args: [{ selector: 'igo-swipe-control', template: "<div class=\"igo-swipe-control-container\" id=\"igo-layer-swipe\"\n (mousedown)=\"dragDown($event)\"\n (mouseup)=\"closeDragMouseElement()\"\n (touchstart)=\"dragDown($event)\"\n (touchend)=\"closeDragTouchElement()\">\n <div class=\"igo-swipe-control-line\" ></div>\n \n <div class=\"igo-swipe-control-arrows\" id=\"arrows\">\n <div class=\"igo-arrow-left\"></div>\n <div class=\"igo-arrow-right\"></div>\n </div>\n</div>\n", styles: [".igo-swipe-control-container{position:absolute;width:80px;height:100%;top:0%;left:50%;cursor:-webkit-grab;cursor:grab;z-index:1;transform:translate(-40px)}.igo-swipe-control-container:active{cursor:-webkit-grabbing;cursor:grabbing}.igo-swipe-control-line{position:absolute;width:4px;height:100%;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#5e5a5a}.igo-swipe-control-arrows{position:absolute;width:32px;height:32px;left:50%;top:50%;transform:translate(-50%,-50%);margin-top:-16px;padding:5px 4px;background-color:#5e5a5a;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0)}.igo-swipe-control-arrows div{display:inline-block;width:0;height:0;border-top:10px solid transparent;border-bottom:10px solid transparent}.igo-swipe-control-arrows .igo-arrow-right{margin-left:4px;border-left:10px solid white}.igo-swipe-control-arrows .igo-arrow-left{border-right:10px solid white}.igo-swipe-control-arrows:active{display:none}\n"] }]
10423
+ args: [{ selector: 'igo-swipe-control', template: "<div class=\"igo-swipe-control-container\" id=\"igo-layer-swipe\"\r\n (mousedown)=\"dragDown($event)\"\r\n (mouseup)=\"closeDragMouseElement()\"\r\n (touchstart)=\"dragDown($event)\"\r\n (touchend)=\"closeDragTouchElement()\">\r\n <div class=\"igo-swipe-control-line\" ></div>\r\n \r\n <div class=\"igo-swipe-control-arrows\" id=\"arrows\">\r\n <div class=\"igo-arrow-left\"></div>\r\n <div class=\"igo-arrow-right\"></div>\r\n </div>\r\n</div>\r\n", styles: [".igo-swipe-control-container{position:absolute;width:80px;height:100%;top:0%;left:50%;cursor:-webkit-grab;cursor:grab;z-index:1;transform:translate(-40px)}.igo-swipe-control-container:active{cursor:-webkit-grabbing;cursor:grabbing}.igo-swipe-control-line{position:absolute;width:4px;height:100%;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#5e5a5a}.igo-swipe-control-arrows{position:absolute;width:32px;height:32px;left:50%;top:50%;transform:translate(-50%,-50%);margin-top:-16px;padding:5px 4px;background-color:#5e5a5a;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0)}.igo-swipe-control-arrows div{display:inline-block;width:0;height:0;border-top:10px solid transparent;border-bottom:10px solid transparent}.igo-swipe-control-arrows .igo-arrow-right{margin-left:4px;border-left:10px solid white}.igo-swipe-control-arrows .igo-arrow-left{border-right:10px solid white}.igo-swipe-control-arrows:active{display:none}\n"] }]
10421
10424
  }], function () { return []; }, { map: [{
10422
10425
  type: Input
10423
10426
  }] }); })();
@@ -10465,7 +10468,7 @@ MapCenterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MapCente
10465
10468
  } }, styles: [".mapCenter[_ngcontent-%COMP%]{width:30px;height:30px;position:absolute;top:50%;left:50%;transform:translate(-15px,-15px);pointer-events:none}.mapCenter[_ngcontent-%COMP%] .vertical[_ngcontent-%COMP%], .mapCenter[_ngcontent-%COMP%] .horizontal[_ngcontent-%COMP%]{width:4px;height:30px;position:absolute;left:13px;background-color:#000}.mapCenter[_ngcontent-%COMP%] .horizontal[_ngcontent-%COMP%]{transform:rotate(90deg)}"] });
10466
10469
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MapCenterComponent, [{
10467
10470
  type: Component,
10468
- args: [{ selector: 'igo-map-center', template: "<div\n class=\"mapCenter\"\n id=\"mapCenter\">\n <div class=\"vertical\"></div>\n <div class=\"horizontal\"></div>\n</div>\n", styles: [".mapCenter{width:30px;height:30px;position:absolute;top:50%;left:50%;transform:translate(-15px,-15px);pointer-events:none}.mapCenter .vertical,.mapCenter .horizontal{width:4px;height:30px;position:absolute;left:13px;background-color:#000}.mapCenter .horizontal{transform:rotate(90deg)}\n"] }]
10471
+ args: [{ selector: 'igo-map-center', template: "<div\r\n class=\"mapCenter\"\r\n id=\"mapCenter\">\r\n <div class=\"vertical\"></div>\r\n <div class=\"horizontal\"></div>\r\n</div>\r\n", styles: [".mapCenter{width:30px;height:30px;position:absolute;top:50%;left:50%;transform:translate(-15px,-15px);pointer-events:none}.mapCenter .vertical,.mapCenter .horizontal{width:4px;height:30px;position:absolute;left:13px;background-color:#000}.mapCenter .horizontal{transform:rotate(90deg)}\n"] }]
10469
10472
  }], function () { return []; }, { map: [{
10470
10473
  type: Input
10471
10474
  }] }); })();
@@ -10492,7 +10495,7 @@ InfoSectionComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: InfoSe
10492
10495
  } }, dependencies: [i1$1.NgIf], styles: [".infoSection[_ngcontent-%COMP%]{border-radius:10px;background-color:#6e6e6e66;padding:2.5px;position:absolute;text-align:center;top:5px;left:50%;text-shadow:0 0 5px white,0 0 10px white,0 0 15px white}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.infoSection[_ngcontent-%COMP%]{top:50px;left:10%}}"] });
10493
10496
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoSectionComponent, [{
10494
10497
  type: Component,
10495
- args: [{ selector: 'igo-info-section', template: "<div *ngIf=\"infoContent && infoContent.length\" class=\"infoSection\">\n <pre>{{infoContent}}</pre>\n</div>", styles: [".infoSection{border-radius:10px;background-color:#6e6e6e66;padding:2.5px;position:absolute;text-align:center;top:5px;left:50%;text-shadow:0 0 5px white,0 0 10px white,0 0 15px white}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.infoSection{top:50px;left:10%}}\n"] }]
10498
+ args: [{ selector: 'igo-info-section', template: "<div *ngIf=\"infoContent && infoContent.length\" class=\"infoSection\">\r\n <pre>{{infoContent}}</pre>\r\n</div>", styles: [".infoSection{border-radius:10px;background-color:#6e6e6e66;padding:2.5px;position:absolute;text-align:center;top:5px;left:50%;text-shadow:0 0 5px white,0 0 10px white,0 0 15px white}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.infoSection{top:50px;left:10%}}\n"] }]
10496
10499
  }], function () { return []; }, { infoContent: [{
10497
10500
  type: Input
10498
10501
  }] }); })();
@@ -10819,7 +10822,7 @@ class QueryService {
10819
10822
  features = this.extractGML2Data(res, layer, allowedFieldsAndAlias);
10820
10823
  break;
10821
10824
  }
10822
- if (features.length > 0 && features[0].geometry === null) {
10825
+ if (features.length > 0 && (features[0].geometry === null || !features[0].geometry)) {
10823
10826
  const geomToAdd = this.createGeometryFromUrlClick(url);
10824
10827
  for (const feature of features) {
10825
10828
  feature.geometry = geomToAdd;
@@ -10830,7 +10833,7 @@ class QueryService {
10830
10833
  new RegExp('FEATURE_COUNT=' + this.featureCount) :
10831
10834
  new RegExp('FEATURE_COUNT=' + this.defaultFeatureCount);
10832
10835
  if (featureCount.test(url) &&
10833
- ((wmsDatasource.params?.FEATURE_COUNT && features.length === this.featureCount) ||
10836
+ ((wmsDatasource.params?.FEATURE_COUNT && this.featureCount > 1 && features.length === this.featureCount) ||
10834
10837
  (!wmsDatasource.params?.FEATURE_COUNT && features.length === this.defaultFeatureCount))) {
10835
10838
  this.languageService.translate.get('igo.geo.query.featureCountMax', { value: layer.title }).subscribe(message => {
10836
10839
  const messageObj = this.messageService.info(message);
@@ -12520,6 +12523,9 @@ class CatalogBrowserComponent {
12520
12523
  if (!layer.options.sourceOptions.optionsFromApi) {
12521
12524
  layer.options.sourceOptions.optionsFromApi = true;
12522
12525
  }
12526
+ if (this.catalog.profils?.length) {
12527
+ layer.options.security = { profils: this.catalog.profils };
12528
+ }
12523
12529
  return this.layerService.createAsyncLayer(layer.options);
12524
12530
  });
12525
12531
  zip(...layers$).subscribe((oLayers) => {
@@ -12612,7 +12618,7 @@ CatalogBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Cat
12612
12618
  } }, encapsulation: 2, changeDetection: 0 });
12613
12619
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogBrowserComponent, [{
12614
12620
  type: Component,
12615
- args: [{ selector: 'igo-catalog-browser', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-list [navigation]=\"false\" [selection]=\"false\">\n <ng-template ngFor let-item [ngForOf]=\"store.view.all$() | async\">\n <ng-container *ngIf=\"isGroup(item)\">\n <igo-catalog-browser-group\n [catalog]=\"catalog\"\n [group]=\"item\"\n [state]=\"store.state\"\n [resolution]=\"resolution$ | async\"\n [catalogAllowLegend]=\"catalogAllowLegend\"\n [collapsed]=\"(store.count === 1) ? false : true\"\n [toggleCollapsed]=\"toggleCollapsedGroup\"\n (addedChange)=\"onGroupAddedChange($event)\"\n (layerAddedChange)=\"onLayerAddedChange($event)\">\n </igo-catalog-browser-group>\n </ng-container>\n\n <ng-container *ngIf=\"isLayer(item)\">\n <igo-catalog-browser-layer\n igoListItem\n [layer]=\"item\"\n [resolution]=\"resolution$ | async\"\n [catalogAllowLegend]=\"catalogAllowLegend\"\n [added]=\"store.state.get(item).added\"\n (addedChange)=\"onLayerAddedChange($event)\">\n </igo-catalog-browser-layer>\n </ng-container>\n </ng-template>\n</igo-list>\n" }]
12621
+ args: [{ selector: 'igo-catalog-browser', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-list [navigation]=\"false\" [selection]=\"false\">\r\n <ng-template ngFor let-item [ngForOf]=\"store.view.all$() | async\">\r\n <ng-container *ngIf=\"isGroup(item)\">\r\n <igo-catalog-browser-group\r\n [catalog]=\"catalog\"\r\n [group]=\"item\"\r\n [state]=\"store.state\"\r\n [resolution]=\"resolution$ | async\"\r\n [catalogAllowLegend]=\"catalogAllowLegend\"\r\n [collapsed]=\"(store.count === 1) ? false : true\"\r\n [toggleCollapsed]=\"toggleCollapsedGroup\"\r\n (addedChange)=\"onGroupAddedChange($event)\"\r\n (layerAddedChange)=\"onLayerAddedChange($event)\">\r\n </igo-catalog-browser-group>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"isLayer(item)\">\r\n <igo-catalog-browser-layer\r\n igoListItem\r\n [layer]=\"item\"\r\n [resolution]=\"resolution$ | async\"\r\n [catalogAllowLegend]=\"catalogAllowLegend\"\r\n [added]=\"store.state.get(item).added\"\r\n (addedChange)=\"onLayerAddedChange($event)\">\r\n </igo-catalog-browser-layer>\r\n </ng-container>\r\n </ng-template>\r\n</igo-list>\r\n" }]
12616
12622
  }], function () { return [{ type: LayerService }, { type: i0.ChangeDetectorRef }]; }, { catalogAllowLegend: [{
12617
12623
  type: Input
12618
12624
  }], catalog: [{
@@ -12984,7 +12990,7 @@ LayerLegendComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LayerL
12984
12990
  } }, dependencies: [i13.MatFormField, i2$2.NgControlStatus, i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i1$1.NgStyle, i2$2.NgModel, i2.MatIcon, i15.MatSelect, i9.MatOption, i4.MatTooltip, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i5$1.CollapseDirective, i5$1.ImageErrorDirective, i1$1.AsyncPipe, i7.TranslatePipe, i5$1.SanitizeHtmlPipe], styles: [".igo-layer-legend.with-title[_ngcontent-%COMP%]{padding-left:18px}img[_ngcontent-%COMP%]:after{content:\" \";position:relative;height:17px;float:left;width:17px;top:-3px;right:19px;background-color:#fff;border:3px solid #f3f3f3;border-radius:50%;-webkit-animation:2s linear infinite spin;animation:2s linear infinite spin}@-moz-document url-prefix(){img:after{margin-left:19px}}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"], changeDetection: 0 });
12985
12991
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayerLegendComponent, [{
12986
12992
  type: Component,
12987
- args: [{ selector: 'igo-layer-legend', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"legendItems$ | async as items\">\n <ng-container *ngIf=\"items.length; else noItems\">\n <ng-container *ngFor=\"let item of items.slice().reverse()\" #renderedLegends>\n <div *ngIf=\"getLegend; else noItems\">\n <mat-list-item *ngIf=\"item.title\">\n <mat-icon\n id=\"legend-toggle\"\n class=\"igo-chevron\"\n mat-list-avatar\n igoCollapse\n [target]=\"legend\"\n [collapsed]=\"(item.collapsed)\"\n (toggle)=\"toggleLegendItem($event, item)\"\n svgIcon=\"chevron-up\">\n </mat-icon>\n <h4 matLine>{{computeItemTitle(item) | async}} </h4>\n </mat-list-item>\n <div #legend class=\"igo-layer-legend\" [ngClass]=\"{'with-title': item.title}\">\n <div *ngIf=\"currentStyle !== undefined\">\n <mat-form-field>\n <mat-select tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" [(ngModel)]=\"currentStyle\"\n (selectionChange)=\"onChangeStyle()\">\n <mat-option *ngFor=\"let style of styles\" [value]=\"style.name\">{{style.title}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div *ngIf=\"!(item.collapsed)\">\n <div *ngIf=\"item.url\">\n <img igoImageError *ngIf=\"item.imgGraphValue\" hideError=\"true\" #renderedLegend id=\"{{item.title}}\" (load)=\"onLoadImage(item.title)\"\n [src]=\"item.imgGraphValue\"\n alt=\"{{'igo.geo.layer.legend.loadingLegendText' | translate}}\">\n <small *ngIf=\"imagesHeight[item.title]<16\">\n {{'igo.geo.layer.legend.noLegendScale' | translate}}\n </small>\n </div>\n <div\n [ngStyle]=\"item.style\"\n [innerHTML]=\"item.html | sanitizeHtml\"\n *ngIf=\"item.html\">\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-template #noItems>\n <small>\n {{'igo.geo.layer.legend.noLegendText' | translate}}\n </small>\n </ng-template>\n\n</ng-container>\n", styles: [".igo-layer-legend.with-title{padding-left:18px}img:after{content:\" \";position:relative;height:17px;float:left;width:17px;top:-3px;right:19px;background-color:#fff;border:3px solid #f3f3f3;border-radius:50%;-webkit-animation:2s linear infinite spin;animation:2s linear infinite spin}@-moz-document url-prefix(){img:after{margin-left:19px}}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
12993
+ args: [{ selector: 'igo-layer-legend', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"legendItems$ | async as items\">\r\n <ng-container *ngIf=\"items.length; else noItems\">\r\n <ng-container *ngFor=\"let item of items.slice().reverse()\" #renderedLegends>\r\n <div *ngIf=\"getLegend; else noItems\">\r\n <mat-list-item *ngIf=\"item.title\">\r\n <mat-icon\r\n id=\"legend-toggle\"\r\n class=\"igo-chevron\"\r\n mat-list-avatar\r\n igoCollapse\r\n [target]=\"legend\"\r\n [collapsed]=\"(item.collapsed)\"\r\n (toggle)=\"toggleLegendItem($event, item)\"\r\n svgIcon=\"chevron-up\">\r\n </mat-icon>\r\n <h4 matLine>{{computeItemTitle(item) | async}} </h4>\r\n </mat-list-item>\r\n <div #legend class=\"igo-layer-legend\" [ngClass]=\"{'with-title': item.title}\">\r\n <div *ngIf=\"currentStyle !== undefined\">\r\n <mat-form-field>\r\n <mat-select tooltip-position=\"below\" matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" [(ngModel)]=\"currentStyle\"\r\n (selectionChange)=\"onChangeStyle()\">\r\n <mat-option *ngFor=\"let style of styles\" [value]=\"style.name\">{{style.title}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div *ngIf=\"!(item.collapsed)\">\r\n <div *ngIf=\"item.url\">\r\n <img igoImageError *ngIf=\"item.imgGraphValue\" hideError=\"true\" #renderedLegend id=\"{{item.title}}\" (load)=\"onLoadImage(item.title)\"\r\n [src]=\"item.imgGraphValue\"\r\n alt=\"{{'igo.geo.layer.legend.loadingLegendText' | translate}}\">\r\n <small *ngIf=\"imagesHeight[item.title]<16\">\r\n {{'igo.geo.layer.legend.noLegendScale' | translate}}\r\n </small>\r\n </div>\r\n <div\r\n [ngStyle]=\"item.style\"\r\n [innerHTML]=\"item.html | sanitizeHtml\"\r\n *ngIf=\"item.html\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #noItems>\r\n <small>\r\n {{'igo.geo.layer.legend.noLegendText' | translate}}\r\n </small>\r\n </ng-template>\r\n\r\n</ng-container>\r\n", styles: [".igo-layer-legend.with-title{padding-left:18px}img:after{content:\" \";position:relative;height:17px;float:left;width:17px;top:-3px;right:19px;background-color:#fff;border:3px solid #f3f3f3;border-radius:50%;-webkit-animation:2s linear infinite spin;animation:2s linear infinite spin}@-moz-document url-prefix(){img:after{margin-left:19px}}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
12988
12994
  }], function () { return [{ type: CapabilitiesService }, { type: i2$1.LanguageService }, { type: i2$1.ConfigService }, { type: i1$2.HttpClient }, { type: i0.ChangeDetectorRef }]; }, { updateLegendOnResolutionChange: [{
12989
12995
  type: Input
12990
12996
  }], renderedLegends: [{
@@ -13229,7 +13235,7 @@ CatalogBrowserLayerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
13229
13235
  } }, dependencies: [i1$1.NgClass, i1$1.NgIf, i7$1.MatBadge, i3.MatButton, i2.MatIcon, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i4.MatTooltip, i5$1.IgoBadgeIconDirective, MetadataButtonComponent, LayerLegendComponent, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-cataloglayer-title[_ngcontent-%COMP%]{cursor:pointer}.igo-cataloglayer-legend-container[_ngcontent-%COMP%]{padding-left:18px;width:calc(100% - 18px);margin-left:40px}.igo-cataloglayer-external-icon[_ngcontent-%COMP%]{cursor:help}"], changeDetection: 0 });
13230
13236
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogBrowserLayerComponent, [{
13231
13237
  type: Component,
13232
- args: [{ selector: 'igo-catalog-browser-layer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\n <mat-icon *ngIf=\"haveGroup()\" mat-list-avatar svgIcon=\"blank\"></mat-icon>\n <h4 mat-line matTooltipShowDelay=\"500\" [ngClass]=\"(catalogAllowLegend)?'igo-cataloglayer-title':''\" (click)=\"askForLegend($event)\" [matTooltip]=\"computeTitleTooltip()\">{{title}}</h4>\n\n <button *ngIf=\"layer.externalProvider\"\n disabled=\"true\"\n mat-icon-button>\n <mat-icon\n class=\"igo-cataloglayer-external-icon\"\n *ngIf=\"layer.externalProvider\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.externalProvider.layer' | translate\"\n color=\"primary\"\n (click)=\"$event.stopPropagation()\"\n svgIcon=\"earth-arrow-right\">\n </mat-icon>\n </button>\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\n\n <button\n (mouseenter)=\"onMouseEvent($event)\" (mouseleave)=\"onMouseEvent($event)\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"computeTooltip() | translate\"\n [color]=\"(isPreview$ | async) ? '' : added ? 'warn' : ''\"\n (click)=\"onToggleClick($event)\">\n <mat-icon\n matBadge=\"icon\"\n igoMatBadgeIcon=\"eye-off\"\n igoMatBadgeInverseColor=\"true\"\n [matBadgeHidden]=\"isInResolutionsRange()\"\n matBadgeDisabled=\"true\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n [svgIcon]=\"(isPreview$ | async) ? 'plus' : added ? 'delete' : 'plus'\">\n </mat-icon>\n </button>\n\n</mat-list-item>\n\n<div #legend class=\"igo-cataloglayer-legend-container\">\n <igo-layer-legend\n *ngIf=\"(layerLegendShown$ | async) && (igoLayer$ | async) && catalogAllowLegend\"\n [layer]=\"igoLayer$ | async\">\n </igo-layer-legend>\n</div>\n", styles: [".igo-cataloglayer-title{cursor:pointer}.igo-cataloglayer-legend-container{padding-left:18px;width:calc(100% - 18px);margin-left:40px}.igo-cataloglayer-external-icon{cursor:help}\n"] }]
13238
+ args: [{ selector: 'igo-catalog-browser-layer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\r\n <mat-icon *ngIf=\"haveGroup()\" mat-list-avatar svgIcon=\"blank\"></mat-icon>\r\n <h4 mat-line matTooltipShowDelay=\"500\" [ngClass]=\"(catalogAllowLegend)?'igo-cataloglayer-title':''\" (click)=\"askForLegend($event)\" [matTooltip]=\"computeTitleTooltip()\">{{title}}</h4>\r\n\r\n <button *ngIf=\"layer.externalProvider\"\r\n disabled=\"true\"\r\n mat-icon-button>\r\n <mat-icon\r\n class=\"igo-cataloglayer-external-icon\"\r\n *ngIf=\"layer.externalProvider\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.catalog.externalProvider.layer' | translate\"\r\n color=\"primary\"\r\n (click)=\"$event.stopPropagation()\"\r\n svgIcon=\"earth-arrow-right\">\r\n </mat-icon>\r\n </button>\r\n <igo-metadata-button [layer]=\"layer\"></igo-metadata-button>\r\n\r\n <button\r\n (mouseenter)=\"onMouseEvent($event)\" (mouseleave)=\"onMouseEvent($event)\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"computeTooltip() | translate\"\r\n [color]=\"(isPreview$ | async) ? '' : added ? 'warn' : ''\"\r\n (click)=\"onToggleClick($event)\">\r\n <mat-icon\r\n matBadge=\"icon\"\r\n igoMatBadgeIcon=\"eye-off\"\r\n igoMatBadgeInverseColor=\"true\"\r\n [matBadgeHidden]=\"isInResolutionsRange()\"\r\n matBadgeDisabled=\"true\"\r\n matBadgeSize=\"small\"\r\n matBadgePosition=\"after\"\r\n [svgIcon]=\"(isPreview$ | async) ? 'plus' : added ? 'delete' : 'plus'\">\r\n </mat-icon>\r\n </button>\r\n\r\n</mat-list-item>\r\n\r\n<div #legend class=\"igo-cataloglayer-legend-container\">\r\n <igo-layer-legend\r\n *ngIf=\"(layerLegendShown$ | async) && (igoLayer$ | async) && catalogAllowLegend\"\r\n [layer]=\"igoLayer$ | async\">\r\n </igo-layer-legend>\r\n</div>\r\n", styles: [".igo-cataloglayer-title{cursor:pointer}.igo-cataloglayer-legend-container{padding-left:18px;width:calc(100% - 18px);margin-left:40px}.igo-cataloglayer-external-icon{cursor:help}\n"] }]
13233
13239
  }], function () { return [{ type: LayerService }]; }, { resolution: [{
13234
13240
  type: Input
13235
13241
  }], catalogAllowLegend: [{
@@ -13508,7 +13514,7 @@ CatalogBrowserGroupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
13508
13514
  } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i3.MatButton, i2.MatIcon, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i4.MatTooltip, i5$1.ListItemDirective, i5$1.CollapseDirective, CatalogBrowserLayerComponent, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-catalog-group-title[_ngcontent-%COMP%]{cursor:pointer;opacity:.9}#catalog-group-title[_ngcontent-%COMP%]{font-weight:700}.igo-cataloggroup-external-icon[_ngcontent-%COMP%]{cursor:help}"], changeDetection: 0 });
13509
13515
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogBrowserGroupComponent, [{
13510
13516
  type: Component,
13511
- args: [{ selector: 'igo-catalog-browser-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\n <mat-icon\n mat-list-avatar\n svgIcon=\"chevron-up\"\n igoCollapse\n class=\"igo-chevron\"\n [target]=\"items\"\n [collapsed]=\"collapsed\"\n (toggle)=\"onToggleCollapsed($event)\">\n </mat-icon>\n\n <h4 class=\"igo-catalog-group-title\" id=\"catalog-group-title\" mat-line matTooltipShowDelay=\"500\" [matTooltip]=\"title\" (click)=\"onTitleClick()\">{{title}}</h4>\n\n <button *ngIf=\"group.externalProvider\"\n disabled=\"true\"\n mat-icon-button>\n <mat-icon\n class=\"igo-cataloggroup-external-icon\"\n *ngIf=\"group.externalProvider\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.externalProvider.group' | translate\"\n color=\"primary\"\n (click)=\"$event.stopPropagation()\"\n svgIcon=\"earth-arrow-right\">\n </mat-icon>\n </button>\n\n <ng-container *ngIf=\"(added$ | async) && (preview$ | async) === false; else notadded\">\n <button\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.group.removeFromMap' | translate\"\n color=\"warn\"\n [disabled]=\"disabled$ | async\"\n (click)=\"onToggleClick()\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n </ng-container>\n\n <ng-template #notadded>\n <button\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.group.addToMap' | translate\"\n [disabled]=\"disabled$ | async\"\n (click)=\"onToggleClick()\">\n <mat-icon svgIcon=\"plus\"></mat-icon>\n </button>\n </ng-template>\n</mat-list-item>\n\n<div #items>\n <ng-template ngFor let-item [ngForOf]=\"store.view.all$() | async\">\n <ng-container *ngIf=\"isGroup(item)\">\n <!-- todo: add display ans manage CatalogItemGroup -->\n </ng-container>\n <ng-container *ngIf=\"isLayer(item)\">\n <igo-catalog-browser-layer\n igoListItem\n [layer]=\"item\"\n [resolution]=\"resolution\"\n [catalogAllowLegend]=\"catalogAllowLegend\"\n [added]=\"state.get(item).added\"\n (addedLayerIsPreview)=\"onLayerPreview($event)\"\n (addedChange)=\"onLayerAddedChange($event)\">\n </igo-catalog-browser-layer>\n </ng-container>\n </ng-template>\n</div>\n", styles: [".igo-catalog-group-title{cursor:pointer;opacity:.9}#catalog-group-title{font-weight:700}.igo-cataloggroup-external-icon{cursor:help}\n"] }]
13517
+ args: [{ selector: 'igo-catalog-browser-group', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\r\n <mat-icon\r\n mat-list-avatar\r\n svgIcon=\"chevron-up\"\r\n igoCollapse\r\n class=\"igo-chevron\"\r\n [target]=\"items\"\r\n [collapsed]=\"collapsed\"\r\n (toggle)=\"onToggleCollapsed($event)\">\r\n </mat-icon>\r\n\r\n <h4 class=\"igo-catalog-group-title\" id=\"catalog-group-title\" mat-line matTooltipShowDelay=\"500\" [matTooltip]=\"title\" (click)=\"onTitleClick()\">{{title}}</h4>\r\n\r\n <button *ngIf=\"group.externalProvider\"\r\n disabled=\"true\"\r\n mat-icon-button>\r\n <mat-icon\r\n class=\"igo-cataloggroup-external-icon\"\r\n *ngIf=\"group.externalProvider\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.catalog.externalProvider.group' | translate\"\r\n color=\"primary\"\r\n (click)=\"$event.stopPropagation()\"\r\n svgIcon=\"earth-arrow-right\">\r\n </mat-icon>\r\n </button>\r\n\r\n <ng-container *ngIf=\"(added$ | async) && (preview$ | async) === false; else notadded\">\r\n <button\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.catalog.group.removeFromMap' | translate\"\r\n color=\"warn\"\r\n [disabled]=\"disabled$ | async\"\r\n (click)=\"onToggleClick()\">\r\n <mat-icon svgIcon=\"delete\"></mat-icon>\r\n </button>\r\n </ng-container>\r\n\r\n <ng-template #notadded>\r\n <button\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.catalog.group.addToMap' | translate\"\r\n [disabled]=\"disabled$ | async\"\r\n (click)=\"onToggleClick()\">\r\n <mat-icon svgIcon=\"plus\"></mat-icon>\r\n </button>\r\n </ng-template>\r\n</mat-list-item>\r\n\r\n<div #items>\r\n <ng-template ngFor let-item [ngForOf]=\"store.view.all$() | async\">\r\n <ng-container *ngIf=\"isGroup(item)\">\r\n <!-- todo: add display ans manage CatalogItemGroup -->\r\n </ng-container>\r\n <ng-container *ngIf=\"isLayer(item)\">\r\n <igo-catalog-browser-layer\r\n igoListItem\r\n [layer]=\"item\"\r\n [resolution]=\"resolution\"\r\n [catalogAllowLegend]=\"catalogAllowLegend\"\r\n [added]=\"state.get(item).added\"\r\n (addedLayerIsPreview)=\"onLayerPreview($event)\"\r\n (addedChange)=\"onLayerAddedChange($event)\">\r\n </igo-catalog-browser-layer>\r\n </ng-container>\r\n </ng-template>\r\n</div>\r\n", styles: [".igo-catalog-group-title{cursor:pointer;opacity:.9}#catalog-group-title{font-weight:700}.igo-cataloggroup-external-icon{cursor:help}\n"] }]
13512
13518
  }], null, { catalog: [{
13513
13519
  type: Input
13514
13520
  }], group: [{
@@ -13810,7 +13816,7 @@ LayerItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LayerIte
13810
13816
  } }, styles: ["[_nghost-%COMP%]{overflow:hidden}mat-list-item[_ngcontent-%COMP%] .mat-list-item-content .layerCheck{align-self:baseline;width:16px;padding-right:0}.igo-layer-list-item[_ngcontent-%COMP%]{height:46px;clear:both}.igo-layer-title[_ngcontent-%COMP%]{cursor:pointer}.igo-layer-legend-container[_ngcontent-%COMP%]{padding-left:18px;width:calc(100% - 18px)}mat-icon.disabled[_ngcontent-%COMP%]{color:#00000061}mat-icon[matBadge][_ngcontent-%COMP%] .mat-badge-content{font-size:12px}.selection-eye[_ngcontent-%COMP%]{padding-right:45px}"], changeDetection: 0 });
13811
13817
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayerItemComponent, [{
13812
13818
  type: Component,
13813
- args: [{ selector: 'igo-layer-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item class= \"igo-layer-list-item\">\n <mat-checkbox *ngIf=\"selectionMode\"\n class=\"layerCheck\"\n mat-list-icon\n (change)=\"check()\"\n [checked]=\"layerCheck\">\n </mat-checkbox>\n <h4 (click)=\"toggleLegendOnClick()\" matLine class=\"igo-layer-title\" [matTooltip]=\"tooltipText\" matTooltipShowDelay=\"500\">{{layer.title}}</h4>\n\n <button *ngIf=\"!selectionMode\"\n mat-icon-button\n [color]=\"layer.visible ? 'primary' : 'default'\"\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"eyeTooltip | translate\"\n (click)=\"toggleVisibility()\">\n <mat-icon\n matBadge=\"?\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n [matBadgeHidden]=\"queryBadgeHidden$ | async\"\n [ngClass]=\"{disabled: (inResolutionRange$ | async)===false}\"\n [svgIcon]=\"(layer.visible$ | async) ? 'eye' : 'eye-off'\">\n </mat-icon>\n </button>\n\n <button *ngIf=\"selectionMode\" class=\"selection-eye\"\n mat-icon-button\n [color]=\"layer.visible ? 'primary' : 'default'\"\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"layer.visible ?\n ('igo.geo.layer.hideLayer' | translate) :\n ('igo.geo.layer.showLayer' | translate)\"\n (click)=\"toggleVisibility()\">\n <mat-icon\n matBadge=\"?\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n [matBadgeHidden]=\"queryBadgeHidden$ | async\"\n [ngClass]=\"{disabled: (inResolutionRange$ | async)===false}\"\n [svgIcon]=\"layer.visible ? 'eye' : 'eye-off'\">\n </mat-icon>\n</button>\n\n <button *ngIf=\"!selectionMode\"\n class=\"actions-button\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]= \"'igo.geo.layer.moreOptions' | translate\"\n mat-icon-button\n color=\"primary\"\n (click)=\"toggleLayerTool()\">\n <mat-icon svgIcon=\"dots-horizontal\"></mat-icon>\n </button>\n</mat-list-item>\n\n<div #legend class=\"igo-layer-legend-container\">\n <igo-layer-legend\n *ngIf=\"showLegend$ | async\"\n [layer]=\"layer\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\">\n </igo-layer-legend>\n</div>\n", styles: [":host{overflow:hidden}mat-list-item ::ng-deep .mat-list-item-content .layerCheck{align-self:baseline;width:16px;padding-right:0}.igo-layer-list-item{height:46px;clear:both}.igo-layer-title{cursor:pointer}.igo-layer-legend-container{padding-left:18px;width:calc(100% - 18px)}mat-icon.disabled{color:#00000061}mat-icon[matBadge] ::ng-deep .mat-badge-content{font-size:12px}.selection-eye{padding-right:45px}\n"] }]
13819
+ args: [{ selector: 'igo-layer-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item class= \"igo-layer-list-item\">\r\n <mat-checkbox *ngIf=\"selectionMode\"\r\n class=\"layerCheck\"\r\n mat-list-icon\r\n (change)=\"check()\"\r\n [checked]=\"layerCheck\">\r\n </mat-checkbox>\r\n <h4 (click)=\"toggleLegendOnClick()\" matLine class=\"igo-layer-title\" [matTooltip]=\"tooltipText\" matTooltipShowDelay=\"500\">{{layer.title}}</h4>\r\n\r\n <button *ngIf=\"!selectionMode\"\r\n mat-icon-button\r\n [color]=\"layer.visible ? 'primary' : 'default'\"\r\n collapsibleButton\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"eyeTooltip | translate\"\r\n (click)=\"toggleVisibility()\">\r\n <mat-icon\r\n matBadge=\"?\"\r\n matBadgeColor=\"accent\"\r\n matBadgeSize=\"small\"\r\n matBadgePosition=\"after\"\r\n [matBadgeHidden]=\"queryBadgeHidden$ | async\"\r\n [ngClass]=\"{disabled: (inResolutionRange$ | async)===false}\"\r\n [svgIcon]=\"(layer.visible$ | async) ? 'eye' : 'eye-off'\">\r\n </mat-icon>\r\n </button>\r\n\r\n <button *ngIf=\"selectionMode\" class=\"selection-eye\"\r\n mat-icon-button\r\n [color]=\"layer.visible ? 'primary' : 'default'\"\r\n collapsibleButton\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"layer.visible ?\r\n ('igo.geo.layer.hideLayer' | translate) :\r\n ('igo.geo.layer.showLayer' | translate)\"\r\n (click)=\"toggleVisibility()\">\r\n <mat-icon\r\n matBadge=\"?\"\r\n matBadgeColor=\"accent\"\r\n matBadgeSize=\"small\"\r\n matBadgePosition=\"after\"\r\n [matBadgeHidden]=\"queryBadgeHidden$ | async\"\r\n [ngClass]=\"{disabled: (inResolutionRange$ | async)===false}\"\r\n [svgIcon]=\"layer.visible ? 'eye' : 'eye-off'\">\r\n </mat-icon>\r\n</button>\r\n\r\n <button *ngIf=\"!selectionMode\"\r\n class=\"actions-button\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]= \"'igo.geo.layer.moreOptions' | translate\"\r\n mat-icon-button\r\n color=\"primary\"\r\n (click)=\"toggleLayerTool()\">\r\n <mat-icon svgIcon=\"dots-horizontal\"></mat-icon>\r\n </button>\r\n</mat-list-item>\r\n\r\n<div #legend class=\"igo-layer-legend-container\">\r\n <igo-layer-legend\r\n *ngIf=\"showLegend$ | async\"\r\n [layer]=\"layer\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\">\r\n </igo-layer-legend>\r\n</div>\r\n", styles: [":host{overflow:hidden}mat-list-item ::ng-deep .mat-list-item-content .layerCheck{align-self:baseline;width:16px;padding-right:0}.igo-layer-list-item{height:46px;clear:both}.igo-layer-title{cursor:pointer}.igo-layer-legend-container{padding-left:18px;width:calc(100% - 18px)}mat-icon.disabled{color:#00000061}mat-icon[matBadge] ::ng-deep .mat-badge-content{font-size:12px}.selection-eye{padding-right:45px}\n"] }]
13814
13820
  }], function () { return [{ type: i2$1.NetworkService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, { activeLayer: [{
13815
13821
  type: Input
13816
13822
  }], selectAll: [{
@@ -14829,7 +14835,7 @@ LayerListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LayerLis
14829
14835
  } }, styles: ["[_nghost-%COMP%] .igo-list-no-tools[_ngcontent-%COMP%]{height:calc(100% - 57px);padding-top:8px}[_nghost-%COMP%] .igo-list-tools-single[_ngcontent-%COMP%]{height:calc(100% - 153px);padding-top:8px}[_nghost-%COMP%] .igo-list-tools-multi[_ngcontent-%COMP%]{height:calc(100% - 191px);padding-top:8px}mat-form-field.inputFilter[_ngcontent-%COMP%]{width:calc(100% - 100px);max-width:200px}.igo-layer-actions-container[_ngcontent-%COMP%]{width:calc(100% - 5px);padding-left:4px}.igo-layer-actions-container[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{text-align:center}mat-list-item[_ngcontent-%COMP%] .mat-list-item-content{margin-bottom:10px}mat-checkbox[_ngcontent-%COMP%] .mat-checkbox-inner-container{margin-left:8px;margin-right:16px}#opacity-slider[_ngcontent-%COMP%]{float:left;min-width:0;min-width:initial;width:110px;left:10px;top:10px}.igo-layer-button-group[_ngcontent-%COMP%], .actions-buttons-multi[_ngcontent-%COMP%]{display:flex;align-items:center;flex-direction:row-reverse;overflow-x:auto;overflow-y:hidden}.igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar, .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar{height:4px}.igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar-track, .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:#f1f1f1}.igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar-thumb, .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#888}.igo-layer-button-group[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover, .actions-buttons-multi[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:#555}.igo-layer-button-group[_ngcontent-%COMP%]{padding-top:5px}[_nghost-%COMP%] igo-panel[_ngcontent-%COMP%]{height:auto;height:initial}#opacity-menu[_ngcontent-%COMP%]{max-width:none;max-width:initial;width:132px;height:50px}#opacity-menu[_ngcontent-%COMP%] .mat-menu-content[_ngcontent-%COMP%]:not(:empty){padding-top:20px}.select-all[_ngcontent-%COMP%] .mat-list-item-content{margin:0}"], changeDetection: 0 });
14830
14836
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayerListComponent, [{
14831
14837
  type: Component,
14832
- args: [{ selector: 'igo-layer-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list>\n <igo-layer-list-tool *ngIf=\"showToolbar$ | async\"\n floatLabel=\"auto\"\n [layersAreAllVisible]=\"layersAreAllVisible\"\n [term]=\"layerFilterAndSortOptions.keyword\"\n [onlyVisible]=\"layerFilterAndSortOptions.onlyVisible\"\n [sortAlpha]=\"layerFilterAndSortOptions.sortAlpha\"\n (appliedFilterAndSort)=\"onAppliedFilterAndSortChange($event)\"\n (selection)=\"toggleSelectionMode($event)\">\n </igo-layer-list-tool>\n</mat-list>\n\n<mat-list-item *ngIf=\"selection\" class=\"select-all\">\n <mat-checkbox\n class=\"select-all-checkbox mat-subheading-2\"\n [color]=\"!selectAllCheck && layersChecked.length > 0 ? 'accent' : 'primary'\"\n (change)=\"selectAll()\"\n [checked]=\"selectAllCheck\"\n [indeterminate]=\"!selectAllCheck && layersChecked.length > 0\"> {{selectAllCheck ? ('igo.geo.layer.deselectAll' | translate) : ('igo.geo.layer.selectAll' | translate)}}\n </mat-checkbox>\n</mat-list-item>\n<mat-divider></mat-divider>\n\n<igo-list #igoList [ngClass]=\"{'igo-list-tools-multi': selection, 'igo-list-tools-single': (layerTool && !selection), 'igo-list-no-tools': (!layerTool && !selection)}\" [navigation]=\"false\" [selection]=\"false\">\n <ng-template ngFor let-layer let-i=\"index\" [ngForOf]=\"layers$ | async\">\n <igo-layer-item *ngIf=\"!(excludeBaseLayers && layer.baseLayer)\"\n igoListItem\n [layer]=\"layer\"\n [activeLayer]=\"activeLayer\"\n [orderable]=\"orderable && !layer.baseLayer\"\n [lowerDisabled]=\"getLowerLayer().id === layer.id\"\n [raiseDisabled]=\"getUpperLayer().id === layer.id\"\n [queryBadge]=\"queryBadge\"\n [expandLegendIfVisible]=\"expandLegendOfVisibleLayers\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\n [selectionMode]=\"selection\"\n [selectAll]=\"selectAllCheck\"\n [layerCheck]=\"layer.options.check\"\n [changeDetection]=\"layerItemChangeDetection$\"\n (action)=\"toggleLayerTool($event)\"\n (checkbox)=\"layersCheck($event)\">\n </igo-layer-item>\n </ng-template>\n</igo-list>\n\n<igo-panel *ngIf=\"!selection && layerTool && activeLayer\" class=\"igo-layer-actions-container\" [title]=\"activeLayer.title\">\n <div class=\"igo-layer-button-group\">\n <button\n *ngIf=\"isLayerRemovable(activeLayer)\"\n class=\"delete-button\"\n mat-icon-button\n color=\"warn\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.removeLayer' | translate\"\n (click)=\"removeLayers()\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n\n <button\n class=\"down-button\"\n mat-icon-button\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterLowerLayer' | translate) : ('igo.geo.layer.lowerLayer' | translate)\"\n [disabled]=\"lowerDisabled\"\n (click)=\"moveActiveLayer(activeLayer,layerListDisplacement.Lower, true)\">\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"lowerDisabled\"\n svgIcon=\"arrow-down\"></mat-icon>\n </button>\n\n <button\n class=\"up-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterRaiseLayer' | translate) : ('igo.geo.layer.raiseLayer' | translate)\"\n [disabled]=\"raiseDisabled\"\n (click)=\"moveActiveLayer(activeLayer,layerListDisplacement.Raise, true)\">\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"raiseDisabled\"\n svgIcon=\"arrow-up\"></mat-icon>\n </button>\n\n <!-- <label>{{ 'igo.geo.layer.opacity' | translate }} </label> -->\n <button\n class=\"opacity-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matMenuTriggerFor]=\"opacityMenu\"\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\">\n <mat-icon [matBadge]=\"badgeOpacity\" matBadgeColor=\"primary\" matBadgeSize=\"medium\" svgIcon=\"opacity\"></mat-icon>\n </button>\n\n <mat-menu #opacityMenu=\"matMenu\" class=\"mat-menu-opacity-slider\">\n <div id=\"opacity-menu\">\n <mat-slider\n id=\"opacity-slider\"\n color=\"primary\"\n thumbLabel\n tickInterval=\"5\"\n step=\"5\"\n [min]=\"0\"\n [max]=\"100\"\n [value]=\"opacity\"\n (input)=\"changeOpacity($event)\"\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\"\n (click) = \"$event.stopPropagation()\"\n matTooltipShowDelay=\"500\"\n tooltip-position=\"below\">\n </mat-slider>\n </div>\n </mat-menu>\n\n <button\n *ngIf=\"activeLayerExtentIsValid(activeLayer)\"\n class=\"zoomLayer-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.zoomLayer' | translate\"\n (click)=\"zoomLayerExtents(activeLayer)\">\n <mat-icon matBadgeColor=\"primary\" matBadgeSize=\"medium\" svgIcon=\"magnify-scan\"></mat-icon>\n </button>\n\n <ng-container igoLayerItemToolbar\n [ngTemplateOutlet]=\"templateLayerToolbar\"\n [ngTemplateOutletContext]=\"{layer: activeLayer}\">\n </ng-container>\n\n <ng-content select=\"[igoLayerItemToolbar]\"></ng-content>\n </div>\n</igo-panel>\n\n<igo-panel *ngIf=\"selection && layers.length > 0\" class=\"igo-layer-actions-container\" [title]=\"'igo.geo.layer.tools' | translate\">\n <div class=\"actions-buttons-multi\">\n <button\n class=\"delete-button\"\n mat-icon-button\n color=\"warn\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"layersChecked.length === 0\"\n [matTooltip]=\"isAllLayersRemovable(layersChecked) ? ('igo.geo.layer.removeSelectedLayers' | translate) : 'igo.geo.layer.removeSelectedLayersRestriction' | translate\"\n (click)=\"removeLayers(layersChecked)\">\n <mat-icon [matBadge]=\"'!'\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"isAllLayersRemovable(layersChecked)\"\n svgIcon=\"delete\"></mat-icon>\n </button>\n\n <button\n class=\"eye-button\"\n mat-icon-button\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"layersChecked.length === 0\"\n [matTooltip]=\"statusSelectedLayersCheck === 'ALL_HIDDEN' ? ('igo.geo.layer.showSelectedLayers' | translate) : ('igo.geo.layer.hideSelectedLayers' | translate)\"\n (click)=\"toggleVisibility(layersChecked)\">\n <mat-icon\t[svgIcon]=\"(statusSelectedLayersCheck === 'ALL_HIDDEN') ? 'eye-off' : 'eye'\"></mat-icon>\n </button>\n\n <button\n class=\"down-button\"\n mat-icon-button\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterLowerLayer' | translate) : ('igo.geo.layer.lowerLayer' | translate)\"\n [disabled]=\"lowerDisabledSelection\"\n (click)=\"lowerLayers(layersChecked)\">\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"lowerDisabledSelection\"\n svgIcon=\"arrow-down\"></mat-icon>\n </button>\n\n <button\n class=\"up-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterRaiseLayer' | translate) : ('igo.geo.layer.raiseLayer' | translate)\"\n [disabled]=\"raiseDisabledSelection\"\n (click)=\"raiseLayers(layersChecked)\">\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"raiseDisabledSelection\"\n svgIcon=\"arrow-up\"></mat-icon>\n </button>\n\n <button\n class=\"opacity-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [disabled]=\"layersChecked.length === 0\"\n [matMenuTriggerFor]=\"opacityMenu\"\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\">\n <mat-icon svgIcon=\"opacity\"></mat-icon>\n </button>\n\n <mat-menu #opacityMenu=\"matMenu\" class=\"mat-menu-opacity-slider\">\n <div id=\"opacity-menu\">\n <mat-slider *ngIf=\"layersChecked.length\"\n id=\"opacity-slider\"\n color=\"primary\"\n thumbLabel\n tickInterval=\"5\"\n step=\"5\"\n [min]=\"0\"\n [max]=\"100\"\n [(ngModel)]=\"checkOpacity\"\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\"\n matTooltipShowDelay=\"500\"\n tooltip-position=\"below\"\n (click) = \"$event.stopPropagation()\">\n </mat-slider>\n </div>\n </mat-menu>\n\n <button\n *ngIf=\"layersChecked.length !== 0 && activeLayersExtentAreValid(layersChecked)\"\n class=\"zoomLayer-button\"\n color=\"primary\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.zoomLayers' | translate\"\n (click)=\"zoomLayersExtents(layersChecked)\">\n <mat-icon svgIcon=\"magnify-scan\"></mat-icon>\n </button>\n </div>\n</igo-panel>\n", styles: [":host .igo-list-no-tools{height:calc(100% - 57px);padding-top:8px}:host .igo-list-tools-single{height:calc(100% - 153px);padding-top:8px}:host .igo-list-tools-multi{height:calc(100% - 191px);padding-top:8px}mat-form-field.inputFilter{width:calc(100% - 100px);max-width:200px}.igo-layer-actions-container{width:calc(100% - 5px);padding-left:4px}.igo-layer-actions-container>div{text-align:center}mat-list-item ::ng-deep .mat-list-item-content{margin-bottom:10px}mat-checkbox ::ng-deep .mat-checkbox-inner-container{margin-left:8px;margin-right:16px}#opacity-slider{float:left;min-width:0;min-width:initial;width:110px;left:10px;top:10px}.igo-layer-button-group,.actions-buttons-multi{display:flex;align-items:center;flex-direction:row-reverse;overflow-x:auto;overflow-y:hidden}.igo-layer-button-group::-webkit-scrollbar,.actions-buttons-multi::-webkit-scrollbar{height:4px}.igo-layer-button-group::-webkit-scrollbar-track,.actions-buttons-multi::-webkit-scrollbar-track{background:#f1f1f1}.igo-layer-button-group::-webkit-scrollbar-thumb,.actions-buttons-multi::-webkit-scrollbar-thumb{background:#888}.igo-layer-button-group::-webkit-scrollbar-thumb:hover,.actions-buttons-multi::-webkit-scrollbar-thumb:hover{background:#555}.igo-layer-button-group{padding-top:5px}:host igo-panel{height:auto;height:initial}#opacity-menu{max-width:none;max-width:initial;width:132px;height:50px}#opacity-menu .mat-menu-content:not(:empty){padding-top:20px}.select-all ::ng-deep .mat-list-item-content{margin:0}\n"] }]
14838
+ args: [{ selector: 'igo-layer-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list>\r\n <igo-layer-list-tool *ngIf=\"showToolbar$ | async\"\r\n floatLabel=\"auto\"\r\n [layersAreAllVisible]=\"layersAreAllVisible\"\r\n [term]=\"layerFilterAndSortOptions.keyword\"\r\n [onlyVisible]=\"layerFilterAndSortOptions.onlyVisible\"\r\n [sortAlpha]=\"layerFilterAndSortOptions.sortAlpha\"\r\n (appliedFilterAndSort)=\"onAppliedFilterAndSortChange($event)\"\r\n (selection)=\"toggleSelectionMode($event)\">\r\n </igo-layer-list-tool>\r\n</mat-list>\r\n\r\n<mat-list-item *ngIf=\"selection\" class=\"select-all\">\r\n <mat-checkbox\r\n class=\"select-all-checkbox mat-subheading-2\"\r\n [color]=\"!selectAllCheck && layersChecked.length > 0 ? 'accent' : 'primary'\"\r\n (change)=\"selectAll()\"\r\n [checked]=\"selectAllCheck\"\r\n [indeterminate]=\"!selectAllCheck && layersChecked.length > 0\"> {{selectAllCheck ? ('igo.geo.layer.deselectAll' | translate) : ('igo.geo.layer.selectAll' | translate)}}\r\n </mat-checkbox>\r\n</mat-list-item>\r\n<mat-divider></mat-divider>\r\n\r\n<igo-list #igoList [ngClass]=\"{'igo-list-tools-multi': selection, 'igo-list-tools-single': (layerTool && !selection), 'igo-list-no-tools': (!layerTool && !selection)}\" [navigation]=\"false\" [selection]=\"false\">\r\n <ng-template ngFor let-layer let-i=\"index\" [ngForOf]=\"layers$ | async\">\r\n <igo-layer-item *ngIf=\"!(excludeBaseLayers && layer.baseLayer)\"\r\n igoListItem\r\n [layer]=\"layer\"\r\n [activeLayer]=\"activeLayer\"\r\n [orderable]=\"orderable && !layer.baseLayer\"\r\n [lowerDisabled]=\"getLowerLayer().id === layer.id\"\r\n [raiseDisabled]=\"getUpperLayer().id === layer.id\"\r\n [queryBadge]=\"queryBadge\"\r\n [expandLegendIfVisible]=\"expandLegendOfVisibleLayers\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\"\r\n [toggleLegendOnVisibilityChange]=\"toggleLegendOnVisibilityChange\"\r\n [selectionMode]=\"selection\"\r\n [selectAll]=\"selectAllCheck\"\r\n [layerCheck]=\"layer.options.check\"\r\n [changeDetection]=\"layerItemChangeDetection$\"\r\n (action)=\"toggleLayerTool($event)\"\r\n (checkbox)=\"layersCheck($event)\">\r\n </igo-layer-item>\r\n </ng-template>\r\n</igo-list>\r\n\r\n<igo-panel *ngIf=\"!selection && layerTool && activeLayer\" class=\"igo-layer-actions-container\" [title]=\"activeLayer.title\">\r\n <div class=\"igo-layer-button-group\">\r\n <button\r\n *ngIf=\"isLayerRemovable(activeLayer)\"\r\n class=\"delete-button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.layer.removeLayer' | translate\"\r\n (click)=\"removeLayers()\">\r\n <mat-icon svgIcon=\"delete\"></mat-icon>\r\n </button>\r\n\r\n <button\r\n class=\"down-button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterLowerLayer' | translate) : ('igo.geo.layer.lowerLayer' | translate)\"\r\n [disabled]=\"lowerDisabled\"\r\n (click)=\"moveActiveLayer(activeLayer,layerListDisplacement.Lower, true)\">\r\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"lowerDisabled\"\r\n svgIcon=\"arrow-down\"></mat-icon>\r\n </button>\r\n\r\n <button\r\n class=\"up-button\"\r\n color=\"primary\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterRaiseLayer' | translate) : ('igo.geo.layer.raiseLayer' | translate)\"\r\n [disabled]=\"raiseDisabled\"\r\n (click)=\"moveActiveLayer(activeLayer,layerListDisplacement.Raise, true)\">\r\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"raiseDisabled\"\r\n svgIcon=\"arrow-up\"></mat-icon>\r\n </button>\r\n\r\n <!-- <label>{{ 'igo.geo.layer.opacity' | translate }} </label> -->\r\n <button\r\n class=\"opacity-button\"\r\n color=\"primary\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matMenuTriggerFor]=\"opacityMenu\"\r\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\">\r\n <mat-icon [matBadge]=\"badgeOpacity\" matBadgeColor=\"primary\" matBadgeSize=\"medium\" svgIcon=\"opacity\"></mat-icon>\r\n </button>\r\n\r\n <mat-menu #opacityMenu=\"matMenu\" class=\"mat-menu-opacity-slider\">\r\n <div id=\"opacity-menu\">\r\n <mat-slider\r\n id=\"opacity-slider\"\r\n color=\"primary\"\r\n thumbLabel\r\n tickInterval=\"5\"\r\n step=\"5\"\r\n [min]=\"0\"\r\n [max]=\"100\"\r\n [value]=\"opacity\"\r\n (input)=\"changeOpacity($event)\"\r\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\"\r\n (click) = \"$event.stopPropagation()\"\r\n matTooltipShowDelay=\"500\"\r\n tooltip-position=\"below\">\r\n </mat-slider>\r\n </div>\r\n </mat-menu>\r\n\r\n <button\r\n *ngIf=\"activeLayerExtentIsValid(activeLayer)\"\r\n class=\"zoomLayer-button\"\r\n color=\"primary\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.layer.zoomLayer' | translate\"\r\n (click)=\"zoomLayerExtents(activeLayer)\">\r\n <mat-icon matBadgeColor=\"primary\" matBadgeSize=\"medium\" svgIcon=\"magnify-scan\"></mat-icon>\r\n </button>\r\n\r\n <ng-container igoLayerItemToolbar\r\n [ngTemplateOutlet]=\"templateLayerToolbar\"\r\n [ngTemplateOutletContext]=\"{layer: activeLayer}\">\r\n </ng-container>\r\n\r\n <ng-content select=\"[igoLayerItemToolbar]\"></ng-content>\r\n </div>\r\n</igo-panel>\r\n\r\n<igo-panel *ngIf=\"selection && layers.length > 0\" class=\"igo-layer-actions-container\" [title]=\"'igo.geo.layer.tools' | translate\">\r\n <div class=\"actions-buttons-multi\">\r\n <button\r\n class=\"delete-button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [disabled]=\"layersChecked.length === 0\"\r\n [matTooltip]=\"isAllLayersRemovable(layersChecked) ? ('igo.geo.layer.removeSelectedLayers' | translate) : 'igo.geo.layer.removeSelectedLayersRestriction' | translate\"\r\n (click)=\"removeLayers(layersChecked)\">\r\n <mat-icon [matBadge]=\"'!'\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"isAllLayersRemovable(layersChecked)\"\r\n svgIcon=\"delete\"></mat-icon>\r\n </button>\r\n\r\n <button\r\n class=\"eye-button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [disabled]=\"layersChecked.length === 0\"\r\n [matTooltip]=\"statusSelectedLayersCheck === 'ALL_HIDDEN' ? ('igo.geo.layer.showSelectedLayers' | translate) : ('igo.geo.layer.hideSelectedLayers' | translate)\"\r\n (click)=\"toggleVisibility(layersChecked)\">\r\n <mat-icon\t[svgIcon]=\"(statusSelectedLayersCheck === 'ALL_HIDDEN') ? 'eye-off' : 'eye'\"></mat-icon>\r\n </button>\r\n\r\n <button\r\n class=\"down-button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterLowerLayer' | translate) : ('igo.geo.layer.lowerLayer' | translate)\"\r\n [disabled]=\"lowerDisabledSelection\"\r\n (click)=\"lowerLayers(layersChecked)\">\r\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"lowerDisabledSelection\"\r\n svgIcon=\"arrow-down\"></mat-icon>\r\n </button>\r\n\r\n <button\r\n class=\"up-button\"\r\n color=\"primary\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"(sortAlpha || onlyVisible || keyword) ? ('igo.geo.layer.filterRaiseLayer' | translate) : ('igo.geo.layer.raiseLayer' | translate)\"\r\n [disabled]=\"raiseDisabledSelection\"\r\n (click)=\"raiseLayers(layersChecked)\">\r\n <mat-icon [matBadge]=\"(sortAlpha || onlyVisible || keyword) ? '!' : ''\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" [matBadgeHidden]=\"raiseDisabledSelection\"\r\n svgIcon=\"arrow-up\"></mat-icon>\r\n </button>\r\n\r\n <button\r\n class=\"opacity-button\"\r\n color=\"primary\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [disabled]=\"layersChecked.length === 0\"\r\n [matMenuTriggerFor]=\"opacityMenu\"\r\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\">\r\n <mat-icon svgIcon=\"opacity\"></mat-icon>\r\n </button>\r\n\r\n <mat-menu #opacityMenu=\"matMenu\" class=\"mat-menu-opacity-slider\">\r\n <div id=\"opacity-menu\">\r\n <mat-slider *ngIf=\"layersChecked.length\"\r\n id=\"opacity-slider\"\r\n color=\"primary\"\r\n thumbLabel\r\n tickInterval=\"5\"\r\n step=\"5\"\r\n [min]=\"0\"\r\n [max]=\"100\"\r\n [(ngModel)]=\"checkOpacity\"\r\n [matTooltip]=\"'igo.geo.layer.opacity' | translate\"\r\n matTooltipShowDelay=\"500\"\r\n tooltip-position=\"below\"\r\n (click) = \"$event.stopPropagation()\">\r\n </mat-slider>\r\n </div>\r\n </mat-menu>\r\n\r\n <button\r\n *ngIf=\"layersChecked.length !== 0 && activeLayersExtentAreValid(layersChecked)\"\r\n class=\"zoomLayer-button\"\r\n color=\"primary\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.layer.zoomLayers' | translate\"\r\n (click)=\"zoomLayersExtents(layersChecked)\">\r\n <mat-icon svgIcon=\"magnify-scan\"></mat-icon>\r\n </button>\r\n </div>\r\n</igo-panel>\r\n", styles: [":host .igo-list-no-tools{height:calc(100% - 57px);padding-top:8px}:host .igo-list-tools-single{height:calc(100% - 153px);padding-top:8px}:host .igo-list-tools-multi{height:calc(100% - 191px);padding-top:8px}mat-form-field.inputFilter{width:calc(100% - 100px);max-width:200px}.igo-layer-actions-container{width:calc(100% - 5px);padding-left:4px}.igo-layer-actions-container>div{text-align:center}mat-list-item ::ng-deep .mat-list-item-content{margin-bottom:10px}mat-checkbox ::ng-deep .mat-checkbox-inner-container{margin-left:8px;margin-right:16px}#opacity-slider{float:left;min-width:0;min-width:initial;width:110px;left:10px;top:10px}.igo-layer-button-group,.actions-buttons-multi{display:flex;align-items:center;flex-direction:row-reverse;overflow-x:auto;overflow-y:hidden}.igo-layer-button-group::-webkit-scrollbar,.actions-buttons-multi::-webkit-scrollbar{height:4px}.igo-layer-button-group::-webkit-scrollbar-track,.actions-buttons-multi::-webkit-scrollbar-track{background:#f1f1f1}.igo-layer-button-group::-webkit-scrollbar-thumb,.actions-buttons-multi::-webkit-scrollbar-thumb{background:#888}.igo-layer-button-group::-webkit-scrollbar-thumb:hover,.actions-buttons-multi::-webkit-scrollbar-thumb:hover{background:#555}.igo-layer-button-group{padding-top:5px}:host igo-panel{height:auto;height:initial}#opacity-menu{max-width:none;max-width:initial;width:132px;height:50px}#opacity-menu .mat-menu-content:not(:empty){padding-top:20px}.select-all ::ng-deep .mat-list-item-content{margin:0}\n"] }]
14833
14839
  }], function () { return [{ type: i0.ElementRef }]; }, { templateLayerToolbar: [{
14834
14840
  type: ContentChild,
14835
14841
  args: ['igoLayerItemToolbar', /* TODO: add static flag */ {}]
@@ -14995,7 +15001,7 @@ LayerListToolComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Laye
14995
15001
  } }, dependencies: [i13.MatFormField, i13.MatSuffix, i14.MatInput, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i1$1.NgIf, i2$2.NgModel, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5.MatListItem, i7$1.MatBadge, i5$1.IgoBadgeIconDirective, i7.TranslatePipe], styles: ["mat-form-field.inputFilter[_ngcontent-%COMP%]{width:calc(100% - 100px);max-width:200px}.selection-mode[_ngcontent-%COMP%]{margin-left:5px}"], changeDetection: 0 });
14996
15002
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayerListToolComponent, [{
14997
15003
  type: Component,
14998
- args: [{ selector: 'igo-layer-list-tool', changeDetection: ChangeDetectionStrategy.OnPush, template: " <mat-list-item>\n <mat-form-field class=\"inputFilter\" [floatLabel]=\"floatLabel\">\n <input\n matInput\n [placeholder]=\"'igo.geo.layer.filterPlaceholder' | translate\"\n [matTooltip]=\"'igo.geo.layer.subsetLayersListKeyword' | translate\"\n matTooltipShowDelay=\"500\"\n type=\"text\" [(ngModel)]=\"term\">\n <button\n mat-button\n *ngIf=\"term\"\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n color=\"warn\"\n (click)=\"clearTerm()\">\n <mat-icon svgIcon=\"close\"></mat-icon>\n </button>\n </mat-form-field>\n\n <div [matTooltip]=\"sortAlpha ?\n ('igo.geo.layer.sortMapOrder' | translate) :\n ('igo.geo.layer.sortAlphabetically' | translate)\" matTooltipShowDelay=\"500\">\n <button class=\"sort-alpha\" [color]=\"sortAlpha ? 'warn' : 'primary'\" mat-icon-button (click)=\"toggleSortAlpha()\">\n <mat-icon [svgIcon]=\"sortAlpha ? 'sort-ascending' : 'sort-alphabetical-ascending'\"></mat-icon>\n </button>\n </div>\n\n <div [matTooltip]=\"onlyVisible ?\n ('igo.geo.layer.resetLayersList' | translate) :\n ('igo.geo.layer.subsetLayersListOnlyVisible' | translate)\" matTooltipShowDelay=\"500\">\n <button class=\"only-visible\" mat-icon-button [disabled]=\"layersAreAllVisible && !onlyVisible\"\n [color]=\"onlyVisible ? 'warn' : 'primary'\" (click)=\"toggleOnlyVisible()\">\n <mat-icon\n matBadge=\"icon\"\n igoMatBadgeIcon=\"eye\"\n igoMatBadgeInverseColor=\"true\"\n igoMatBadgeInheritColor=\"true\"\n [svgIcon]=\"onlyVisible ? 'filter-remove' : 'filter'\">\n </mat-icon>\n </button>\n </div>\n\n <div [matTooltip]=\"selectionMode ?\n ('igo.geo.layer.deactivateSelectionMode' | translate) :\n ('igo.geo.layer.activateSelectionMode' | translate)\" matTooltipShowDelay=\"500\">\n <button class=\"selection-mode\" mat-icon-button\n color=\"primary\" (click)=\"toggleSelectionMode()\">\n <mat-icon [svgIcon]=\"selectionMode ? 'checkbox-multiple-marked-outline' : 'checkbox-multiple-blank-outline'\"></mat-icon>\n </button>\n </div>\n\n</mat-list-item>\n", styles: ["mat-form-field.inputFilter{width:calc(100% - 100px);max-width:200px}.selection-mode{margin-left:5px}\n"] }]
15004
+ args: [{ selector: 'igo-layer-list-tool', changeDetection: ChangeDetectionStrategy.OnPush, template: " <mat-list-item>\r\n <mat-form-field class=\"inputFilter\" [floatLabel]=\"floatLabel\">\r\n <input\r\n matInput\r\n [placeholder]=\"'igo.geo.layer.filterPlaceholder' | translate\"\r\n [matTooltip]=\"'igo.geo.layer.subsetLayersListKeyword' | translate\"\r\n matTooltipShowDelay=\"500\"\r\n type=\"text\" [(ngModel)]=\"term\">\r\n <button\r\n mat-button\r\n *ngIf=\"term\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n color=\"warn\"\r\n (click)=\"clearTerm()\">\r\n <mat-icon svgIcon=\"close\"></mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n <div [matTooltip]=\"sortAlpha ?\r\n ('igo.geo.layer.sortMapOrder' | translate) :\r\n ('igo.geo.layer.sortAlphabetically' | translate)\" matTooltipShowDelay=\"500\">\r\n <button class=\"sort-alpha\" [color]=\"sortAlpha ? 'warn' : 'primary'\" mat-icon-button (click)=\"toggleSortAlpha()\">\r\n <mat-icon [svgIcon]=\"sortAlpha ? 'sort-ascending' : 'sort-alphabetical-ascending'\"></mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div [matTooltip]=\"onlyVisible ?\r\n ('igo.geo.layer.resetLayersList' | translate) :\r\n ('igo.geo.layer.subsetLayersListOnlyVisible' | translate)\" matTooltipShowDelay=\"500\">\r\n <button class=\"only-visible\" mat-icon-button [disabled]=\"layersAreAllVisible && !onlyVisible\"\r\n [color]=\"onlyVisible ? 'warn' : 'primary'\" (click)=\"toggleOnlyVisible()\">\r\n <mat-icon\r\n matBadge=\"icon\"\r\n igoMatBadgeIcon=\"eye\"\r\n igoMatBadgeInverseColor=\"true\"\r\n igoMatBadgeInheritColor=\"true\"\r\n [svgIcon]=\"onlyVisible ? 'filter-remove' : 'filter'\">\r\n </mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div [matTooltip]=\"selectionMode ?\r\n ('igo.geo.layer.deactivateSelectionMode' | translate) :\r\n ('igo.geo.layer.activateSelectionMode' | translate)\" matTooltipShowDelay=\"500\">\r\n <button class=\"selection-mode\" mat-icon-button\r\n color=\"primary\" (click)=\"toggleSelectionMode()\">\r\n <mat-icon [svgIcon]=\"selectionMode ? 'checkbox-multiple-marked-outline' : 'checkbox-multiple-blank-outline'\"></mat-icon>\r\n </button>\r\n </div>\r\n\r\n</mat-list-item>\r\n", styles: ["mat-form-field.inputFilter{width:calc(100% - 100px);max-width:200px}.selection-mode{margin-left:5px}\n"] }]
14999
15005
  }], null, { layersAreAllVisible: [{
15000
15006
  type: Input
15001
15007
  }], floatLabel: [{
@@ -15240,7 +15246,7 @@ LayerLegendListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: La
15240
15246
  } }, styles: ["mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}igo-list[_ngcontent-%COMP%]{display:contents}.layers-empty[_ngcontent-%COMP%]{text-align:justify;margin:10px}.layer-legend-list-container[_ngcontent-%COMP%]{max-height:100%;overflow:auto}"], changeDetection: 0 });
15241
15247
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayerLegendListComponent, [{
15242
15248
  type: Component,
15243
- args: [{ selector: 'igo-layer-legend-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n<div class=\"layer-legend-list-container\">\n <mat-slide-toggle \n tooltip-position=\"above\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.legend.showAll' | translate\"\n [checked]=\"showAllLegendsValue\" class=\"mat-typography\" \n *ngIf=\"(layersInUi$ | async).length && allowShowAllLegends\" [labelPosition]=\"'before'\" (change)=\"toggleShowAllLegends($event.checked)\">\n {{'igo.geo.layer.legend.showAll' | translate}}\n </mat-slide-toggle>\n <mat-divider *ngIf=\"(layersInUi$ | async).length && allowShowAllLegends\"></mat-divider>\n <igo-list [navigation]=\"false\" [selection]=\"false\">\n <ng-template ngFor let-layer let-i=\"index\" [ngForOf]=\"layers$ | async\">\n <igo-layer-legend-item *ngIf=\"!(excludeBaseLayers && layer.baseLayer)\"\n igoListItem [layer]=\"layer\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\">\n </igo-layer-legend-item>\n </ng-template>\n </igo-list>\n <p class=\"layers-empty mat-typography\" \n *ngIf=\"!showAllLegendsValue && (layersInUi$ | async).length && (hasVisibleOrInRangeLayers$ | async)===false && (hasVisibleAndNotInRangeLayers$ | async)===false && allowShowAllLegends\">\n {{'igo.geo.layer.legend.noLayersVisibleWithShowAllButton' | translate}} \n </p>\n <p class=\"layers-empty mat-typography\" \n *ngIf=\"!showAllLegendsValue && (layersInUi$ | async).length && (hasVisibleOrInRangeLayers$ | async)===false && (hasVisibleAndNotInRangeLayers$ | async) && allowShowAllLegends\">\n {{'igo.geo.layer.legend.noLayersVisibleWithShowAllButtonButZoom' | translate}} \n </p>\n <p class=\"layers-empty mat-typography\"\n *ngIf=\"(layersInUi$ | async).length && (hasVisibleOrInRangeLayers$ | async)===false && (hasVisibleAndNotInRangeLayers$ | async)===false && !allowShowAllLegends\">\n {{'igo.geo.layer.legend.noLayersVisible' | translate}} \n </p>\n <p class=\"layers-empty mat-typography\"\n *ngIf=\"(layersInUi$ | async).length && (hasVisibleOrInRangeLayers$ | async)===false && (hasVisibleAndNotInRangeLayers$ | async) && !allowShowAllLegends\">\n {{'igo.geo.layer.legend.noLayersVisibleButZoom' | translate}} \n </p>\n\n</div>", styles: ["mat-slide-toggle{width:100%;margin:10px}mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}igo-list{display:contents}.layers-empty{text-align:justify;margin:10px}.layer-legend-list-container{max-height:100%;overflow:auto}\n"] }]
15249
+ args: [{ selector: 'igo-layer-legend-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "\r\n<div class=\"layer-legend-list-container\">\r\n <mat-slide-toggle \r\n tooltip-position=\"above\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.layer.legend.showAll' | translate\"\r\n [checked]=\"showAllLegendsValue\" class=\"mat-typography\" \r\n *ngIf=\"(layersInUi$ | async).length && allowShowAllLegends\" [labelPosition]=\"'before'\" (change)=\"toggleShowAllLegends($event.checked)\">\r\n {{'igo.geo.layer.legend.showAll' | translate}}\r\n </mat-slide-toggle>\r\n <mat-divider *ngIf=\"(layersInUi$ | async).length && allowShowAllLegends\"></mat-divider>\r\n <igo-list [navigation]=\"false\" [selection]=\"false\">\r\n <ng-template ngFor let-layer let-i=\"index\" [ngForOf]=\"layers$ | async\">\r\n <igo-layer-legend-item *ngIf=\"!(excludeBaseLayers && layer.baseLayer)\"\r\n igoListItem [layer]=\"layer\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\">\r\n </igo-layer-legend-item>\r\n </ng-template>\r\n </igo-list>\r\n <p class=\"layers-empty mat-typography\" \r\n *ngIf=\"!showAllLegendsValue && (layersInUi$ | async).length && (hasVisibleOrInRangeLayers$ | async)===false && (hasVisibleAndNotInRangeLayers$ | async)===false && allowShowAllLegends\">\r\n {{'igo.geo.layer.legend.noLayersVisibleWithShowAllButton' | translate}} \r\n </p>\r\n <p class=\"layers-empty mat-typography\" \r\n *ngIf=\"!showAllLegendsValue && (layersInUi$ | async).length && (hasVisibleOrInRangeLayers$ | async)===false && (hasVisibleAndNotInRangeLayers$ | async) && allowShowAllLegends\">\r\n {{'igo.geo.layer.legend.noLayersVisibleWithShowAllButtonButZoom' | translate}} \r\n </p>\r\n <p class=\"layers-empty mat-typography\"\r\n *ngIf=\"(layersInUi$ | async).length && (hasVisibleOrInRangeLayers$ | async)===false && (hasVisibleAndNotInRangeLayers$ | async)===false && !allowShowAllLegends\">\r\n {{'igo.geo.layer.legend.noLayersVisible' | translate}} \r\n </p>\r\n <p class=\"layers-empty mat-typography\"\r\n *ngIf=\"(layersInUi$ | async).length && (hasVisibleOrInRangeLayers$ | async)===false && (hasVisibleAndNotInRangeLayers$ | async) && !allowShowAllLegends\">\r\n {{'igo.geo.layer.legend.noLayersVisibleButZoom' | translate}} \r\n </p>\r\n\r\n</div>", styles: ["mat-slide-toggle{width:100%;margin:10px}mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}igo-list{display:contents}.layers-empty{text-align:justify;margin:10px}.layer-legend-list-container{max-height:100%;overflow:auto}\n"] }]
15244
15250
  }], function () { return []; }, { layers: [{
15245
15251
  type: Input
15246
15252
  }], excludeBaseLayers: [{
@@ -15342,7 +15348,7 @@ TrackFeatureButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
15342
15348
  } }, dependencies: [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i7.TranslatePipe], changeDetection: 0 });
15343
15349
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TrackFeatureButtonComponent, [{
15344
15350
  type: Component,
15345
- args: [{ selector: 'igo-track-feature-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button *ngIf=\"options.trackFeature\"\n mat-icon-button\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.layer.trackFeature' | translate\"\n [color]=\"color\"\n (click)=\"toggleTrackFeature()\">\n <mat-icon svgIcon=\"crosshairs-gps\"></mat-icon>\n</button>\n" }]
15351
+ args: [{ selector: 'igo-track-feature-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button *ngIf=\"options.trackFeature\"\r\n mat-icon-button\r\n collapsibleButton\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.layer.trackFeature' | translate\"\r\n [color]=\"color\"\r\n (click)=\"toggleTrackFeature()\">\r\n <mat-icon svgIcon=\"crosshairs-gps\"></mat-icon>\r\n</button>\r\n" }]
15346
15352
  }], function () { return []; }, { layer: [{
15347
15353
  type: Input
15348
15354
  }], trackFeature: [{
@@ -15421,7 +15427,7 @@ LayerLegendItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: La
15421
15427
  } }, styles: ["[_nghost-%COMP%]{overflow:hidden}.igo-layer-list-item[_ngcontent-%COMP%]{height:46px;clear:both}.igo-layer-legend-container[_ngcontent-%COMP%]{padding-left:18px;width:calc(100% - 18px)}"], changeDetection: 0 });
15422
15428
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LayerLegendItemComponent, [{
15423
15429
  type: Component,
15424
- args: [{ selector: 'igo-layer-legend-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item class= \"igo-layer-list-item\">\n <h4 matLine class=\"igo-layer-title\" [matTooltip]=\"tooltipText\" matTooltipShowDelay=\"500\">{{layer.title}}</h4>\n</mat-list-item>\n\n<div #legend class=\"igo-layer-legend-container\">\n <igo-layer-legend\n [layer]=\"layer\"\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\">\n </igo-layer-legend>\n</div>\n", styles: [":host{overflow:hidden}.igo-layer-list-item{height:46px;clear:both}.igo-layer-legend-container{padding-left:18px;width:calc(100% - 18px)}\n"] }]
15430
+ args: [{ selector: 'igo-layer-legend-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item class= \"igo-layer-list-item\">\r\n <h4 matLine class=\"igo-layer-title\" [matTooltip]=\"tooltipText\" matTooltipShowDelay=\"500\">{{layer.title}}</h4>\r\n</mat-list-item>\r\n\r\n<div #legend class=\"igo-layer-legend-container\">\r\n <igo-layer-legend\r\n [layer]=\"layer\"\r\n [updateLegendOnResolutionChange]=\"updateLegendOnResolutionChange\">\r\n </igo-layer-legend>\r\n</div>\r\n", styles: [":host{overflow:hidden}.igo-layer-list-item{height:46px;clear:both}.igo-layer-legend-container{padding-left:18px;width:calc(100% - 18px)}\n"] }]
15425
15431
  }], function () { return [{ type: i2$1.NetworkService }]; }, { layer: [{
15426
15432
  type: Input
15427
15433
  }], updateLegendOnResolutionChange: [{
@@ -15450,7 +15456,20 @@ var FontType;
15450
15456
  FontType["LucidaConsole"] = "Lucida Console";
15451
15457
  FontType["BrushScriptMT"] = "Brush Script MT";
15452
15458
  FontType["ComicSansMS"] = "Comic Sans MS";
15453
- })(FontType || (FontType = {}));
15459
+ })(FontType || (FontType = {}));
15460
+ var LabelType;
15461
+ (function (LabelType) {
15462
+ LabelType["Coordinates"] = "Coordinates";
15463
+ LabelType["Length"] = "Length";
15464
+ LabelType["Area"] = "Area";
15465
+ LabelType["Predefined"] = "Predefined";
15466
+ LabelType["Custom"] = "Custom";
15467
+ })(LabelType || (LabelType = {}));
15468
+ var CoordinatesUnit;
15469
+ (function (CoordinatesUnit) {
15470
+ CoordinatesUnit["DecimalDegree"] = "DD";
15471
+ CoordinatesUnit["DegreesMinutesSeconds"] = "DMS";
15472
+ })(CoordinatesUnit || (CoordinatesUnit = {}));
15454
15473
 
15455
15474
  class DrawIconService {
15456
15475
  constructor(config) {
@@ -16090,6 +16109,22 @@ function createOlTooltipDrawAtPoint(olPoint) {
16090
16109
  olTooltip.setPosition(olPoint.getFlatCoordinates());
16091
16110
  olPoint.set('_tooltip', olTooltip);
16092
16111
  return olTooltip;
16112
+ }
16113
+ function DDtoDMS(value, unit) {
16114
+ const conversionMapper = new Map([
16115
+ [CoordinatesUnit.DecimalDegree, (val) => {
16116
+ if (typeof val[0] === 'number') {
16117
+ return roundCoordToString(val, 5);
16118
+ }
16119
+ else {
16120
+ const numVal = [Number(val[0]), Number(val[1])];
16121
+ return roundCoordToString(numVal, 5);
16122
+ }
16123
+ }],
16124
+ [CoordinatesUnit.DegreesMinutesSeconds, (val) => convertDDToDMS(val, 2)]
16125
+ ]);
16126
+ let conversion = conversionMapper.get(unit);
16127
+ return conversion ? conversion(value) : undefined;
16093
16128
  }
16094
16129
 
16095
16130
  class DrawStyleService {
@@ -16099,7 +16134,7 @@ class DrawStyleService {
16099
16134
  this.strokeColor = 'rgba(143,7,7,1)';
16100
16135
  this.strokeWidth = 1;
16101
16136
  this.labelsAreShown = true;
16102
- this.fontSize = '20';
16137
+ this.fontSize = '15';
16103
16138
  this.fontStyle = FontType.Arial.toString();
16104
16139
  this.offsetX = 0;
16105
16140
  this.offsetY = 0;
@@ -16649,7 +16684,7 @@ FeatureDetailsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Fea
16649
16684
  } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i1$1.NgStyle, i2.MatIcon, i5$1.ImageErrorDirective, i1$1.AsyncPipe, i1$1.JsonPipe, i7.TranslatePipe, i5$1.KeyValuePipe, i5$1.SecureImagePipe], styles: ["table[_ngcontent-%COMP%]{width:100%}table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:5px}#keyValue[_ngcontent-%COMP%]{width:30%}table[_ngcontent-%COMP%] .routing{cursor:pointer}iframe[_ngcontent-%COMP%]{height:calc(100% - 4px);width:100%;border:0}.copyClipboard[_ngcontent-%COMP%]{border:none;background:transparent;cursor:pointer}"], changeDetection: 0 });
16650
16685
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FeatureDetailsComponent, [{
16651
16686
  type: Component,
16652
- args: [{ selector: 'igo-feature-details', changeDetection: ChangeDetectionStrategy.OnPush, template: "<table class=\"igo-striped mat-typography\" *ngIf=\"ready && feature && isObject(feature.properties) && feature.properties.target !== 'iframe'\">\n <tbody>\n <tr *ngFor=\"let property of filterFeatureProperties(feature) | keyvalue\">\n\n <td *ngIf=\"feature.properties.target === '_blank' && property.key === 'url'\">\n <mat-icon mat-list-avatar svgIcon=\"{{icon}}\"></mat-icon>\n </td>\n\n <td *ngIf=\"feature.properties.target === '_blank' && property.key === 'url'\">\n <a href=\"{{property.value}}\" target='_blank' rel=\"noopener noreferrer\"> {{ 'igo.geo.targetHtmlUrl' | translate }} {{title}}</a>\n <button class=\"copyClipboard\" mat-icon-button (click)=\"copyTextToClipboard(property.value)\">\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n </button>\n </td>\n\n <td id=\"keyValue\" *ngIf=\"feature.properties.target === undefined\">\n {{property.key}}\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && !isObject(property.value) && !isUrl(property.value) && !isEmbeddedLink(property.value)\" [innerHTML]=\"property.value\">\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && isEmbeddedLink(property.value)\">\n <u [ngStyle]=\"{'cursor': 'pointer', 'color': 'blue'}\" (click)=\"openSecureUrl(property.value)\">{{ getEmbeddedLinkText(property.value) }}</u>\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && !isObject(property.value) && (isDoc(property.value) || isUrl(property.value)) && !isImg(property.value)\">\n <u [ngStyle]=\"{'cursor': 'pointer', 'color': 'blue'}\" (click)=\"openSecureUrl(property.value)\">{{ 'igo.geo.targetHtmlUrl' | translate }}</u>\n <button class=\"copyClipboard\" mat-icon-button (click)=\"copyTextToClipboard(property.value)\">\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n </button>\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && !isObject(property.value) && isUrl(property.value) && isImg(property.value)\">\n <a href=\"{{property.value}}\" target='_blank' (click)=\"openSecureUrl(property.value)\" rel=\"noopener noreferrer\">\n <img igoImageError src=\"{{(property.value | secureImage) |\u00A0async}}\" width=\"225\" height=\"auto\">\n </a>\n </td>\n\n <td *ngIf=\"feature.properties.target === undefined && isObject(property.value)\" [innerHTML]=\"property.value | json\">\n </td>\n\n </tr>\n </tbody>\n</table>\n\n<iframe *ngIf=\"isHtmlDisplay()\" [srcdoc]=\"htmlSanitizer(feature.properties)\" [src]=\"urlSanitizer(feature.properties.url)\"></iframe>\n", styles: ["table{width:100%}table td{padding:5px}#keyValue{width:30%}table ::ng-deep .routing{cursor:pointer}iframe{height:calc(100% - 4px);width:100%;border:0}.copyClipboard{border:none;background:transparent;cursor:pointer}\n"] }]
16687
+ args: [{ selector: 'igo-feature-details', changeDetection: ChangeDetectionStrategy.OnPush, template: "<table class=\"igo-striped mat-typography\" *ngIf=\"ready && feature && isObject(feature.properties) && feature.properties.target !== 'iframe'\">\r\n <tbody>\r\n <tr *ngFor=\"let property of filterFeatureProperties(feature) | keyvalue\">\r\n\r\n <td *ngIf=\"feature.properties.target === '_blank' && property.key === 'url'\">\r\n <mat-icon mat-list-avatar svgIcon=\"{{icon}}\"></mat-icon>\r\n </td>\r\n\r\n <td *ngIf=\"feature.properties.target === '_blank' && property.key === 'url'\">\r\n <a href=\"{{property.value}}\" target='_blank' rel=\"noopener noreferrer\"> {{ 'igo.geo.targetHtmlUrl' | translate }} {{title}}</a>\r\n <button class=\"copyClipboard\" mat-icon-button (click)=\"copyTextToClipboard(property.value)\">\r\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\r\n </button>\r\n </td>\r\n\r\n <td id=\"keyValue\" *ngIf=\"feature.properties.target === undefined\">\r\n {{property.key}}\r\n </td>\r\n\r\n <td *ngIf=\"feature.properties.target === undefined && !isObject(property.value) && !isUrl(property.value) && !isEmbeddedLink(property.value)\" [innerHTML]=\"property.value\">\r\n </td>\r\n\r\n <td *ngIf=\"feature.properties.target === undefined && isEmbeddedLink(property.value)\">\r\n <u [ngStyle]=\"{'cursor': 'pointer', 'color': 'blue'}\" (click)=\"openSecureUrl(property.value)\">{{ getEmbeddedLinkText(property.value) }}</u>\r\n </td>\r\n\r\n <td *ngIf=\"feature.properties.target === undefined && !isObject(property.value) && (isDoc(property.value) || isUrl(property.value)) && !isImg(property.value)\">\r\n <u [ngStyle]=\"{'cursor': 'pointer', 'color': 'blue'}\" (click)=\"openSecureUrl(property.value)\">{{ 'igo.geo.targetHtmlUrl' | translate }}</u>\r\n <button class=\"copyClipboard\" mat-icon-button (click)=\"copyTextToClipboard(property.value)\">\r\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\r\n </button>\r\n </td>\r\n\r\n <td *ngIf=\"feature.properties.target === undefined && !isObject(property.value) && isUrl(property.value) && isImg(property.value)\">\r\n <a href=\"{{property.value}}\" target='_blank' (click)=\"openSecureUrl(property.value)\" rel=\"noopener noreferrer\">\r\n <img igoImageError src=\"{{(property.value | secureImage) |\u00A0async}}\" width=\"225\" height=\"auto\">\r\n </a>\r\n </td>\r\n\r\n <td *ngIf=\"feature.properties.target === undefined && isObject(property.value)\" [innerHTML]=\"property.value | json\">\r\n </td>\r\n\r\n </tr>\r\n </tbody>\r\n</table>\r\n\r\n<iframe *ngIf=\"isHtmlDisplay()\" [srcdoc]=\"htmlSanitizer(feature.properties)\" [src]=\"urlSanitizer(feature.properties.url)\"></iframe>\r\n", styles: ["table{width:100%}table td{padding:5px}#keyValue{width:30%}table ::ng-deep .routing{cursor:pointer}iframe{height:calc(100% - 4px);width:100%;border:0}.copyClipboard{border:none;background:transparent;cursor:pointer}\n"] }]
16653
16688
  }], function () { return [{ type: i1$2.HttpClient }, { type: i0.ChangeDetectorRef }, { type: i2$3.DomSanitizer }, { type: i2$1.NetworkService }, { type: i2$1.MessageService }, { type: i2$1.ConfigService }]; }, { source: [{
16654
16689
  type: Input
16655
16690
  }], map: [{
@@ -16758,7 +16793,7 @@ FeatureFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Featur
16758
16793
  } }, dependencies: [i5$1.FormComponent, i1$1.AsyncPipe], styles: ["[_nghost-%COMP%]{display:block}igo-form[_ngcontent-%COMP%]{height:100%}"], changeDetection: 0 });
16759
16794
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FeatureFormComponent, [{
16760
16795
  type: Component,
16761
- args: [{ selector: 'igo-feature-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n<igo-form\n #igoForm\n [form]=\"form\"\n [formData]=\"feature$ | async\"\n (submitForm)=\"onSubmit($event)\">\n\n <ng-content></ng-content>\n \n <ng-content select=\"[formButtons]\" formButtons></ng-content>\n \n</igo-form>\n", styles: [":host{display:block}igo-form{height:100%}\n"] }]
16796
+ args: [{ selector: 'igo-feature-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "\r\n<igo-form\r\n #igoForm\r\n [form]=\"form\"\r\n [formData]=\"feature$ | async\"\r\n (submitForm)=\"onSubmit($event)\">\r\n\r\n <ng-content></ng-content>\r\n \r\n <ng-content select=\"[formButtons]\" formButtons></ng-content>\r\n \r\n</igo-form>\r\n", styles: [":host{display:block}igo-form{height:100%}\n"] }]
16762
16797
  }], function () { return []; }, { form: [{
16763
16798
  type: Input
16764
16799
  }], feature: [{
@@ -16945,8 +16980,24 @@ class DrawControl {
16945
16980
  * Freehand mode observable (defaults to false)
16946
16981
  */
16947
16982
  this.freehand$ = new BehaviorSubject(false);
16983
+ /**
16984
+ * Observables from predefined radius (defaults to false and undefined)
16985
+ */
16986
+ this.ispredefinedRadius$ = new BehaviorSubject(false);
16987
+ this.predefinedRadius$ = new BehaviorSubject(undefined);
16988
+ this.radiusDrawEnd$ = new BehaviorSubject(undefined);
16948
16989
  this.olDrawingLayer = options.drawingLayer ? options.drawingLayer : this.createOlInnerOverlayLayer();
16949
16990
  this.olGeometryType = this.options.geometryType;
16991
+ this.olInteractionStyle = this.options.interactionStyle;
16992
+ }
16993
+ /**
16994
+ * take the value of radius
16995
+ */
16996
+ get radiusVal() {
16997
+ return this.predefinedRadius$.getValue();
16998
+ }
16999
+ set radiusValData(radiusCercle) {
17000
+ this.predefinedRadius$.next(radiusCercle);
16950
17001
  }
16951
17002
  /**
16952
17003
  * Wheter the control is active
@@ -16983,6 +17034,9 @@ class DrawControl {
16983
17034
  getSource() {
16984
17035
  return this.olDrawingLayerSource;
16985
17036
  }
17037
+ setOlInteractionStyle(style) {
17038
+ this.olInteractionStyle = style;
17039
+ }
16986
17040
  /**
16987
17041
  * Set the current geometry type
16988
17042
  * @param geometryType the geometry type
@@ -16990,6 +17044,12 @@ class DrawControl {
16990
17044
  setGeometryType(geometryType) {
16991
17045
  this.olGeometryType = geometryType;
16992
17046
  }
17047
+ /**
17048
+ * Get the current geometry type
17049
+ */
17050
+ getGeometryType() {
17051
+ return this.olGeometryType;
17052
+ }
16993
17053
  /**
16994
17054
  * Create a drawing source if none is defined in the options
16995
17055
  */
@@ -17031,21 +17091,35 @@ class DrawControl {
17031
17091
  // Create Draw interaction
17032
17092
  let olDrawInteraction;
17033
17093
  if (!this.freehand$.getValue()) {
17034
- olDrawInteraction = new OlDraw({
17035
- type: this.olGeometryType,
17036
- source: this.getSource(),
17037
- stopClick: true,
17038
- style: this.options.interactionStyle,
17039
- maxPoints: this.options.maxPoints,
17040
- freehand: false,
17041
- freehandCondition: () => false
17042
- });
17094
+ if (!this.ispredefinedRadius$.getValue()) {
17095
+ olDrawInteraction = new OlDraw({
17096
+ type: this.olGeometryType,
17097
+ source: this.getSource(),
17098
+ stopClick: true,
17099
+ style: this.olInteractionStyle,
17100
+ maxPoints: this.options.maxPoints,
17101
+ freehand: false,
17102
+ freehandCondition: () => false
17103
+ });
17104
+ }
17105
+ else {
17106
+ olDrawInteraction = new OlDraw({
17107
+ type: 'Point',
17108
+ source: this.getSource(),
17109
+ stopClick: true,
17110
+ style: this.olInteractionStyle,
17111
+ maxPoints: this.options.maxPoints,
17112
+ freehand: false,
17113
+ freehandCondition: () => false
17114
+ });
17115
+ }
17043
17116
  }
17044
17117
  else {
17045
17118
  if (this.olGeometryType === 'Point') {
17046
17119
  olDrawInteraction = new OlDraw({
17047
17120
  type: 'Circle',
17048
17121
  source: this.getSource(),
17122
+ style: typeof this.olInteractionStyle === 'function' ? undefined : this.olInteractionStyle,
17049
17123
  maxPoints: this.options.maxPoints,
17050
17124
  freehand: true
17051
17125
  });
@@ -17054,6 +17128,7 @@ class DrawControl {
17054
17128
  olDrawInteraction = new OlDraw({
17055
17129
  type: this.olGeometryType,
17056
17130
  source: this.getSource(),
17131
+ style: this.olInteractionStyle,
17057
17132
  maxPoints: this.options.maxPoints,
17058
17133
  freehand: true
17059
17134
  });
@@ -17116,6 +17191,9 @@ class DrawControl {
17116
17191
  * @param event Draw event (drawend)
17117
17192
  */
17118
17193
  onDrawEnd(event) {
17194
+ if (event.feature.getGeometry().getType() === 'Point') {
17195
+ this.radiusDrawEnd$.next(this.predefinedRadius$.getValue());
17196
+ }
17119
17197
  this.unsubscribeKeyDown();
17120
17198
  unByKey(this.onDrawKey);
17121
17199
  const olGeometry = event.feature.getGeometry();
@@ -17173,57 +17251,570 @@ class DrawControl {
17173
17251
  }
17174
17252
  }
17175
17253
 
17254
+ function DrawPopupComponent_div_12_mat_radio_group_5_mat_radio_button_1_Template(rf, ctx) { if (rf & 1) {
17255
+ const _r10 = i0.ɵɵgetCurrentView();
17256
+ i0.ɵɵelementStart(0, "mat-radio-button", 11);
17257
+ i0.ɵɵlistener("change", function DrawPopupComponent_div_12_mat_radio_group_5_mat_radio_button_1_Template_mat_radio_button_change_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r9.onLabelTypeChange($event.value)); });
17258
+ i0.ɵɵtext(1);
17259
+ i0.ɵɵelementEnd();
17260
+ } if (rf & 2) {
17261
+ const option_r8 = ctx.$implicit;
17262
+ const ctx_r7 = i0.ɵɵnextContext(3);
17263
+ i0.ɵɵproperty("value", option_r8.value)("disabled", ctx_r7.optionAvailable(option_r8.value))("checked", option_r8.checked);
17264
+ i0.ɵɵadvance(1);
17265
+ i0.ɵɵtextInterpolate1(" ", ctx_r7.getProperLengthLabel(option_r8.value), " ");
17266
+ } }
17267
+ function DrawPopupComponent_div_12_mat_radio_group_5_Template(rf, ctx) { if (rf & 1) {
17268
+ i0.ɵɵelementStart(0, "mat-radio-group", 5);
17269
+ i0.ɵɵtemplate(1, DrawPopupComponent_div_12_mat_radio_group_5_mat_radio_button_1_Template, 2, 4, "mat-radio-button", 10);
17270
+ i0.ɵɵelementEnd();
17271
+ } if (rf & 2) {
17272
+ const ctx_r2 = i0.ɵɵnextContext(2);
17273
+ i0.ɵɵadvance(1);
17274
+ i0.ɵɵproperty("ngForOf", ctx_r2.arrayBuiltInType);
17275
+ } }
17276
+ function DrawPopupComponent_div_12_ng_container_6_mat_checkbox_1_Template(rf, ctx) { if (rf & 1) {
17277
+ const _r14 = i0.ɵɵgetCurrentView();
17278
+ i0.ɵɵelementStart(0, "mat-checkbox", 13);
17279
+ i0.ɵɵlistener("change", function DrawPopupComponent_div_12_ng_container_6_mat_checkbox_1_Template_mat_checkbox_change_0_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r13.onLabelTypeChange($event.source.value, $event.checked)); });
17280
+ i0.ɵɵtext(1);
17281
+ i0.ɵɵelementEnd();
17282
+ } if (rf & 2) {
17283
+ const option_r12 = ctx.$implicit;
17284
+ const ctx_r11 = i0.ɵɵnextContext(3);
17285
+ i0.ɵɵproperty("value", option_r12.value)("disabled", ctx_r11.optionAvailable(option_r12.value))("checked", option_r12.checked);
17286
+ i0.ɵɵadvance(1);
17287
+ i0.ɵɵtextInterpolate1(" ", ctx_r11.getProperLengthLabel(option_r12.value), " ");
17288
+ } }
17289
+ function DrawPopupComponent_div_12_ng_container_6_Template(rf, ctx) { if (rf & 1) {
17290
+ i0.ɵɵelementContainerStart(0, 5);
17291
+ i0.ɵɵtemplate(1, DrawPopupComponent_div_12_ng_container_6_mat_checkbox_1_Template, 2, 4, "mat-checkbox", 12);
17292
+ i0.ɵɵelementContainerEnd();
17293
+ } if (rf & 2) {
17294
+ const ctx_r3 = i0.ɵɵnextContext(2);
17295
+ i0.ɵɵadvance(1);
17296
+ i0.ɵɵproperty("ngForOf", ctx_r3.arrayBuiltInType);
17297
+ } }
17298
+ function DrawPopupComponent_div_12_div_7_mat_option_6_Template(rf, ctx) { if (rf & 1) {
17299
+ i0.ɵɵelementStart(0, "mat-option", 3);
17300
+ i0.ɵɵtext(1);
17301
+ i0.ɵɵelementEnd();
17302
+ } if (rf & 2) {
17303
+ const unit_r17 = ctx.$implicit;
17304
+ i0.ɵɵproperty("value", unit_r17);
17305
+ i0.ɵɵadvance(1);
17306
+ i0.ɵɵtextInterpolate1(" ", unit_r17, " ");
17307
+ } }
17308
+ function DrawPopupComponent_div_12_div_7_Template(rf, ctx) { if (rf & 1) {
17309
+ const _r19 = i0.ɵɵgetCurrentView();
17310
+ i0.ɵɵelementStart(0, "div")(1, "mat-form-field", 14);
17311
+ i0.ɵɵelement(2, "input", 15, 16);
17312
+ i0.ɵɵelementEnd();
17313
+ i0.ɵɵelementStart(4, "mat-form-field", 17)(5, "mat-select", 18);
17314
+ i0.ɵɵlistener("selectionChange", function DrawPopupComponent_div_12_div_7_Template_mat_select_selectionChange_5_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r18.onChangeCoordinateUnit($event.value)); });
17315
+ i0.ɵɵtemplate(6, DrawPopupComponent_div_12_div_7_mat_option_6_Template, 2, 2, "mat-option", 19);
17316
+ i0.ɵɵelementEnd()()();
17317
+ } if (rf & 2) {
17318
+ const ctx_r4 = i0.ɵɵnextContext(2);
17319
+ i0.ɵɵadvance(2);
17320
+ i0.ɵɵpropertyInterpolate("value", ctx_r4.currentCoordinates);
17321
+ i0.ɵɵadvance(3);
17322
+ i0.ɵɵproperty("value", ctx_r4.coordinatesMeasureUnit);
17323
+ i0.ɵɵadvance(1);
17324
+ i0.ɵɵproperty("ngForOf", ctx_r4.allCoordinatesUnits);
17325
+ } }
17326
+ function DrawPopupComponent_div_12_div_8_mat_option_6_Template(rf, ctx) { if (rf & 1) {
17327
+ i0.ɵɵelementStart(0, "mat-option", 3);
17328
+ i0.ɵɵtext(1);
17329
+ i0.ɵɵelementEnd();
17330
+ } if (rf & 2) {
17331
+ const unit_r22 = ctx.$implicit;
17332
+ const ctx_r21 = i0.ɵɵnextContext(3);
17333
+ i0.ɵɵproperty("value", unit_r22);
17334
+ i0.ɵɵadvance(1);
17335
+ i0.ɵɵtextInterpolate1(" ", ctx_r21.getLengthUnitEnum(unit_r22), " ");
17336
+ } }
17337
+ function DrawPopupComponent_div_12_div_8_Template(rf, ctx) { if (rf & 1) {
17338
+ const _r24 = i0.ɵɵgetCurrentView();
17339
+ i0.ɵɵelementStart(0, "div")(1, "mat-form-field", 14);
17340
+ i0.ɵɵelement(2, "input", 20, 16);
17341
+ i0.ɵɵelementEnd();
17342
+ i0.ɵɵelementStart(4, "mat-form-field", 17)(5, "mat-select", 18);
17343
+ i0.ɵɵlistener("selectionChange", function DrawPopupComponent_div_12_div_8_Template_mat_select_selectionChange_5_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.onChangeLengthUnit($event.value)); });
17344
+ i0.ɵɵtemplate(6, DrawPopupComponent_div_12_div_8_mat_option_6_Template, 2, 2, "mat-option", 19);
17345
+ i0.ɵɵelementEnd()()();
17346
+ } if (rf & 2) {
17347
+ const ctx_r5 = i0.ɵɵnextContext(2);
17348
+ i0.ɵɵadvance(2);
17349
+ i0.ɵɵpropertyInterpolate("placeholder", ctx_r5.lengthLabelT);
17350
+ i0.ɵɵpropertyInterpolate("value", ctx_r5.currentLength);
17351
+ i0.ɵɵadvance(3);
17352
+ i0.ɵɵproperty("value", ctx_r5.lengthMeasureUnit);
17353
+ i0.ɵɵadvance(1);
17354
+ i0.ɵɵproperty("ngForOf", ctx_r5.allLengthUnits);
17355
+ } }
17356
+ function DrawPopupComponent_div_12_div_9_mat_option_7_Template(rf, ctx) { if (rf & 1) {
17357
+ i0.ɵɵelementStart(0, "mat-option", 3);
17358
+ i0.ɵɵtext(1);
17359
+ i0.ɵɵelementEnd();
17360
+ } if (rf & 2) {
17361
+ const unit_r27 = ctx.$implicit;
17362
+ const ctx_r26 = i0.ɵɵnextContext(3);
17363
+ i0.ɵɵproperty("value", unit_r27);
17364
+ i0.ɵɵadvance(1);
17365
+ i0.ɵɵtextInterpolate1(" ", ctx_r26.getAreaUnitEnum(unit_r27), " ");
17366
+ } }
17367
+ function DrawPopupComponent_div_12_div_9_Template(rf, ctx) { if (rf & 1) {
17368
+ const _r29 = i0.ɵɵgetCurrentView();
17369
+ i0.ɵɵelementStart(0, "div")(1, "mat-form-field", 14);
17370
+ i0.ɵɵelement(2, "input", 20, 16);
17371
+ i0.ɵɵpipe(4, "translate");
17372
+ i0.ɵɵelementEnd();
17373
+ i0.ɵɵelementStart(5, "mat-form-field", 17)(6, "mat-select", 18);
17374
+ i0.ɵɵlistener("selectionChange", function DrawPopupComponent_div_12_div_9_Template_mat_select_selectionChange_6_listener($event) { i0.ɵɵrestoreView(_r29); const ctx_r28 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r28.onChangeAreaUnit($event.value)); });
17375
+ i0.ɵɵtemplate(7, DrawPopupComponent_div_12_div_9_mat_option_7_Template, 2, 2, "mat-option", 19);
17376
+ i0.ɵɵelementEnd()()();
17377
+ } if (rf & 2) {
17378
+ const ctx_r6 = i0.ɵɵnextContext(2);
17379
+ i0.ɵɵadvance(2);
17380
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(4, 4, "igo.geo.draw.labelType.Area"));
17381
+ i0.ɵɵpropertyInterpolate("value", ctx_r6.currentArea);
17382
+ i0.ɵɵadvance(4);
17383
+ i0.ɵɵproperty("value", ctx_r6.areaMeasureUnit);
17384
+ i0.ɵɵadvance(1);
17385
+ i0.ɵɵproperty("ngForOf", ctx_r6.allAreaUnits);
17386
+ } }
17387
+ function DrawPopupComponent_div_12_Template(rf, ctx) { if (rf & 1) {
17388
+ const _r31 = i0.ɵɵgetCurrentView();
17389
+ i0.ɵɵelementStart(0, "div")(1, "div")(2, "p", 5);
17390
+ i0.ɵɵtext(3);
17391
+ i0.ɵɵpipe(4, "translate");
17392
+ i0.ɵɵelementEnd();
17393
+ i0.ɵɵtemplate(5, DrawPopupComponent_div_12_mat_radio_group_5_Template, 2, 1, "mat-radio-group", 6);
17394
+ i0.ɵɵtemplate(6, DrawPopupComponent_div_12_ng_container_6_Template, 2, 1, "ng-container", 6);
17395
+ i0.ɵɵtemplate(7, DrawPopupComponent_div_12_div_7_Template, 7, 3, "div", 4);
17396
+ i0.ɵɵtemplate(8, DrawPopupComponent_div_12_div_8_Template, 7, 4, "div", 4);
17397
+ i0.ɵɵtemplate(9, DrawPopupComponent_div_12_div_9_Template, 8, 6, "div", 4);
17398
+ i0.ɵɵelementEnd();
17399
+ i0.ɵɵelementStart(10, "div", 7)(11, "button", 8);
17400
+ i0.ɵɵlistener("click", function DrawPopupComponent_div_12_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r31); const ctx_r30 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r30.cancelDrawing()); });
17401
+ i0.ɵɵtext(12);
17402
+ i0.ɵɵpipe(13, "translate");
17403
+ i0.ɵɵelementEnd();
17404
+ i0.ɵɵelementStart(14, "button", 9);
17405
+ i0.ɵɵlistener("click", function DrawPopupComponent_div_12_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r31); const ctx_r32 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r32.confirm()); });
17406
+ i0.ɵɵtext(15);
17407
+ i0.ɵɵelementEnd()()();
17408
+ } if (rf & 2) {
17409
+ const ctx_r0 = i0.ɵɵnextContext();
17410
+ i0.ɵɵadvance(3);
17411
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 8, "igo.geo.draw.builtInInstructions"));
17412
+ i0.ɵɵadvance(2);
17413
+ i0.ɵɵproperty("ngIf", ctx_r0.olGeometryType !== "Polygon");
17414
+ i0.ɵɵadvance(1);
17415
+ i0.ɵɵproperty("ngIf", ctx_r0.olGeometryType === "Polygon");
17416
+ i0.ɵɵadvance(1);
17417
+ i0.ɵɵproperty("ngIf", ctx_r0.labelFlag === ctx_r0.labelType.Coordinates);
17418
+ i0.ɵɵadvance(1);
17419
+ i0.ɵɵproperty("ngIf", ctx_r0.labelFlag === ctx_r0.labelType.Length || ctx_r0.polygonCheck === 2);
17420
+ i0.ɵɵadvance(1);
17421
+ i0.ɵɵproperty("ngIf", ctx_r0.labelFlag === ctx_r0.labelType.Area || ctx_r0.polygonCheck === 2);
17422
+ i0.ɵɵadvance(3);
17423
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(13, 10, "igo.geo.draw.cancel"), " ");
17424
+ i0.ɵɵadvance(3);
17425
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.noLabelButton(), " ");
17426
+ } }
17427
+ function DrawPopupComponent_div_13_Template(rf, ctx) { if (rf & 1) {
17428
+ const _r36 = i0.ɵɵgetCurrentView();
17429
+ i0.ɵɵelementStart(0, "div")(1, "div")(2, "p", 5);
17430
+ i0.ɵɵtext(3);
17431
+ i0.ɵɵpipe(4, "translate");
17432
+ i0.ɵɵelementEnd();
17433
+ i0.ɵɵelementStart(5, "mat-form-field", 21)(6, "input", 22, 16);
17434
+ i0.ɵɵlistener("select", function DrawPopupComponent_div_13_Template_input_select_6_listener() { return true; })("input", function DrawPopupComponent_div_13_Template_input_input_6_listener($event) { i0.ɵɵrestoreView(_r36); const ctx_r35 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r35.getLabelLength($event.target.value)); });
17435
+ i0.ɵɵpipe(8, "translate");
17436
+ i0.ɵɵelementEnd()()();
17437
+ i0.ɵɵelementStart(9, "div", 7)(10, "button", 8);
17438
+ i0.ɵɵlistener("click", function DrawPopupComponent_div_13_Template_button_click_10_listener() { i0.ɵɵrestoreView(_r36); const ctx_r37 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r37.cancelDrawing()); });
17439
+ i0.ɵɵtext(11);
17440
+ i0.ɵɵpipe(12, "translate");
17441
+ i0.ɵɵelementEnd();
17442
+ i0.ɵɵelementStart(13, "button", 9);
17443
+ i0.ɵɵlistener("click", function DrawPopupComponent_div_13_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r36); const _r33 = i0.ɵɵreference(7); const ctx_r38 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r38.confirm(_r33.value)); });
17444
+ i0.ɵɵtext(14);
17445
+ i0.ɵɵelementEnd()()();
17446
+ } if (rf & 2) {
17447
+ const ctx_r1 = i0.ɵɵnextContext();
17448
+ i0.ɵɵadvance(3);
17449
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 5, "igo.geo.draw.dialogInstruction"));
17450
+ i0.ɵɵadvance(3);
17451
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(8, 7, "igo.geo.draw.dialogTitle"));
17452
+ i0.ɵɵpropertyInterpolate("value", ctx_r1.currentLabel);
17453
+ i0.ɵɵadvance(5);
17454
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(12, 9, "igo.geo.draw.cancel"), " ");
17455
+ i0.ɵɵadvance(3);
17456
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.noLabelButton(), " ");
17457
+ } }
17176
17458
  class DrawPopupComponent {
17177
- constructor(dialogRef, data) {
17459
+ constructor(languageService, dialogRef, data) {
17460
+ this.languageService = languageService;
17178
17461
  this.dialogRef = dialogRef;
17179
17462
  this.data = data;
17180
17463
  this.confirmFlag = false;
17181
- }
17464
+ this.labelFlag = LabelType.Custom;
17465
+ this.geometryType = GeometryType;
17466
+ this.labelType = LabelType;
17467
+ this.arrayBuiltInType = [];
17468
+ this.olGeometryType = undefined;
17469
+ this.polygonCheck = 0; // Count for polygon label types checkboxes
17470
+ this.currentLabel = this.data.olGeometry.get('draw');
17471
+ this.labelLength = this.currentLabel ? this.currentLabel.length : 0;
17472
+ let olGeometry;
17473
+ const projection = this.data.map.ol.getView().getProjection();
17474
+ if (this.data.olGeometry instanceof OlFeature) {
17475
+ if (this.data.olGeometry.get('rad')) {
17476
+ const longitudeLatitude = [this.data.olGeometry.get('longitude'), this.data.olGeometry.get('latitude')];
17477
+ this.olGeometryType = GeometryType.Circle;
17478
+ olGeometry = new OlCircle(longitudeLatitude, this.data.olGeometry.get('rad'));
17479
+ }
17480
+ else {
17481
+ this.olGeometryType = this.data.olGeometry.getGeometry().getType();
17482
+ olGeometry = this.data.olGeometry.get('geometry');
17483
+ }
17484
+ }
17485
+ else {
17486
+ this.olGeometryType = this.data.olGeometry.getType();
17487
+ olGeometry = this.data.olGeometry;
17488
+ }
17489
+ if (this.olGeometryType === GeometryType.Point || this.olGeometryType === GeometryType.Circle) {
17490
+ if (this.data.olGeometry instanceof OlFeature) {
17491
+ let longitude = this.data.olGeometry.get('longitude');
17492
+ let latitude = this.data.olGeometry.get('latitude');
17493
+ this.longlatDD = roundCoordTo([longitude, latitude], 5);
17494
+ this.coordinatesInDD = '(' + latitude + ', '
17495
+ + longitude + ')';
17496
+ }
17497
+ else {
17498
+ let point4326 = transform(this.data.olGeometry.getFlatCoordinates(), projection, 'EPSG:4326');
17499
+ this.longlatDD = roundCoordTo([point4326[0], point4326[1]], 5);
17500
+ this.coordinatesInDD =
17501
+ '(' + this.longlatDD[1] + ', ' + this.longlatDD[0] + ')';
17502
+ }
17503
+ this.currentCoordinates = this.coordinatesInDD;
17504
+ }
17505
+ if (this.olGeometryType === GeometryType.LineString) {
17506
+ this.lengthInMeters = measureOlGeometryLength(olGeometry, projection.getCode()).toFixed(2);
17507
+ this.currentLength = this.lengthInMeters;
17508
+ }
17509
+ else if (this.olGeometryType === GeometryType.Polygon) {
17510
+ this.lengthInMeters = measureOlGeometryLength(olGeometry, projection.getCode()).toFixed(2);
17511
+ this.currentLength = this.lengthInMeters;
17512
+ this.areaInMetersSquare = measureOlGeometryArea(olGeometry, projection.getCode()).toFixed(2);
17513
+ this.currentArea = this.areaInMetersSquare;
17514
+ }
17515
+ else if (this.olGeometryType === GeometryType.Circle) {
17516
+ let circularPolygon = fromCircle(olGeometry, 10000);
17517
+ const radius = this.getRadius(circularPolygon);
17518
+ this.lengthInMeters = radius.toFixed(2);
17519
+ this.currentLength = this.lengthInMeters;
17520
+ this.areaInMetersSquare = measureOlGeometryArea(circularPolygon, projection.getCode()).toFixed(2);
17521
+ this.currentArea = this.areaInMetersSquare;
17522
+ }
17523
+ if (data.olGeometry.get('labelType') === LabelType.Coordinates) {
17524
+ this.onLabelTypeChange(LabelType.Predefined);
17525
+ this.onLabelTypeChange(LabelType.Coordinates, true);
17526
+ this.coordinatesMeasureUnit = data.olGeometry.get('measureUnit');
17527
+ }
17528
+ else if (data.olGeometry.get('labelType') === LabelType.Length) {
17529
+ this.onLabelTypeChange(LabelType.Predefined);
17530
+ this.onLabelTypeChange(LabelType.Length, true);
17531
+ this.lengthMeasureUnit = data.olGeometry.get('measureUnit');
17532
+ }
17533
+ else if (data.olGeometry.get('labelType') === LabelType.Area) {
17534
+ this.onLabelTypeChange(LabelType.Predefined);
17535
+ this.onLabelTypeChange(LabelType.Area, true);
17536
+ this.areaMeasureUnit = data.olGeometry.get('measureUnit');
17537
+ }
17538
+ else if (data.olGeometry.get('labelType')?.length === 2) {
17539
+ this.onLabelTypeChange(LabelType.Predefined);
17540
+ this.onLabelTypeChange(LabelType.Length, true);
17541
+ this.onLabelTypeChange(LabelType.Area, true);
17542
+ this.lengthMeasureUnit = data.olGeometry.get('measureUnit')[0];
17543
+ this.areaMeasureUnit = data.olGeometry.get('measureUnit')[1];
17544
+ }
17545
+ this.buildArrayType();
17546
+ }
17547
+ /**
17548
+ * HTML Interactions
17549
+ */
17182
17550
  cancelDrawing() {
17183
17551
  this.dialogRef.close();
17184
17552
  }
17185
- confirm(labelString) {
17553
+ confirm(input) {
17186
17554
  this.confirmFlag = true;
17187
- this.dialogRef.close(labelString);
17555
+ if (this.labelFlag === LabelType.Predefined) {
17556
+ this.dialogRef.close();
17557
+ }
17558
+ else if (this.labelFlag === LabelType.Custom) {
17559
+ this.dialogRef.close({
17560
+ label: input
17561
+ });
17562
+ }
17563
+ else if (this.labelFlag === LabelType.Coordinates) {
17564
+ this.dialogRef.close({
17565
+ label: this.currentCoordinates,
17566
+ measureUnit: this.coordinatesMeasureUnit
17567
+ });
17568
+ }
17569
+ else if (this.olGeometryType === GeometryType.Polygon) {
17570
+ if (this.polygonCheck === 2) {
17571
+ this.labelFlag = [LabelType.Length, LabelType.Area];
17572
+ this.dialogRef.close({
17573
+ label: 'P: ' + this.currentLength + ' ' + MeasureLengthUnitAbbreviation[MeasureLengthUnit.Meters] + '\n'
17574
+ + this.languageService.translate.instant('igo.geo.draw.labelType.A') + this.currentArea + ' ' +
17575
+ MeasureAreaUnitAbbreviation[MeasureAreaUnit.SquareMeters], measureUnit: [this.lengthMeasureUnit, this.areaMeasureUnit]
17576
+ });
17577
+ }
17578
+ else {
17579
+ this.labelFlag === LabelType.Length ?
17580
+ this.dialogRef.close({
17581
+ label: 'P: ' + this.currentLength + ' ' + MeasureLengthUnitAbbreviation[this.lengthMeasureUnit],
17582
+ measureUnit: this.lengthMeasureUnit
17583
+ }) :
17584
+ this.dialogRef.close({
17585
+ label: this.currentArea + ' ' + MeasureAreaUnitAbbreviation[this.areaMeasureUnit],
17586
+ measureUnit: this.areaMeasureUnit
17587
+ });
17588
+ }
17589
+ }
17590
+ else if (this.labelFlag === LabelType.Length) {
17591
+ if (this.olGeometryType === GeometryType.Circle) {
17592
+ this.dialogRef.close({
17593
+ label: 'R: ' + this.currentLength + ' ' + MeasureLengthUnitAbbreviation[this.lengthMeasureUnit],
17594
+ measureUnit: this.lengthMeasureUnit
17595
+ });
17596
+ }
17597
+ else if (this.olGeometryType === GeometryType.LineString) {
17598
+ this.dialogRef.close({
17599
+ label: this.currentLength + ' ' + MeasureLengthUnitAbbreviation[this.lengthMeasureUnit],
17600
+ measureUnit: this.lengthMeasureUnit
17601
+ });
17602
+ }
17603
+ }
17604
+ else if (this.labelFlag === LabelType.Area) {
17605
+ this.dialogRef.close({
17606
+ label: this.currentArea + ' ' + MeasureAreaUnitAbbreviation[this.areaMeasureUnit],
17607
+ measureUnit: this.areaMeasureUnit
17608
+ });
17609
+ }
17610
+ }
17611
+ onLabelTypeChange(labelType, checked) {
17612
+ if (labelType !== LabelType.Predefined &&
17613
+ labelType !== LabelType.Custom &&
17614
+ this.olGeometryType === GeometryType.Polygon) {
17615
+ this.arrayBuiltInType.find(type => type.value === labelType) ?
17616
+ this.arrayBuiltInType.find(type => type.value === labelType).checked = checked : this.labelFlag = undefined;
17617
+ checked ? this.labelFlag = labelType : this.labelFlag = this.arrayBuiltInType.find(type => type.checked)?.value;
17618
+ }
17619
+ else {
17620
+ this.labelFlag = labelType;
17621
+ }
17622
+ if (labelType === LabelType.Predefined) {
17623
+ if (this.olGeometryType === GeometryType.Point) {
17624
+ this.labelFlag = LabelType.Coordinates;
17625
+ this.currentCoordinates = this.coordinatesInDD;
17626
+ this.coordinatesMeasureUnit = CoordinatesUnit.DecimalDegree;
17627
+ }
17628
+ else if (this.olGeometryType === GeometryType.LineString) {
17629
+ this.labelFlag = LabelType.Length;
17630
+ this.currentLength = this.lengthInMeters;
17631
+ this.lengthMeasureUnit = MeasureLengthUnit.Meters;
17632
+ }
17633
+ }
17634
+ else if (labelType === LabelType.Area) {
17635
+ this.currentArea = this.areaInMetersSquare;
17636
+ this.areaMeasureUnit = MeasureAreaUnit.SquareMeters;
17637
+ }
17638
+ else if (labelType === LabelType.Length) {
17639
+ this.currentLength = this.lengthInMeters;
17640
+ this.lengthMeasureUnit = MeasureLengthUnit.Meters;
17641
+ }
17642
+ else if (this.labelFlag === LabelType.Coordinates) {
17643
+ this.currentCoordinates = this.coordinatesInDD;
17644
+ this.coordinatesMeasureUnit = CoordinatesUnit.DecimalDegree;
17645
+ }
17646
+ const labeltypes = [this.labelType.Length, this.labelType.Area];
17647
+ if (this.olGeometryType === GeometryType.Polygon &&
17648
+ labeltypes.includes(labelType)) {
17649
+ checked ? this.polygonCheck += 1 : this.polygonCheck -= 1;
17650
+ ;
17651
+ }
17652
+ else {
17653
+ this.polygonCheck = 0;
17654
+ }
17655
+ }
17656
+ onChangeLengthUnit(lengthUnit) {
17657
+ this.lengthMeasureUnit = lengthUnit;
17658
+ this.currentLength = metersToUnit(Number(this.lengthInMeters), lengthUnit).toFixed(2);
17659
+ }
17660
+ onChangeAreaUnit(areaUnit) {
17661
+ this.areaMeasureUnit = areaUnit;
17662
+ this.currentArea = squareMetersToUnit(Number(this.areaInMetersSquare), areaUnit).toFixed(2);
17663
+ }
17664
+ onChangeCoordinateUnit(coordinatesUnit) {
17665
+ this.coordinatesMeasureUnit = coordinatesUnit;
17666
+ let coordinates = DDtoDMS(this.longlatDD, coordinatesUnit);
17667
+ this.currentCoordinates = '(' + coordinates[1] + ', ' + coordinates[0] + ')';
17668
+ }
17669
+ buildArrayType() {
17670
+ for (const labelType of Object.values(LabelType)) {
17671
+ if (labelType !== LabelType.Custom && labelType !== LabelType.Predefined) {
17672
+ this.arrayBuiltInType.push({
17673
+ value: labelType,
17674
+ checked: this.selectOptions(labelType) ||
17675
+ this.labelFlag === labelType ||
17676
+ (this.polygonCheck === 2 && labelType !== LabelType.Coordinates)
17677
+ });
17678
+ }
17679
+ }
17680
+ }
17681
+ noLabelButton() {
17682
+ if (this.labelFlag === LabelType.Predefined || (this.labelFlag === LabelType.Custom && this.labelLength === 0)) {
17683
+ return this.languageService.translate.instant('igo.geo.draw.noLabel');
17684
+ }
17685
+ return 'OK';
17686
+ }
17687
+ get customOrPredefined() {
17688
+ if (this.labelFlag === LabelType.Custom) {
17689
+ return LabelType.Custom;
17690
+ }
17691
+ return LabelType.Predefined;
17692
+ }
17693
+ optionAvailable(currentOption) {
17694
+ switch (this.olGeometryType) {
17695
+ case GeometryType.Point:
17696
+ if (currentOption === LabelType.Coordinates) {
17697
+ return false;
17698
+ }
17699
+ return true;
17700
+ case GeometryType.LineString:
17701
+ if (currentOption === LabelType.Length) {
17702
+ return false;
17703
+ }
17704
+ return true;
17705
+ case GeometryType.Polygon:
17706
+ if (currentOption === LabelType.Coordinates) {
17707
+ return true;
17708
+ }
17709
+ return false;
17710
+ default:
17711
+ return false;
17712
+ }
17713
+ }
17714
+ get allLengthUnits() {
17715
+ return Object.values(MeasureLengthUnit);
17716
+ }
17717
+ getLengthUnitEnum(lengthUnit) {
17718
+ return MeasureLengthUnitAbbreviation[lengthUnit];
17719
+ }
17720
+ get allAreaUnits() {
17721
+ return Object.values(MeasureAreaUnit);
17722
+ }
17723
+ get allCoordinatesUnits() {
17724
+ return Object.values(CoordinatesUnit);
17725
+ }
17726
+ getAreaUnitEnum(areaUnit) {
17727
+ return MeasureAreaUnitAbbreviation[areaUnit];
17728
+ }
17729
+ getRadius(olGeometry) {
17730
+ const length = getLength(olGeometry);
17731
+ return Number(length / (2 * Math.PI));
17732
+ }
17733
+ get lengthLabelT() {
17734
+ if (this.olGeometryType === GeometryType.Polygon) {
17735
+ return this.languageService.translate.instant('igo.geo.measure.perimeter');
17736
+ }
17737
+ if (this.olGeometryType === GeometryType.Circle) {
17738
+ return this.languageService.translate.instant('igo.geo.search.coordinates.radius');
17739
+ }
17740
+ return this.languageService.translate.instant('igo.geo.draw.labelType.Length');
17741
+ }
17742
+ getLabelLength(event) {
17743
+ this.labelLength = event.length;
17744
+ }
17745
+ selectOptions(option) {
17746
+ if (this.olGeometryType === GeometryType.Point) {
17747
+ return option === LabelType.Coordinates;
17748
+ }
17749
+ else if (this.olGeometryType === GeometryType.LineString) {
17750
+ return option === LabelType.Length;
17751
+ }
17752
+ }
17753
+ getProperLengthLabel(option) {
17754
+ if (option === LabelType.Length) {
17755
+ if (this.olGeometryType === GeometryType.Polygon) {
17756
+ return this.languageService.translate.instant('igo.geo.measure.perimeter');
17757
+ }
17758
+ if (this.olGeometryType === GeometryType.Circle) {
17759
+ return this.languageService.translate.instant('igo.geo.search.coordinates.radius');
17760
+ }
17761
+ return this.languageService.translate.instant('igo.geo.draw.labelType.Length');
17762
+ }
17763
+ return this.languageService.translate.instant('igo.geo.draw.labelType.' + option);
17188
17764
  }
17189
17765
  }
17190
- DrawPopupComponent.ɵfac = function DrawPopupComponent_Factory(t) { return new (t || DrawPopupComponent)(i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
17191
- DrawPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawPopupComponent, selectors: [["igo-draw-popup-component"]], inputs: { confirmFlag: "confirmFlag" }, decls: 14, vars: 10, consts: [["mat-dialog-content", ""], [1, "mat-typography"], [1, "example-full-width"], ["matInput", "", 3, "placeholder", "value"], ["input", ""], ["mat-dialog-actions", ""], ["mat-raised-button", "", 3, "click"], ["mat-raised-button", "", "color", "primary", 3, "click"]], template: function DrawPopupComponent_Template(rf, ctx) { if (rf & 1) {
17192
- const _r1 = i0.ɵɵgetCurrentView();
17193
- i0.ɵɵelementStart(0, "div", 0)(1, "p", 1);
17766
+ DrawPopupComponent.ɵfac = function DrawPopupComponent_Factory(t) { return new (t || DrawPopupComponent)(i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i1.MatDialogRef), i0.ɵɵdirectiveInject(MAT_DIALOG_DATA)); };
17767
+ DrawPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawPopupComponent, selectors: [["igo-draw-popup-component"]], inputs: { confirmFlag: "confirmFlag", labelFlag: "labelFlag", coordinatesMeasureUnit: "coordinatesMeasureUnit", lengthMeasureUnit: "lengthMeasureUnit", areaMeasureUnit: "areaMeasureUnit" }, decls: 14, vars: 14, consts: [["mat-dialog-title", ""], [1, "geometry-type-toggle", "mat-typography"], [3, "value", "change"], [3, "value"], [4, "ngIf"], [1, "mat-typography"], ["class", "mat-typography", 4, "ngIf"], ["mat-dialog-actions", ""], ["mat-raised-button", "", 3, "click"], ["mat-raised-button", "", "color", "primary", 3, "click"], [3, "value", "disabled", "checked", "change", 4, "ngFor", "ngForOf"], [3, "value", "disabled", "checked", "change"], ["class", "mat-typography", 3, "value", "disabled", "checked", "change", 4, "ngFor", "ngForOf"], [1, "mat-typography", 3, "value", "disabled", "checked", "change"], [1, "readOnly-Input"], ["matInput", "", "placeholder", "(Latitude, Longitude)", "readonly", "", 3, "value"], ["input", ""], [1, "unit-field"], [3, "value", "selectionChange"], [3, "value", 4, "ngFor", "ngForOf"], ["matInput", "", "readonly", "", 3, "placeholder", "value"], [1, "input"], ["matInput", "", "cdkFocusInitial", "", 3, "placeholder", "value", "select", "input"]], template: function DrawPopupComponent_Template(rf, ctx) { if (rf & 1) {
17768
+ i0.ɵɵelementStart(0, "div")(1, "h2", 0);
17194
17769
  i0.ɵɵtext(2);
17195
17770
  i0.ɵɵpipe(3, "translate");
17196
- i0.ɵɵelementEnd();
17197
- i0.ɵɵelementStart(4, "mat-form-field", 2);
17198
- i0.ɵɵelement(5, "input", 3, 4);
17199
- i0.ɵɵpipe(7, "translate");
17200
17771
  i0.ɵɵelementEnd()();
17201
- i0.ɵɵelementStart(8, "div", 5)(9, "button", 6);
17202
- i0.ɵɵlistener("click", function DrawPopupComponent_Template_button_click_9_listener() { return ctx.cancelDrawing(); });
17772
+ i0.ɵɵelementStart(4, "div", 1)(5, "mat-button-toggle-group", 2);
17773
+ i0.ɵɵlistener("change", function DrawPopupComponent_Template_mat_button_toggle_group_change_5_listener($event) { return ctx.onLabelTypeChange($event.value); });
17774
+ i0.ɵɵelementStart(6, "mat-button-toggle", 3);
17775
+ i0.ɵɵtext(7);
17776
+ i0.ɵɵpipe(8, "translate");
17777
+ i0.ɵɵelementEnd();
17778
+ i0.ɵɵelementStart(9, "mat-button-toggle", 3);
17203
17779
  i0.ɵɵtext(10);
17204
17780
  i0.ɵɵpipe(11, "translate");
17205
- i0.ɵɵelementEnd();
17206
- i0.ɵɵelementStart(12, "button", 7);
17207
- i0.ɵɵlistener("click", function DrawPopupComponent_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r1); const _r0 = i0.ɵɵreference(6); return i0.ɵɵresetView(ctx.confirm(_r0.value)); });
17208
- i0.ɵɵtext(13, "OK ");
17209
- i0.ɵɵelementEnd()();
17781
+ i0.ɵɵelementEnd()()();
17782
+ i0.ɵɵtemplate(12, DrawPopupComponent_div_12_Template, 16, 12, "div", 4);
17783
+ i0.ɵɵtemplate(13, DrawPopupComponent_div_13_Template, 15, 11, "div", 4);
17210
17784
  } if (rf & 2) {
17211
17785
  i0.ɵɵadvance(2);
17212
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.draw.dialogInstruction"));
17786
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 8, "igo.geo.draw.popupTitle"), " ");
17213
17787
  i0.ɵɵadvance(3);
17214
- i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(7, 6, "igo.geo.draw.dialogTitle"));
17215
- i0.ɵɵpropertyInterpolate("value", ctx.data.currentLabel);
17216
- i0.ɵɵadvance(5);
17217
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(11, 8, "igo.geo.draw.cancel"), " ");
17218
- } }, dependencies: [i3.MatButton, i13.MatFormField, i14.MatInput, i1.MatDialogContent, i1.MatDialogActions, i7.TranslatePipe] });
17788
+ i0.ɵɵproperty("value", ctx.customOrPredefined);
17789
+ i0.ɵɵadvance(1);
17790
+ i0.ɵɵproperty("value", ctx.labelType.Custom);
17791
+ i0.ɵɵadvance(1);
17792
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 10, "igo.geo.draw.labelType.custom"), " ");
17793
+ i0.ɵɵadvance(2);
17794
+ i0.ɵɵproperty("value", ctx.labelType.Predefined);
17795
+ i0.ɵɵadvance(1);
17796
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 12, "igo.geo.draw.labelType.predefined"), " ");
17797
+ i0.ɵɵadvance(2);
17798
+ i0.ɵɵproperty("ngIf", ctx.labelFlag !== ctx.labelType.Custom);
17799
+ i0.ɵɵadvance(1);
17800
+ i0.ɵɵproperty("ngIf", ctx.labelFlag === ctx.labelType.Custom);
17801
+ } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i3.MatButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i13.MatFormField, i14.MatInput, i15.MatSelect, i9.MatOption, i1.MatDialogTitle, i1.MatDialogActions, i17.MatRadioGroup, i17.MatRadioButton, i12.MatCheckbox, i7.TranslatePipe], styles: [".mat-radio-button[_ngcontent-%COMP%] ~ .mat-radio-button[_ngcontent-%COMP%]{margin-left:16px}.readOnly-Input[_ngcontent-%COMP%]{width:200px!important}.unit-field[_ngcontent-%COMP%]{width:50px;margin-left:10px;margin-top:10px}.mat-form-field[_ngcontent-%COMP%]{position:-webkit-sticky!important;position:sticky!important}.coordinatesInputView[_ngcontent-%COMP%]{top:5em!important} .mat-form-field-wrapper{margin-bottom:-1.25em;margin-top:.25em}.geometry-type-toggle[_ngcontent-%COMP%], .mat-dialog-actions[_ngcontent-%COMP%]{display:flex!important;justify-content:center}.input[_ngcontent-%COMP%]{width:auto!important}.mat-button-toggle-group[_ngcontent-%COMP%], .mat-button-toggle[_ngcontent-%COMP%]{width:100%}mat-checkbox[_ngcontent-%COMP%]{margin-right:10px}"] });
17219
17802
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawPopupComponent, [{
17220
17803
  type: Component,
17221
- args: [{ selector: 'igo-draw-popup-component', template: "<div mat-dialog-content>\n <p class=\"mat-typography\">{{ 'igo.geo.draw.dialogInstruction' | translate }}</p>\n <mat-form-field class=\"example-full-width\">\n <input\n #input\n matInput\n placeholder=\"{{'igo.geo.draw.dialogTitle' | translate}}\"\n value=\"{{data.currentLabel}}\"/>\n </mat-form-field>\n</div>\n<div mat-dialog-actions>\n <button \n mat-raised-button \n (click)=\"cancelDrawing()\">{{'igo.geo.draw.cancel' | translate}}\n </button>\n <button \n mat-raised-button \n color=\"primary\" \n (click)=\"confirm(input.value)\">OK\n </button>\n</div>\n" }]
17222
- }], function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
17804
+ args: [{ selector: 'igo-draw-popup-component', template: "<div>\r\n <h2 mat-dialog-title>\r\n {{ 'igo.geo.draw.popupTitle' | translate }}\r\n </h2>\r\n</div>\r\n\r\n\r\n<div class=\"geometry-type-toggle mat-typography\">\r\n <mat-button-toggle-group\r\n (change)=\"onLabelTypeChange($event.value)\" [value]=\"customOrPredefined\">\r\n <mat-button-toggle [value]=\"labelType.Custom\" >\r\n {{ 'igo.geo.draw.labelType.custom' | translate }}\r\n </mat-button-toggle>\r\n <mat-button-toggle [value]=\"labelType.Predefined\">\r\n {{ 'igo.geo.draw.labelType.predefined' | translate }}\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n</div>\r\n\r\n<div *ngIf=\"labelFlag !== labelType.Custom\">\r\n <div>\r\n <p class=\"mat-typography\">{{ 'igo.geo.draw.builtInInstructions' | translate }}</p>\r\n <mat-radio-group *ngIf=\"olGeometryType !== 'Polygon'\" class=\"mat-typography\">\r\n <mat-radio-button *ngFor=\"let option of arrayBuiltInType\" [value]=\"option.value\" [disabled]=\"optionAvailable(option.value)\" \r\n (change)=\"onLabelTypeChange($event.value)\" [checked]=\"option.checked\">\r\n {{getProperLengthLabel(option.value)}}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n <ng-container class=\"mat-typography\" *ngIf=\"olGeometryType === 'Polygon'\">\r\n <mat-checkbox\r\n *ngFor=\"let option of arrayBuiltInType\"\r\n class=\"mat-typography\"\r\n [value]=\"option.value\"\r\n [disabled]=\"optionAvailable(option.value)\"\r\n (change)=\"onLabelTypeChange($event.source.value, $event.checked)\"\r\n [checked]=\"option.checked\">\r\n {{getProperLengthLabel(option.value)}}\r\n </mat-checkbox>\r\n </ng-container>\r\n <div *ngIf=\"labelFlag === labelType.Coordinates\">\r\n <mat-form-field class=\"readOnly-Input\">\r\n <input\r\n #input\r\n matInput\r\n placeholder=\"(Latitude, Longitude)\"\r\n value=\"{{currentCoordinates}}\" readonly>\r\n </mat-form-field>\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select [value]=\"coordinatesMeasureUnit\" (selectionChange)=\"onChangeCoordinateUnit($event.value)\">\r\n <mat-option *ngFor=\"let unit of allCoordinatesUnits\" [value]=\"unit\">\r\n {{unit}}\r\n </mat-option>\r\n </mat-select> \r\n </mat-form-field>\r\n </div>\r\n <div *ngIf=\"labelFlag === labelType.Length || polygonCheck === 2\">\r\n <mat-form-field class=\"readOnly-Input\">\r\n <input\r\n #input\r\n matInput\r\n placeholder={{lengthLabelT}}\r\n value=\"{{currentLength}}\" readonly>\r\n </mat-form-field>\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select [value]=\"lengthMeasureUnit\" (selectionChange)=\"onChangeLengthUnit($event.value)\">\r\n <mat-option *ngFor=\"let unit of allLengthUnits\" [value]=\"unit\">\r\n {{getLengthUnitEnum(unit)}}\r\n </mat-option>\r\n </mat-select> \r\n </mat-form-field>\r\n </div>\r\n <div *ngIf=\"labelFlag === labelType.Area || polygonCheck === 2\">\r\n <mat-form-field class=\"readOnly-Input\">\r\n <input\r\n #input\r\n matInput\r\n placeholder=\"{{ 'igo.geo.draw.labelType.Area' | translate }}\"\r\n value=\"{{currentArea}}\" readonly>\r\n </mat-form-field>\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select [value]=\"areaMeasureUnit\" (selectionChange)=\"onChangeAreaUnit($event.value)\">\r\n <mat-option *ngFor=\"let unit of allAreaUnits\" [value]=\"unit\">\r\n {{getAreaUnitEnum(unit)}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n\r\n <div mat-dialog-actions>\r\n <button mat-raised-button (click)=\"cancelDrawing()\" >\r\n {{'igo.geo.draw.cancel' | translate}}\r\n </button>\r\n <button \r\n mat-raised-button \r\n color=\"primary\" \r\n (click)=\"confirm()\"> \r\n {{noLabelButton()}} \r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"labelFlag === labelType.Custom\">\r\n <div>\r\n <p class=\"mat-typography\">{{ 'igo.geo.draw.dialogInstruction' | translate }}</p>\r\n <mat-form-field class=\"input\">\r\n <input\r\n #input\r\n matInput\r\n (select)=\"true\"\r\n (input)=\"getLabelLength($event.target.value)\"\r\n placeholder=\"{{'igo.geo.draw.dialogTitle' | translate}}\"\r\n value=\"{{ currentLabel }}\"\r\n cdkFocusInitial/>\r\n </mat-form-field>\r\n </div>\r\n \r\n <div mat-dialog-actions>\r\n <button mat-raised-button (click)=\"cancelDrawing()\" >\r\n {{'igo.geo.draw.cancel' | translate}}\r\n </button>\r\n <button \r\n mat-raised-button \r\n color=\"primary\" \r\n (click)=\"confirm(input.value)\">\r\n {{noLabelButton()}}\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".mat-radio-button~.mat-radio-button{margin-left:16px}.readOnly-Input{width:200px!important}.unit-field{width:50px;margin-left:10px;margin-top:10px}.mat-form-field{position:-webkit-sticky!important;position:sticky!important}.coordinatesInputView{top:5em!important}::ng-deep .mat-form-field-wrapper{margin-bottom:-1.25em;margin-top:.25em}.geometry-type-toggle,.mat-dialog-actions{display:flex!important;justify-content:center}.input{width:auto!important}.mat-button-toggle-group,.mat-button-toggle{width:100%}mat-checkbox{margin-right:10px}\n"] }]
17805
+ }], function () { return [{ type: i2$1.LanguageService }, { type: i1.MatDialogRef }, { type: undefined, decorators: [{
17223
17806
  type: Inject,
17224
17807
  args: [MAT_DIALOG_DATA]
17225
17808
  }] }]; }, { confirmFlag: [{
17226
17809
  type: Input
17810
+ }], labelFlag: [{
17811
+ type: Input
17812
+ }], coordinatesMeasureUnit: [{
17813
+ type: Input
17814
+ }], lengthMeasureUnit: [{
17815
+ type: Input
17816
+ }], areaMeasureUnit: [{
17817
+ type: Input
17227
17818
  }] }); })();
17228
17819
 
17229
17820
  class DrawShorcutsComponent {
@@ -17265,7 +17856,7 @@ DrawShorcutsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawS
17265
17856
  } }, dependencies: [i3.MatButton, i2.MatIcon, i1.MatDialogClose, i1.MatDialogContent, i1.MatDialogActions, i7.TranslatePipe], styles: [".shortcut[_ngcontent-%COMP%]{display:flex;align-items:center}.shortcut-icon[_ngcontent-%COMP%]{margin-right:10px}.shortcuts-close[_ngcontent-%COMP%]{display:flex;justify-content:center}"] });
17266
17857
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawShorcutsComponent, [{
17267
17858
  type: Component,
17268
- args: [{ selector: 'igo-draw-shorcuts', template: "<mat-dialog-content>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\" svgIcon=\"keyboard-return\"></mat-icon>{{'igo.geo.draw.finish' | translate}}</span>\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\" svgIcon=\"backspace-outline\"></mat-icon>{{'igo.geo.draw.undo' | translate}}</span>\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\" svgIcon=\"keyboard-esc\"></mat-icon>{{'igo.geo.draw.abort' | translate}}</span>\n </div>\n <div>\n <span class=\"shortcut mat-typography\">\n <mat-icon class=\"shortcut-icon\" svgIcon=\"keyboard-space\"></mat-icon>{{'igo.geo.draw.move' | translate}}</span>\n </div>\n</mat-dialog-content>\n<mat-dialog-actions class=\"shortcuts-close\">\n <button mat-raised-button mat-dialog-close color=\"primary\">OK</button>\n</mat-dialog-actions>", styles: [".shortcut{display:flex;align-items:center}.shortcut-icon{margin-right:10px}.shortcuts-close{display:flex;justify-content:center}\n"] }]
17859
+ args: [{ selector: 'igo-draw-shorcuts', template: "<mat-dialog-content>\r\n <div>\r\n <span class=\"shortcut mat-typography\">\r\n <mat-icon class=\"shortcut-icon\" svgIcon=\"keyboard-return\"></mat-icon>{{'igo.geo.draw.finish' | translate}}</span>\r\n </div>\r\n <div>\r\n <span class=\"shortcut mat-typography\">\r\n <mat-icon class=\"shortcut-icon\" svgIcon=\"backspace-outline\"></mat-icon>{{'igo.geo.draw.undo' | translate}}</span>\r\n </div>\r\n <div>\r\n <span class=\"shortcut mat-typography\">\r\n <mat-icon class=\"shortcut-icon\" svgIcon=\"keyboard-esc\"></mat-icon>{{'igo.geo.draw.abort' | translate}}</span>\r\n </div>\r\n <div>\r\n <span class=\"shortcut mat-typography\">\r\n <mat-icon class=\"shortcut-icon\" svgIcon=\"keyboard-space\"></mat-icon>{{'igo.geo.draw.move' | translate}}</span>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions class=\"shortcuts-close\">\r\n <button mat-raised-button mat-dialog-close color=\"primary\">OK</button>\r\n</mat-dialog-actions>", styles: [".shortcut{display:flex;align-items:center}.shortcut-icon{margin-right:10px}.shortcuts-close{display:flex;justify-content:center}\n"] }]
17269
17860
  }], null, null); })();
17270
17861
 
17271
17862
  class DrawLayerPopupComponent {
@@ -17311,113 +17902,157 @@ DrawLayerPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Dra
17311
17902
  } }, dependencies: [i3.MatButton, i13.MatFormField, i14.MatInput, i1.MatDialogContent, i1.MatDialogActions, i7.TranslatePipe] });
17312
17903
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DrawLayerPopupComponent, [{
17313
17904
  type: Component,
17314
- args: [{ selector: 'igo-draw-popup-component', template: "<div mat-dialog-content>\n <p class=\"mat-typography\">\n {{ 'igo.geo.draw.layer.layerDialogInstruction' | translate }}\n </p>\n <mat-form-field class=\"example-full-width\">\n <input\n #input\n matInput\n placeholder=\"{{ 'igo.geo.draw.layer.title' | translate }}\"\n />\n </mat-form-field>\n</div>\n<div mat-dialog-actions>\n <button mat-raised-button (click)=\"cancelDrawing()\">\n {{ 'igo.geo.draw.cancel' | translate }}\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"confirm(input.value)\">\n OK\n </button>\n</div>\n" }]
17905
+ args: [{ selector: 'igo-draw-popup-component', template: "<div mat-dialog-content>\r\n <p class=\"mat-typography\">\r\n {{ 'igo.geo.draw.layer.layerDialogInstruction' | translate }}\r\n </p>\r\n <mat-form-field class=\"example-full-width\">\r\n <input\r\n #input\r\n matInput\r\n placeholder=\"{{ 'igo.geo.draw.layer.title' | translate }}\"\r\n />\r\n </mat-form-field>\r\n</div>\r\n<div mat-dialog-actions>\r\n <button mat-raised-button (click)=\"cancelDrawing()\">\r\n {{ 'igo.geo.draw.cancel' | translate }}\r\n </button>\r\n <button mat-raised-button color=\"primary\" (click)=\"confirm(input.value)\">\r\n OK\r\n </button>\r\n</div>\r\n" }]
17315
17906
  }], function () { return [{ type: i1.MatDialogRef }]; }, { confirmFlag: [{
17316
17907
  type: Input
17317
17908
  }] }); })();
17318
17909
 
17319
17910
  const _c0$c = ["selectedLayer"];
17320
- function DrawComponent_mat_option_30_Template(rf, ctx) { if (rf & 1) {
17911
+ function DrawComponent_mat_slide_toggle_22_Template(rf, ctx) { if (rf & 1) {
17912
+ const _r10 = i0.ɵɵgetCurrentView();
17913
+ i0.ɵɵelementStart(0, "mat-slide-toggle", 5);
17914
+ i0.ɵɵlistener("change", function DrawComponent_mat_slide_toggle_22_Template_mat_slide_toggle_change_0_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.onToggleFreehandMode($event)); });
17915
+ i0.ɵɵtext(1);
17916
+ i0.ɵɵpipe(2, "translate");
17917
+ i0.ɵɵelementEnd();
17918
+ } if (rf & 2) {
17919
+ const ctx_r0 = i0.ɵɵnextContext();
17920
+ i0.ɵɵproperty("checked", ctx_r0.freehandMode)("labelPosition", "before");
17921
+ i0.ɵɵadvance(1);
17922
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 3, "igo.geo.draw.freehandMode"), " ");
17923
+ } }
17924
+ function DrawComponent_div_23_mat_option_7_Template(rf, ctx) { if (rf & 1) {
17321
17925
  i0.ɵɵelementStart(0, "mat-option", 2);
17322
17926
  i0.ɵɵtext(1);
17927
+ i0.ɵɵpipe(2, "translate");
17323
17928
  i0.ɵɵelementEnd();
17324
17929
  } if (rf & 2) {
17325
- const layer_r7 = ctx.$implicit;
17326
- i0.ɵɵproperty("value", layer_r7);
17930
+ const measureUnit_r12 = ctx.$implicit;
17931
+ i0.ɵɵproperty("value", measureUnit_r12);
17327
17932
  i0.ɵɵadvance(1);
17328
- i0.ɵɵtextInterpolate1(" ", layer_r7.title, " ");
17933
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 2, "igo.geo.measure." + measureUnit_r12), " ");
17329
17934
  } }
17330
- function DrawComponent_button_34_Template(rf, ctx) { if (rf & 1) {
17331
- const _r9 = i0.ɵɵgetCurrentView();
17332
- i0.ɵɵelementStart(0, "button", 20);
17333
- i0.ɵɵlistener("click", function DrawComponent_button_34_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.activeDrawingLayer.visible = !ctx_r8.activeDrawingLayer.visible); });
17935
+ function DrawComponent_div_23_Template(rf, ctx) { if (rf & 1) {
17936
+ const _r14 = i0.ɵɵgetCurrentView();
17937
+ i0.ɵɵelementStart(0, "div", 22)(1, "form", 23)(2, "mat-form-field", 24);
17938
+ i0.ɵɵelement(3, "input", 25);
17939
+ i0.ɵɵpipe(4, "translate");
17940
+ i0.ɵɵelementEnd()();
17941
+ i0.ɵɵelementStart(5, "mat-form-field", 26)(6, "mat-select", 9);
17942
+ i0.ɵɵlistener("selectionChange", function DrawComponent_div_23_Template_mat_select_selectionChange_6_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r13 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r13.onMeasureUnitChange($event.value)); });
17943
+ i0.ɵɵtemplate(7, DrawComponent_div_23_mat_option_7_Template, 3, 4, "mat-option", 11);
17944
+ i0.ɵɵelementEnd()()();
17945
+ } if (rf & 2) {
17946
+ const ctx_r1 = i0.ɵɵnextContext();
17947
+ i0.ɵɵadvance(3);
17948
+ i0.ɵɵpropertyInterpolate("placeholder", i0.ɵɵpipeBind1(4, 5, "igo.geo.spatialFilter.radius"));
17949
+ i0.ɵɵproperty("formControl", ctx_r1.radiusFormControl)("readonly", ctx_r1.freehandMode);
17950
+ i0.ɵɵadvance(3);
17951
+ i0.ɵɵproperty("value", ctx_r1.measureUnit);
17952
+ i0.ɵɵadvance(1);
17953
+ i0.ɵɵproperty("ngForOf", ctx_r1.measureUnits);
17954
+ } }
17955
+ function DrawComponent_mat_option_32_Template(rf, ctx) { if (rf & 1) {
17956
+ i0.ɵɵelementStart(0, "mat-option", 2);
17957
+ i0.ɵɵtext(1);
17958
+ i0.ɵɵelementEnd();
17959
+ } if (rf & 2) {
17960
+ const layer_r15 = ctx.$implicit;
17961
+ i0.ɵɵproperty("value", layer_r15);
17962
+ i0.ɵɵadvance(1);
17963
+ i0.ɵɵtextInterpolate1(" ", layer_r15.title, " ");
17964
+ } }
17965
+ function DrawComponent_button_36_Template(rf, ctx) { if (rf & 1) {
17966
+ const _r17 = i0.ɵɵgetCurrentView();
17967
+ i0.ɵɵelementStart(0, "button", 27);
17968
+ i0.ɵɵlistener("click", function DrawComponent_button_36_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r16 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r16.activeDrawingLayer.visible = !ctx_r16.activeDrawingLayer.visible); });
17334
17969
  i0.ɵɵpipe(1, "translate");
17335
17970
  i0.ɵɵpipe(2, "translate");
17336
- i0.ɵɵelement(3, "mat-icon", 21);
17971
+ i0.ɵɵelement(3, "mat-icon", 28);
17337
17972
  i0.ɵɵelementEnd();
17338
17973
  } if (rf & 2) {
17339
- const ctx_r2 = i0.ɵɵnextContext();
17340
- i0.ɵɵproperty("color", ctx_r2.activeDrawingLayer.visible ? "primary" : "default")("matTooltip", ctx_r2.activeDrawingLayer.visible ? i0.ɵɵpipeBind1(1, 3, "igo.geo.layer.hideLayer") : i0.ɵɵpipeBind1(2, 5, "igo.geo.layer.showLayer"));
17974
+ const ctx_r4 = i0.ɵɵnextContext();
17975
+ i0.ɵɵproperty("color", ctx_r4.activeDrawingLayer.visible ? "primary" : "default")("matTooltip", ctx_r4.activeDrawingLayer.visible ? i0.ɵɵpipeBind1(1, 3, "igo.geo.layer.hideLayer") : i0.ɵɵpipeBind1(2, 5, "igo.geo.layer.showLayer"));
17341
17976
  i0.ɵɵadvance(3);
17342
- i0.ɵɵproperty("svgIcon", ctx_r2.activeDrawingLayer.visible ? "eye" : "eye-off");
17977
+ i0.ɵɵproperty("svgIcon", ctx_r4.activeDrawingLayer.visible ? "eye" : "eye-off");
17343
17978
  } }
17344
- function DrawComponent_button_37_Template(rf, ctx) { if (rf & 1) {
17345
- const _r11 = i0.ɵɵgetCurrentView();
17346
- i0.ɵɵelementStart(0, "button", 22);
17347
- i0.ɵɵlistener("click", function DrawComponent_button_37_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.deleteDrawings()); });
17979
+ function DrawComponent_button_39_Template(rf, ctx) { if (rf & 1) {
17980
+ const _r19 = i0.ɵɵgetCurrentView();
17981
+ i0.ɵɵelementStart(0, "button", 29);
17982
+ i0.ɵɵlistener("click", function DrawComponent_button_39_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r18.deleteDrawings()); });
17348
17983
  i0.ɵɵpipe(1, "translate");
17349
17984
  i0.ɵɵpipe(2, "async");
17350
- i0.ɵɵelement(3, "mat-icon", 23);
17985
+ i0.ɵɵelement(3, "mat-icon", 30);
17351
17986
  i0.ɵɵelementEnd();
17352
17987
  } if (rf & 2) {
17353
- const ctx_r3 = i0.ɵɵnextContext();
17354
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 2, "igo.geo.draw.delete"))("disabled", i0.ɵɵpipeBind1(2, 4, ctx_r3.selectedFeatures$).length === 0);
17988
+ const ctx_r5 = i0.ɵɵnextContext();
17989
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 2, "igo.geo.draw.delete"))("disabled", i0.ɵɵpipeBind1(2, 4, ctx_r5.selectedFeatures$).length === 0);
17355
17990
  } }
17356
- function DrawComponent_mat_form_field_42_div_6_Template(rf, ctx) { if (rf & 1) {
17357
- i0.ɵɵelementStart(0, "div", 27);
17358
- i0.ɵɵelement(1, "img", 28);
17991
+ function DrawComponent_mat_form_field_44_div_6_Template(rf, ctx) { if (rf & 1) {
17992
+ i0.ɵɵelementStart(0, "div", 34);
17993
+ i0.ɵɵelement(1, "img", 35);
17359
17994
  i0.ɵɵelementEnd();
17360
17995
  } if (rf & 2) {
17361
- const ctx_r12 = i0.ɵɵnextContext(2);
17996
+ const ctx_r20 = i0.ɵɵnextContext(2);
17362
17997
  i0.ɵɵadvance(1);
17363
- i0.ɵɵpropertyInterpolate("src", ctx_r12.icon, i0.ɵɵsanitizeUrl);
17998
+ i0.ɵɵpropertyInterpolate("src", ctx_r20.icon, i0.ɵɵsanitizeUrl);
17364
17999
  } }
17365
- function DrawComponent_mat_form_field_42_mat_option_10_Template(rf, ctx) { if (rf & 1) {
17366
- const _r16 = i0.ɵɵgetCurrentView();
17367
- i0.ɵɵelementStart(0, "mat-option", 29);
17368
- i0.ɵɵlistener("click", function DrawComponent_mat_form_field_42_mat_option_10_Template_mat_option_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r16); const icon_html_r14 = restoredCtx.$implicit; const ctx_r15 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r15.onIconChange(icon_html_r14)); });
17369
- i0.ɵɵelementStart(1, "div", 27);
17370
- i0.ɵɵelement(2, "img", 28);
18000
+ function DrawComponent_mat_form_field_44_mat_option_10_Template(rf, ctx) { if (rf & 1) {
18001
+ const _r24 = i0.ɵɵgetCurrentView();
18002
+ i0.ɵɵelementStart(0, "mat-option", 36);
18003
+ i0.ɵɵlistener("click", function DrawComponent_mat_form_field_44_mat_option_10_Template_mat_option_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r24); const icon_html_r22 = restoredCtx.$implicit; const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.onIconChange(icon_html_r22)); });
18004
+ i0.ɵɵelementStart(1, "div", 34);
18005
+ i0.ɵɵelement(2, "img", 35);
17371
18006
  i0.ɵɵelementEnd()();
17372
18007
  } if (rf & 2) {
17373
- const icon_html_r14 = ctx.$implicit;
17374
- i0.ɵɵproperty("value", icon_html_r14);
18008
+ const icon_html_r22 = ctx.$implicit;
18009
+ i0.ɵɵproperty("value", icon_html_r22);
17375
18010
  i0.ɵɵadvance(2);
17376
- i0.ɵɵpropertyInterpolate("src", icon_html_r14, i0.ɵɵsanitizeUrl);
18011
+ i0.ɵɵpropertyInterpolate("src", icon_html_r22, i0.ɵɵsanitizeUrl);
17377
18012
  } }
17378
- function DrawComponent_mat_form_field_42_Template(rf, ctx) { if (rf & 1) {
17379
- const _r18 = i0.ɵɵgetCurrentView();
18013
+ function DrawComponent_mat_form_field_44_Template(rf, ctx) { if (rf & 1) {
18014
+ const _r26 = i0.ɵɵgetCurrentView();
17380
18015
  i0.ɵɵelementStart(0, "mat-form-field")(1, "mat-label");
17381
18016
  i0.ɵɵtext(2);
17382
18017
  i0.ɵɵpipe(3, "translate");
17383
18018
  i0.ɵɵelementEnd();
17384
18019
  i0.ɵɵelementStart(4, "mat-select")(5, "mat-select-trigger");
17385
- i0.ɵɵtemplate(6, DrawComponent_mat_form_field_42_div_6_Template, 2, 1, "div", 24);
18020
+ i0.ɵɵtemplate(6, DrawComponent_mat_form_field_44_div_6_Template, 2, 1, "div", 31);
17386
18021
  i0.ɵɵelementEnd();
17387
- i0.ɵɵelementStart(7, "mat-option", 25);
17388
- i0.ɵɵlistener("click", function DrawComponent_mat_form_field_42_Template_mat_option_click_7_listener() { i0.ɵɵrestoreView(_r18); const ctx_r17 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r17.onIconChange()); });
18022
+ i0.ɵɵelementStart(7, "mat-option", 32);
18023
+ i0.ɵɵlistener("click", function DrawComponent_mat_form_field_44_Template_mat_option_click_7_listener() { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r25.onIconChange()); });
17389
18024
  i0.ɵɵtext(8);
17390
18025
  i0.ɵɵpipe(9, "translate");
17391
18026
  i0.ɵɵelementEnd();
17392
- i0.ɵɵtemplate(10, DrawComponent_mat_form_field_42_mat_option_10_Template, 3, 2, "mat-option", 26);
18027
+ i0.ɵɵtemplate(10, DrawComponent_mat_form_field_44_mat_option_10_Template, 3, 2, "mat-option", 33);
17393
18028
  i0.ɵɵelementEnd()();
17394
18029
  } if (rf & 2) {
17395
- const ctx_r5 = i0.ɵɵnextContext();
18030
+ const ctx_r7 = i0.ɵɵnextContext();
17396
18031
  i0.ɵɵadvance(2);
17397
18032
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 4, "igo.geo.draw.icon"));
17398
18033
  i0.ɵɵadvance(4);
17399
- i0.ɵɵproperty("ngIf", ctx_r5.icon);
18034
+ i0.ɵɵproperty("ngIf", ctx_r7.icon);
17400
18035
  i0.ɵɵadvance(2);
17401
18036
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(9, 6, "igo.geo.draw.noIcon"));
17402
18037
  i0.ɵɵadvance(2);
17403
- i0.ɵɵproperty("ngForOf", ctx_r5.icons);
18038
+ i0.ɵɵproperty("ngForOf", ctx_r7.icons);
17404
18039
  } }
17405
- function DrawComponent_button_46_Template(rf, ctx) { if (rf & 1) {
17406
- const _r20 = i0.ɵɵgetCurrentView();
17407
- i0.ɵɵelementStart(0, "button", 30);
17408
- i0.ɵɵlistener("click", function DrawComponent_button_46_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r19.openStyleModalDialog()); });
18040
+ function DrawComponent_button_48_Template(rf, ctx) { if (rf & 1) {
18041
+ const _r28 = i0.ɵɵgetCurrentView();
18042
+ i0.ɵɵelementStart(0, "button", 37);
18043
+ i0.ɵɵlistener("click", function DrawComponent_button_48_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r28); const ctx_r27 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r27.openStyleModalDialog()); });
17409
18044
  i0.ɵɵpipe(1, "translate");
17410
18045
  i0.ɵɵtext(2);
17411
18046
  i0.ɵɵpipe(3, "translate");
17412
- i0.ɵɵelement(4, "mat-icon", 31);
18047
+ i0.ɵɵelement(4, "mat-icon", 38);
17413
18048
  i0.ɵɵelementEnd();
17414
18049
  } if (rf & 2) {
17415
- const ctx_r6 = i0.ɵɵnextContext();
18050
+ const ctx_r8 = i0.ɵɵnextContext();
17416
18051
  i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(1, 3, "igo.geo.layer.style.styleModalTooltip"));
17417
18052
  i0.ɵɵadvance(2);
17418
18053
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 5, "igo.geo.layer.style.styleModal"), " ");
17419
18054
  i0.ɵɵadvance(2);
17420
- i0.ɵɵproperty("matBadge", ctx_r6.selectedFeatures$.value.length);
18055
+ i0.ɵɵproperty("matBadge", ctx_r8.selectedFeatures$.value.length);
17421
18056
  } }
17422
18057
  class DrawComponent {
17423
18058
  constructor(languageService, formBuilder, drawStyleService, dialog, drawIconService) {
@@ -17441,10 +18076,24 @@ class DrawComponent {
17441
18076
  {
17442
18077
  name: 'Drawing',
17443
18078
  title: this.languageService.translate.instant('igo.geo.draw.labels'),
17444
- tooltip: this.languageService.translate.instant('igo.geo.draw.changeLabel'),
17445
18079
  valueAccessor: (feature) => {
17446
18080
  return feature.properties.draw;
17447
18081
  }
18082
+ },
18083
+ {
18084
+ name: 'Edition',
18085
+ title: '',
18086
+ sort: false,
18087
+ valueAccessor: (feature) => {
18088
+ return [{
18089
+ editMode: false,
18090
+ icon: 'pencil',
18091
+ color: 'primary',
18092
+ click: () => { this.editLabelDrawing(feature); },
18093
+ style: 'mat-icon-button'
18094
+ }];
18095
+ },
18096
+ renderer: EntityTableColumnRenderer.ButtonGroup,
17448
18097
  }
17449
18098
  ]
17450
18099
  };
@@ -17460,8 +18109,14 @@ class DrawComponent {
17460
18109
  this.selectedFeatures$ = new BehaviorSubject([]);
17461
18110
  this.drawControlIsDisabled = true;
17462
18111
  this.drawControlIsActive = false;
18112
+ this.freehandMode = false;
17463
18113
  this.subscriptions$$ = [];
17464
18114
  this.position = 'bottom';
18115
+ this.radiusFormControl = new UntypedFormControl(1000);
18116
+ this.measureUnit = MeasureLengthUnit.Meters;
18117
+ this.radiusFormControlChange$$ = new Subscription();
18118
+ this.predefinedRadius$ = new BehaviorSubject(undefined);
18119
+ this.radiusDrawEnd$ = new BehaviorSubject(undefined);
17465
18120
  this.isCreatingNewLayer = false;
17466
18121
  this.currGeometryType = this.geometryType.Point;
17467
18122
  this.buildForm();
@@ -17492,6 +18147,13 @@ class DrawComponent {
17492
18147
  set activeDrawingLayer(value) {
17493
18148
  this._activeDrawingLayer = value;
17494
18149
  }
18150
+ /**
18151
+ * Available measure units for the measure type given
18152
+ * @internal
18153
+ */
18154
+ get measureUnits() {
18155
+ return [MeasureLengthUnit.Meters, MeasureLengthUnit.Kilometers];
18156
+ }
17495
18157
  // Initialize the store that will contain the entities and create the Draw control
17496
18158
  ngOnInit() {
17497
18159
  if (!this.stores.length) {
@@ -17544,6 +18206,11 @@ class DrawComponent {
17544
18206
  });
17545
18207
  this.onLayerChange(this.activeDrawingLayer);
17546
18208
  }
18209
+ this.radiusFormControlChange$$ = this.radiusFormControl.valueChanges.subscribe(value => {
18210
+ if (this.activeDrawControl.ispredefinedRadius$.getValue()) {
18211
+ this.changeRadius(value);
18212
+ }
18213
+ });
17547
18214
  }
17548
18215
  /**
17549
18216
  * Remove the drawing layer and the interactions
@@ -17554,6 +18221,7 @@ class DrawComponent {
17554
18221
  this.activeStore.state.updateAll({ selected: false });
17555
18222
  this.deactivateDrawControl();
17556
18223
  this.subscriptions$$.map((s) => s.unsubscribe());
18224
+ this.radiusFormControlChange$$.unsubscribe();
17557
18225
  }
17558
18226
  /**
17559
18227
  * Create a Draw Control
@@ -17627,30 +18295,21 @@ class DrawComponent {
17627
18295
  // open the dialog box used to enter label
17628
18296
  const dialogRef = this.dialog.open(DrawPopupComponent, {
17629
18297
  disableClose: false,
17630
- data: { currentLabel: olGeometry.get('draw') }
18298
+ data: { olGeometry: olGeometry, map: this.map }
17631
18299
  });
17632
18300
  // when dialog box is closed, get label and set it to geometry
17633
- dialogRef.afterClosed().subscribe((label) => {
18301
+ dialogRef.afterClosed().subscribe((result) => {
17634
18302
  // checks if the user clicked ok
17635
18303
  if (dialogRef.componentInstance.confirmFlag) {
17636
- this.updateLabelOfOlGeometry(olGeometry, label);
17637
- if (!olGeometry.values_.fontStyle) {
17638
- this.updateFontSizeAndStyle(olGeometry, '20', FontType.Arial);
17639
- }
17640
- if (!olGeometry.values_.drawingStyle) {
18304
+ this.updateLabelOfOlGeometry(olGeometry, result.label);
18305
+ this.updateLabelType(olGeometry, dialogRef.componentInstance.labelFlag);
18306
+ this.updateMeasureUnit(olGeometry, result.measureUnit);
18307
+ if (!(olGeometry instanceof OlFeature)) {
18308
+ this.updateFontSizeAndStyle(olGeometry, '15', FontType.Arial);
17641
18309
  this.updateFillAndStrokeColor(olGeometry, 'rgba(255,255,255,0.4)', 'rgba(143,7,7,1)');
18310
+ this.updateOffset(olGeometry, 0, (olGeometry instanceof OlPoint) ? -15 : 0);
17642
18311
  }
17643
- if (!(olGeometry.values_.offsetX || olGeometry.values_.offsetY)) {
17644
- this.updateOffset(olGeometry, 0, olGeometry instanceof OlPoint ? -15 : 0);
17645
- }
17646
- // if event was fired at draw end
17647
- if (isDrawEnd) {
17648
- this.onDrawEnd(olGeometry);
17649
- // if event was fired at select
17650
- }
17651
- else {
17652
- this.onSelectDraw(olGeometry, label);
17653
- }
18312
+ isDrawEnd ? this.onDrawEnd(olGeometry) : this.onSelectDraw(olGeometry, result.label, [dialogRef.componentInstance.labelFlag, result.measureUnit]);
17654
18313
  this.updateHeightTable();
17655
18314
  }
17656
18315
  // deletes the feature
@@ -17682,7 +18341,55 @@ class DrawComponent {
17682
18341
  const entityId = entity.properties.id;
17683
18342
  const olGeometryId = olGeometry.ol_uid;
17684
18343
  if (entityId === olGeometryId) {
17685
- this.updateLabelOfOlGeometry(olGeometry, entity.properties.draw);
18344
+ if (entity.properties.labelType === LabelType.Coordinates) {
18345
+ let longLat = DDtoDMS([entity.properties.longitude, entity.properties.latitude], entity.properties.measureUnit);
18346
+ this.updateLabelOfOlGeometry(olGeometry, '(' + longLat[1] + ', ' + longLat[0] + ')');
18347
+ }
18348
+ else if (entity.properties.labelType === LabelType.Length) {
18349
+ if (olGeometry instanceof OlCircle) {
18350
+ let circularPolygon = fromCircle(olGeometry, 10000);
18351
+ const radius = metersToUnit(this.getRadius(circularPolygon), entity.properties.measureUnit);
18352
+ const unit = MeasureLengthUnitAbbreviation[entity.properties.measureUnit];
18353
+ const radiusLabel = 'R: ' + radius.toFixed(2).toString() + ' ' + unit;
18354
+ this.updateLabelOfOlGeometry(olGeometry, radiusLabel);
18355
+ }
18356
+ else {
18357
+ let olGeometryLength = measureOlGeometryLength(olGeometry, this.map.ol.getView().getProjection().getCode());
18358
+ let measureUnit;
18359
+ const temp = entity.properties.measureUnit;
18360
+ measureUnit = MeasureLengthUnitAbbreviation[entity.properties.measureUnit];
18361
+ olGeometryLength = metersToUnit(olGeometryLength, temp);
18362
+ let lengthLabel = olGeometry instanceof OlPolygon ?
18363
+ 'P: ' + olGeometryLength.toFixed(2).toString() + ' ' + measureUnit
18364
+ : olGeometryLength.toFixed(2).toString() + ' ' + measureUnit;
18365
+ this.updateLabelOfOlGeometry(olGeometry, lengthLabel);
18366
+ }
18367
+ }
18368
+ else if (entity.properties.labelType === LabelType.Area) {
18369
+ if (olGeometry instanceof OlCircle) {
18370
+ let circularPolygon = fromCircle(olGeometry, 10000);
18371
+ let circleArea = measureOlGeometryArea(circularPolygon, this.map.ol.getView().getProjection().getCode());
18372
+ const unit = MeasureAreaUnitAbbreviation[entity.properties.measureUnit];
18373
+ const temp = entity.properties.measureUnit;
18374
+ circleArea = squareMetersToUnit(circleArea, temp);
18375
+ const areaLabel = circleArea.toFixed(2).toString() + ' ' + unit;
18376
+ this.updateLabelOfOlGeometry(olGeometry, areaLabel);
18377
+ }
18378
+ else {
18379
+ let olGeometryArea = measureOlGeometryArea(olGeometry, this.map.ol.getView().getProjection().getCode());
18380
+ let measureUnit;
18381
+ const temp = entity.properties.measureUnit;
18382
+ measureUnit = MeasureAreaUnitAbbreviation[entity.properties.measureUnit];
18383
+ olGeometryArea = squareMetersToUnit(olGeometryArea, temp);
18384
+ const lengthLabel = olGeometryArea.toFixed(2).toString() + ' ' + measureUnit;
18385
+ this.updateLabelOfOlGeometry(olGeometry, lengthLabel);
18386
+ }
18387
+ }
18388
+ else {
18389
+ this.updateLabelOfOlGeometry(olGeometry, entity.properties.draw);
18390
+ }
18391
+ this.updateLabelType(olGeometry, entity.properties.labelType);
18392
+ this.updateMeasureUnit(olGeometry, entity.properties.measureUnit);
17686
18393
  this.updateFontSizeAndStyle(olGeometry, entity.properties.fontStyle.split(' ')[0].replace('px', ''), entity.properties.fontStyle.substring(entity.properties.fontStyle.indexOf(' ') + 1));
17687
18394
  this.updateFillAndStrokeColor(olGeometry, entity.properties.drawingStyle.fill, entity.properties.drawingStyle.stroke);
17688
18395
  this.updateOffset(olGeometry, entity.properties.offsetX, entity.properties.offsetY);
@@ -17690,7 +18397,7 @@ class DrawComponent {
17690
18397
  }
17691
18398
  });
17692
18399
  }
17693
- onSelectDraw(olFeature, label) {
18400
+ onSelectDraw(olFeature, label, labelTypeAndUnit) {
17694
18401
  const entities = this.activeStore.all();
17695
18402
  const olGeometry = olFeature.getGeometry();
17696
18403
  olGeometry.ol_uid = olFeature.get('id');
@@ -17716,6 +18423,8 @@ class DrawComponent {
17716
18423
  this.updateFontSizeAndStyle(olGeometry, fontSize, fontStyle);
17717
18424
  this.updateFillAndStrokeColor(olGeometry, fillColor, strokeColor);
17718
18425
  this.updateOffset(olGeometry, offsetX, offsetY);
18426
+ this.updateLabelType(olGeometry, labelTypeAndUnit[0]);
18427
+ this.updateMeasureUnit(olGeometry, labelTypeAndUnit[1]);
17719
18428
  this.replaceFeatureInStore(entity, olGeometry, rad);
17720
18429
  }
17721
18430
  });
@@ -17755,8 +18464,12 @@ class DrawComponent {
17755
18464
  lon4326 = center4326[0];
17756
18465
  lat4326 = center4326[1];
17757
18466
  rad = getDistance(center4326, extent4326);
18467
+ this.radiusFormControl.setValue(Math.round(rad));
17758
18468
  }
17759
18469
  }
18470
+ if (this.activeDrawControl.radiusDrawEnd$.getValue()) {
18471
+ rad = this.activeDrawControl.radiusDrawEnd$.getValue();
18472
+ }
17760
18473
  if (olGeometry instanceof OlPoint) {
17761
18474
  point4326 = transform(olGeometry.getFlatCoordinates(), projection, 'EPSG:4326');
17762
18475
  lon4326 = point4326[0];
@@ -17778,12 +18491,16 @@ class DrawComponent {
17778
18491
  stroke: olGeometry.get('strokeColor_')
17779
18492
  },
17780
18493
  offsetX: olGeometry.get('offsetX_'),
17781
- offsetY: olGeometry.get('offsetY_')
18494
+ offsetY: olGeometry.get('offsetY_'),
18495
+ labelType: olGeometry.get('labelType_'),
18496
+ measureUnit: olGeometry.get('measureUnit_')
17782
18497
  },
17783
18498
  meta: {
17784
18499
  id: featureId
17785
18500
  }
17786
18501
  });
18502
+ this.activeDrawControl.predefinedRadius$.next(undefined);
18503
+ this.activeDrawControl.radiusDrawEnd$.next(undefined);
17787
18504
  }
17788
18505
  buildForm() {
17789
18506
  this.form = this.formBuilder.group({
@@ -17828,11 +18545,9 @@ class DrawComponent {
17828
18545
  /**
17829
18546
  * Called when the user double-clicks the selected drawing
17830
18547
  */
17831
- editLabelDrawing() {
17832
- if (this.selectedFeatures$.value.length) {
17833
- const olGeometry = featureToOl(this.selectedFeatures$.value[0], this.map.ol.getView().getProjection().getCode());
17834
- this.openDrawDialog(olGeometry, false);
17835
- }
18548
+ editLabelDrawing(feature) {
18549
+ const olGeometryFeature = featureToOl(feature, this.map.ol.getView().getProjection().getCode());
18550
+ this.openDrawDialog(olGeometryFeature, false);
17836
18551
  }
17837
18552
  openShorcutsDialog() {
17838
18553
  this.dialog.open(DrawShorcutsComponent);
@@ -17869,6 +18584,19 @@ class DrawComponent {
17869
18584
  onToggleDrawControl(toggleIsChecked) {
17870
18585
  toggleIsChecked ? this.toggleDrawControl() : this.deactivateDrawControl();
17871
18586
  }
18587
+ onToggleFreehandMode(event) {
18588
+ if (this.isCircle() && !event.checked) {
18589
+ this.activeDrawControl.ispredefinedRadius$.next(true);
18590
+ this.changeRadius(this.radiusFormControl.value);
18591
+ }
18592
+ else {
18593
+ this.activeDrawControl.setOlInteractionStyle(createInteractionStyle(this.fillColor, this.strokeColor, this.strokeWidth));
18594
+ this.activeDrawControl.ispredefinedRadius$.next(false);
18595
+ }
18596
+ this.freehandMode = event.checked;
18597
+ this.activeDrawControl.freehand$.next(event.checked);
18598
+ this.toggleDrawControl();
18599
+ }
17872
18600
  // User changes properties of a drawing element
17873
18601
  /**
17874
18602
  * Display the current layer with the current store and the current layerSource
@@ -18019,16 +18747,19 @@ class DrawComponent {
18019
18747
  onGeometryTypeChange(geometryType) {
18020
18748
  this.currGeometryType = geometryType;
18021
18749
  this.activeDrawControl.setGeometryType(geometryType);
18750
+ this.freehandMode ?
18751
+ this.onToggleFreehandMode({ checked: true }) :
18752
+ this.onToggleFreehandMode({ checked: false });
18022
18753
  this.toggleDrawControl();
18023
18754
  }
18024
18755
  // Updates the properties of olFeature inputted
18025
18756
  /**
18026
18757
  * Update the label of a geometry when a label is entered in a dialog box
18027
- * @param olGeometry the geometry
18758
+ * @param OlFeature the feature
18028
18759
  * @param label the label
18029
18760
  */
18030
- updateLabelOfOlGeometry(olGeometry, label) {
18031
- olGeometry.setProperties({
18761
+ updateLabelOfOlGeometry(OlFeature, label) {
18762
+ OlFeature.setProperties({
18032
18763
  _label: label
18033
18764
  }, true);
18034
18765
  }
@@ -18049,13 +18780,23 @@ class DrawComponent {
18049
18780
  offsetY_: offsetY
18050
18781
  }, true);
18051
18782
  }
18783
+ updateLabelType(olFeature, typeOfLabel) {
18784
+ olFeature.setProperties({
18785
+ labelType_: typeOfLabel
18786
+ }, true);
18787
+ }
18788
+ updateMeasureUnit(olFeature, measureUnit) {
18789
+ olFeature.setProperties({
18790
+ measureUnit_: measureUnit
18791
+ }, true);
18792
+ }
18052
18793
  // Updates values of the selected element on the HTML view
18053
18794
  getFeatureFontSize() {
18054
18795
  return this.selectedFeatures$.value.length > 0
18055
18796
  ? this.selectedFeatures$.value[0].properties.fontStyle
18056
18797
  .split(' ')[0]
18057
18798
  .replace('px', '')
18058
- : '20';
18799
+ : '15';
18059
18800
  }
18060
18801
  getFeatureFontStyle() {
18061
18802
  return this.selectedFeatures$.value.length > 0
@@ -18159,6 +18900,66 @@ class DrawComponent {
18159
18900
  }
18160
18901
  this.activeDrawControl.setOlMap(this.map.ol, true);
18161
18902
  }
18903
+ /**
18904
+ * get the geometry of design
18905
+ *
18906
+ */
18907
+ isPoint() {
18908
+ return this.activeDrawControl.getGeometryType() === this.geometryType.Point;
18909
+ }
18910
+ isLineString() {
18911
+ return this.activeDrawControl.getGeometryType() === this.geometryType.LineString;
18912
+ }
18913
+ isPolygon() {
18914
+ return this.activeDrawControl.getGeometryType() === this.geometryType.Polygon;
18915
+ }
18916
+ isCircle() {
18917
+ return this.activeDrawControl.getGeometryType() === this.geometryType.Circle;
18918
+ }
18919
+ /**
18920
+ * The fonction to predefine the radius of the user
18921
+ *
18922
+ */
18923
+ changeRadius(radius) {
18924
+ let radiusMeters;
18925
+ if (radius) {
18926
+ this.measureUnit === MeasureLengthUnit.Meters ? radiusMeters = radius :
18927
+ radiusMeters = radius * 1000;
18928
+ }
18929
+ else {
18930
+ radiusMeters = undefined;
18931
+ }
18932
+ const pointStyle = (feature, resolution) => {
18933
+ const geom = feature.getGeometry();
18934
+ const coordinates = olproj.transform(geom.getCoordinates(), this.map.projection, 'EPSG:4326');
18935
+ const radius = radiusMeters / (Math.cos((Math.PI / 180) * coordinates[1])) / resolution;
18936
+ this.activeDrawControl.predefinedRadius$.next(radiusMeters);
18937
+ return new olstyle.Style({
18938
+ image: new olstyle.Circle({
18939
+ radius: radius,
18940
+ stroke: new olstyle.Stroke({
18941
+ width: 1,
18942
+ color: 'rgba(143,7,7,1)'
18943
+ }),
18944
+ fill: new olstyle.Fill({
18945
+ color: 'rgba(255,255,255,0.4)'
18946
+ })
18947
+ })
18948
+ });
18949
+ };
18950
+ this.activeDrawControl.setOlInteractionStyle(pointStyle);
18951
+ this.toggleDrawControl();
18952
+ }
18953
+ onMeasureUnitChange(selectedMeasureUnit) {
18954
+ if (selectedMeasureUnit === this.measureUnit) {
18955
+ return;
18956
+ }
18957
+ else {
18958
+ this.measureUnit = selectedMeasureUnit;
18959
+ this.measureUnit === MeasureLengthUnit.Meters ? this.radiusFormControl.setValue(this.radiusFormControl.value * 1000) :
18960
+ this.radiusFormControl.setValue(this.radiusFormControl.value / 1000);
18961
+ }
18962
+ }
18162
18963
  /**
18163
18964
  * Recreates the style of the feature stored
18164
18965
  */
@@ -18174,6 +18975,10 @@ class DrawComponent {
18174
18975
  });
18175
18976
  }
18176
18977
  }
18978
+ getRadius(olGeometry) {
18979
+ const length = getLength(olGeometry);
18980
+ return Number(length / (2 * Math.PI));
18981
+ }
18177
18982
  }
18178
18983
  DrawComponent.ɵfac = function DrawComponent_Factory(t) { return new (t || DrawComponent)(i0.ɵɵdirectiveInject(i2$1.LanguageService), i0.ɵɵdirectiveInject(i2$2.UntypedFormBuilder), i0.ɵɵdirectiveInject(DrawStyleService), i0.ɵɵdirectiveInject(i1.MatDialog), i0.ɵɵdirectiveInject(DrawIconService)); };
18179
18984
  DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent, selectors: [["igo-draw"]], viewQuery: function DrawComponent_Query(rf, ctx) { if (rf & 1) {
@@ -18181,8 +18986,8 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18181
18986
  } if (rf & 2) {
18182
18987
  let _t;
18183
18988
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.select = _t.first);
18184
- } }, inputs: { map: "map", stores: "stores", drawControls: "drawControls", activeDrawingLayer: "activeDrawingLayer" }, outputs: { activeLayerChange: "activeLayerChange", drawControlsEvent: "drawControlsEvent", layersIDEvent: "layersIDEvent", fillColor: "fillColor", strokeColor: "strokeColor", strokeWidth: "strokeWidth", fontSize: "fontSize", fontStyle: "fontStyle" }, decls: 47, vars: 45, consts: [[1, "geometry-type-toggle", "mat-typography"], [3, "value", "change"], [3, "value"], [1, "draw-options", "mat-typography"], [3, "disabled", "checked", "labelPosition", "change"], [3, "checked", "labelPosition", "change"], ["appearance", "outline", 1, "layer-select"], [3, "value", "selectionChange"], ["selectedLayer", ""], [3, "value", 4, "ngFor", "ngForOf"], ["id", "createNewLayer"], ["mat-icon-button", "", "collapsibleButton", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "color", "matTooltip", "click", 4, "ngIf"], ["class", "deleteBtn", "mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "disabled", "click", 4, "ngIf"], [1, "table-compact", 3, "store", "template", "dblclick"], ["table", ""], [1, "icon-options"], [4, "ngIf"], ["mat-icon-button", "", "color", "accent", "disableRipple", "true", 3, "click"], ["svgIcon", "keyboard-outline", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "shortcuts-icon", 3, "matTooltip"], ["mat-raised-button", "", "color", "primary", 3, "matTooltip", "click", 4, "ngIf"], ["mat-icon-button", "", "collapsibleButton", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "color", "matTooltip", "click"], [3, "svgIcon"], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "deleteBtn", 3, "matTooltip", "disabled", "click"], ["svgIcon", "delete"], ["class", "box", 4, "ngIf"], ["value", "", 3, "click"], [3, "value", "click", 4, "ngFor", "ngForOf"], [1, "box"], [3, "src"], [3, "value", "click"], ["mat-raised-button", "", "color", "primary", 3, "matTooltip", "click"], ["svgIcon", "palette", "matBadgeColor", "warn", "matBadgeSize", "medium", 1, "style-icon", 3, "matBadge"]], template: function DrawComponent_Template(rf, ctx) { if (rf & 1) {
18185
- const _r21 = i0.ɵɵgetCurrentView();
18989
+ } }, inputs: { map: "map", stores: "stores", drawControls: "drawControls", activeDrawingLayer: "activeDrawingLayer" }, outputs: { activeLayerChange: "activeLayerChange", drawControlsEvent: "drawControlsEvent", layersIDEvent: "layersIDEvent", fillColor: "fillColor", strokeColor: "strokeColor", strokeWidth: "strokeWidth", fontSize: "fontSize", fontStyle: "fontStyle" }, decls: 49, vars: 47, consts: [[1, "geometry-type-toggle", "mat-typography"], [3, "value", "change"], [3, "value"], [1, "draw-options", "mat-typography"], [3, "disabled", "checked", "labelPosition", "change"], [3, "checked", "labelPosition", "change"], [3, "checked", "labelPosition", "change", 4, "ngIf"], ["class", "radius-unit", 4, "ngIf"], ["appearance", "outline", 1, "layer-select"], [3, "value", "selectionChange"], ["selectedLayer", ""], [3, "value", 4, "ngFor", "ngForOf"], ["id", "createNewLayer"], ["mat-icon-button", "", "collapsibleButton", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "color", "matTooltip", "click", 4, "ngIf"], ["class", "deleteBtn", "mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "matTooltip", "disabled", "click", 4, "ngIf"], [1, "table-compact", 3, "store", "template"], ["table", ""], [1, "icon-options"], [4, "ngIf"], ["mat-icon-button", "", "color", "accent", "disableRipple", "true", 3, "click"], ["svgIcon", "keyboard-outline", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "shortcuts-icon", 3, "matTooltip"], ["mat-raised-button", "", "color", "primary", 3, "matTooltip", "click", 4, "ngIf"], [1, "radius-unit"], [1, "radius-form"], [1, "radius"], ["matInput", "", "type", "number", "min", "0", 3, "placeholder", "formControl", "readonly"], [1, "unit-field"], ["mat-icon-button", "", "collapsibleButton", "", "tooltip-position", "below", "matTooltipShowDelay", "500", 3, "color", "matTooltip", "click"], [3, "svgIcon"], ["mat-icon-button", "", "color", "warn", "tooltip-position", "below", "matTooltipShowDelay", "500", 1, "deleteBtn", 3, "matTooltip", "disabled", "click"], ["svgIcon", "delete"], ["class", "box", 4, "ngIf"], ["value", "", 3, "click"], [3, "value", "click", 4, "ngFor", "ngForOf"], [1, "box"], [3, "src"], [3, "value", "click"], ["mat-raised-button", "", "color", "primary", 3, "matTooltip", "click"], ["svgIcon", "palette", "matBadgeColor", "warn", "matBadgeSize", "medium", 1, "style-icon", 3, "matBadge"]], template: function DrawComponent_Template(rf, ctx) { if (rf & 1) {
18990
+ const _r29 = i0.ɵɵgetCurrentView();
18186
18991
  i0.ɵɵelementStart(0, "div")(1, "div", 0)(2, "mat-button-toggle-group", 1);
18187
18992
  i0.ɵɵlistener("change", function DrawComponent_Template_mat_button_toggle_group_change_2_listener($event) { return ctx.onGeometryTypeChange($event.value); });
18188
18993
  i0.ɵɵelementStart(3, "mat-button-toggle", 2);
@@ -18210,36 +19015,39 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18210
19015
  i0.ɵɵlistener("change", function DrawComponent_Template_mat_slide_toggle_change_19_listener() { return ctx.onToggleLabels(); });
18211
19016
  i0.ɵɵtext(20);
18212
19017
  i0.ɵɵpipe(21, "translate");
18213
- i0.ɵɵelementEnd()();
18214
- i0.ɵɵelement(22, "mat-divider");
18215
- i0.ɵɵelementStart(23, "div")(24, "mat-form-field", 6)(25, "mat-label");
18216
- i0.ɵɵtext(26);
18217
- i0.ɵɵpipe(27, "translate");
18218
19018
  i0.ɵɵelementEnd();
18219
- i0.ɵɵelementStart(28, "mat-select", 7, 8);
18220
- i0.ɵɵlistener("selectionChange", function DrawComponent_Template_mat_select_selectionChange_28_listener() { i0.ɵɵrestoreView(_r21); const _r0 = i0.ɵɵreference(29); return i0.ɵɵresetView(ctx.onLayerChange(_r0.value)); });
18221
- i0.ɵɵtemplate(30, DrawComponent_mat_option_30_Template, 2, 2, "mat-option", 9);
18222
- i0.ɵɵelementStart(31, "mat-option", 10);
18223
- i0.ɵɵtext(32);
18224
- i0.ɵɵpipe(33, "translate");
18225
- i0.ɵɵelementEnd()()();
18226
- i0.ɵɵtemplate(34, DrawComponent_button_34_Template, 4, 7, "button", 11);
19019
+ i0.ɵɵtemplate(22, DrawComponent_mat_slide_toggle_22_Template, 3, 5, "mat-slide-toggle", 6);
19020
+ i0.ɵɵtemplate(23, DrawComponent_div_23_Template, 8, 7, "div", 7);
18227
19021
  i0.ɵɵelementEnd();
18228
- i0.ɵɵelement(35, "mat-divider");
18229
- i0.ɵɵelementStart(36, "div");
18230
- i0.ɵɵtemplate(37, DrawComponent_button_37_Template, 4, 6, "button", 12);
18231
- i0.ɵɵelementStart(38, "div")(39, "igo-entity-table", 13, 14);
18232
- i0.ɵɵlistener("dblclick", function DrawComponent_Template_igo_entity_table_dblclick_39_listener() { return ctx.editLabelDrawing(); });
19022
+ i0.ɵɵelement(24, "mat-divider");
19023
+ i0.ɵɵelementStart(25, "div")(26, "mat-form-field", 8)(27, "mat-label");
19024
+ i0.ɵɵtext(28);
19025
+ i0.ɵɵpipe(29, "translate");
19026
+ i0.ɵɵelementEnd();
19027
+ i0.ɵɵelementStart(30, "mat-select", 9, 10);
19028
+ i0.ɵɵlistener("selectionChange", function DrawComponent_Template_mat_select_selectionChange_30_listener() { i0.ɵɵrestoreView(_r29); const _r2 = i0.ɵɵreference(31); return i0.ɵɵresetView(ctx.onLayerChange(_r2.value)); });
19029
+ i0.ɵɵtemplate(32, DrawComponent_mat_option_32_Template, 2, 2, "mat-option", 11);
19030
+ i0.ɵɵelementStart(33, "mat-option", 12);
19031
+ i0.ɵɵtext(34);
19032
+ i0.ɵɵpipe(35, "translate");
18233
19033
  i0.ɵɵelementEnd()()();
18234
- i0.ɵɵelementStart(41, "div", 15);
18235
- i0.ɵɵtemplate(42, DrawComponent_mat_form_field_42_Template, 11, 8, "mat-form-field", 16);
19034
+ i0.ɵɵtemplate(36, DrawComponent_button_36_Template, 4, 7, "button", 13);
18236
19035
  i0.ɵɵelementEnd();
18237
- i0.ɵɵelementStart(43, "button", 17);
18238
- i0.ɵɵlistener("click", function DrawComponent_Template_button_click_43_listener() { return ctx.openShorcutsDialog(); });
18239
- i0.ɵɵelement(44, "mat-icon", 18);
18240
- i0.ɵɵpipe(45, "translate");
19036
+ i0.ɵɵelement(37, "mat-divider");
19037
+ i0.ɵɵelementStart(38, "div");
19038
+ i0.ɵɵtemplate(39, DrawComponent_button_39_Template, 4, 6, "button", 14);
19039
+ i0.ɵɵelementStart(40, "div");
19040
+ i0.ɵɵelement(41, "igo-entity-table", 15, 16);
19041
+ i0.ɵɵelementEnd()();
19042
+ i0.ɵɵelementStart(43, "div", 17);
19043
+ i0.ɵɵtemplate(44, DrawComponent_mat_form_field_44_Template, 11, 8, "mat-form-field", 18);
19044
+ i0.ɵɵelementEnd();
19045
+ i0.ɵɵelementStart(45, "button", 19);
19046
+ i0.ɵɵlistener("click", function DrawComponent_Template_button_click_45_listener() { return ctx.openShorcutsDialog(); });
19047
+ i0.ɵɵelement(46, "mat-icon", 20);
19048
+ i0.ɵɵpipe(47, "translate");
18241
19049
  i0.ɵɵelementEnd();
18242
- i0.ɵɵtemplate(46, DrawComponent_button_46_Template, 5, 7, "button", 19);
19050
+ i0.ɵɵtemplate(48, DrawComponent_button_48_Template, 5, 7, "button", 21);
18243
19051
  i0.ɵɵelementEnd();
18244
19052
  } if (rf & 2) {
18245
19053
  i0.ɵɵadvance(2);
@@ -18247,35 +19055,39 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18247
19055
  i0.ɵɵadvance(1);
18248
19056
  i0.ɵɵproperty("value", ctx.geometryType.Point);
18249
19057
  i0.ɵɵadvance(1);
18250
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 27, "igo.geo.draw." + ctx.geometryType.Point), " ");
19058
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 29, "igo.geo.draw." + ctx.geometryType.Point), " ");
18251
19059
  i0.ɵɵadvance(2);
18252
19060
  i0.ɵɵproperty("value", ctx.geometryType.LineString);
18253
19061
  i0.ɵɵadvance(1);
18254
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 29, "igo.geo.draw." + ctx.geometryType.LineString), " ");
19062
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 31, "igo.geo.draw." + ctx.geometryType.LineString), " ");
18255
19063
  i0.ɵɵadvance(2);
18256
19064
  i0.ɵɵproperty("value", ctx.geometryType.Polygon);
18257
19065
  i0.ɵɵadvance(1);
18258
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 31, "igo.geo.draw." + ctx.geometryType.Polygon), " ");
19066
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 33, "igo.geo.draw." + ctx.geometryType.Polygon), " ");
18259
19067
  i0.ɵɵadvance(2);
18260
19068
  i0.ɵɵproperty("value", ctx.geometryType.Circle);
18261
19069
  i0.ɵɵadvance(1);
18262
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(14, 33, "igo.geo.draw." + ctx.geometryType.Circle), " ");
19070
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(14, 35, "igo.geo.draw." + ctx.geometryType.Circle), " ");
18263
19071
  i0.ɵɵadvance(3);
18264
19072
  i0.ɵɵproperty("disabled", ctx.drawControlIsDisabled)("checked", ctx.drawControlIsActive)("labelPosition", "before");
18265
19073
  i0.ɵɵadvance(1);
18266
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(18, 35, "igo.geo.spatialFilter.drawControl"), " ");
19074
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(18, 37, "igo.geo.spatialFilter.drawControl"), " ");
18267
19075
  i0.ɵɵadvance(2);
18268
19076
  i0.ɵɵproperty("checked", ctx.labelsAreShown)("labelPosition", "before");
18269
19077
  i0.ɵɵadvance(1);
18270
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(21, 37, "igo.geo.draw.toggleMapTooltips"), " ");
18271
- i0.ɵɵadvance(6);
18272
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(27, 39, "igo.geo.draw.layer.title"));
19078
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(21, 39, "igo.geo.draw.toggleMapTooltips"), " ");
19079
+ i0.ɵɵadvance(2);
19080
+ i0.ɵɵproperty("ngIf", !ctx.isPoint());
19081
+ i0.ɵɵadvance(1);
19082
+ i0.ɵɵproperty("ngIf", ctx.isCircle());
19083
+ i0.ɵɵadvance(5);
19084
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(29, 41, "igo.geo.draw.layer.title"));
18273
19085
  i0.ɵɵadvance(2);
18274
19086
  i0.ɵɵproperty("value", ctx.updateActiveLayer());
18275
19087
  i0.ɵɵadvance(2);
18276
19088
  i0.ɵɵproperty("ngForOf", ctx.allLayers);
18277
19089
  i0.ɵɵadvance(2);
18278
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(33, 41, "igo.geo.draw.layer.createNewLayer"), " ");
19090
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(35, 43, "igo.geo.draw.layer.createNewLayer"), " ");
18279
19091
  i0.ɵɵadvance(2);
18280
19092
  i0.ɵɵproperty("ngIf", ctx.activeDrawingLayer);
18281
19093
  i0.ɵɵadvance(3);
@@ -18285,10 +19097,10 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18285
19097
  i0.ɵɵadvance(3);
18286
19098
  i0.ɵɵproperty("ngIf", ctx.icons.length >= 1);
18287
19099
  i0.ɵɵadvance(2);
18288
- i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(45, 43, "igo.geo.draw.shortcuts"));
19100
+ i0.ɵɵproperty("matTooltip", i0.ɵɵpipeBind1(47, 45, "igo.geo.draw.shortcuts"));
18289
19101
  i0.ɵɵadvance(2);
18290
19102
  i0.ɵɵproperty("ngIf", ctx.selectedFeatures$.value.length);
18291
- } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i3.MatButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i11.MatDivider, i13.MatFormField, i13.MatLabel, i2.MatIcon, i7$1.MatBadge, i4.MatTooltip, i15.MatSelect, i15.MatSelectTrigger, i9.MatOption, i23.MatSlideToggle, i5$1.EntityTableComponent, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".geometry-type-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.geometry-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:100%}.geometry-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:25%}.draw-options[_ngcontent-%COMP%]{overflow-x:hidden}.draw-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.draw-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.icon-options[_ngcontent-%COMP%]{margin:5px 5px 0}.edition-drawing[_ngcontent-%COMP%]{padding:10px 0}img[_ngcontent-%COMP%]{width:100%;height:100%}.deleteBtn[_ngcontent-%COMP%]{margin-left:12px}.storeTable[_ngcontent-%COMP%]{height:auto!important}.layer-select[_ngcontent-%COMP%]{width:85%;padding:10px 10px 0%}.input-button-container[_ngcontent-%COMP%]{padding:10px}.input-button-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:25%}.input-button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{left:8px;bottom:10px}"], data: { animation: [
19103
+ } }, dependencies: [i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NumberValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.MinValidator, i2$2.NgForm, i2$2.FormControlDirective, i1$1.NgForOf, i1$1.NgIf, i3.MatButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i11.MatDivider, i13.MatFormField, i13.MatLabel, i2.MatIcon, i7$1.MatBadge, i4.MatTooltip, i14.MatInput, i15.MatSelect, i15.MatSelectTrigger, i9.MatOption, i23.MatSlideToggle, i5$1.EntityTableComponent, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".geometry-type-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.geometry-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:100%}.geometry-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:25%}.draw-options[_ngcontent-%COMP%]{overflow-x:hidden}.draw-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.draw-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.icon-options[_ngcontent-%COMP%]{margin:5px 5px 0}.edition-drawing[_ngcontent-%COMP%]{padding:10px 0}img[_ngcontent-%COMP%]{width:100%;height:100%}.deleteBtn[_ngcontent-%COMP%]{margin-left:12px}.storeTable[_ngcontent-%COMP%]{height:auto!important}.layer-select[_ngcontent-%COMP%]{width:85%;padding:10px 10px 0%}.input-button-container[_ngcontent-%COMP%]{padding:10px}.input-button-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:25%}.input-button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{left:8px;bottom:10px}.radius[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:110%}.unit-field[_ngcontent-%COMP%]{width:110px;margin-left:30px}.radius-unit[_ngcontent-%COMP%]{display:flex;width:100%;margin-left:2px;padding:5px} igo-entity-table td:last-child{text-align:right!important} igo-entity-table td:last-child button{margin:0%!important}"], data: { animation: [
18292
19104
  trigger('openClose', [
18293
19105
  state('open', style({
18294
19106
  opacity: 1
@@ -18313,7 +19125,7 @@ DrawComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DrawComponent
18313
19125
  transition('open => closed', [animate('600ms ease')]),
18314
19126
  transition('closed => open', [animate('800ms ease')])
18315
19127
  ])
18316
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\n <div class=\"geometry-type-toggle mat-typography\">\n <mat-button-toggle-group\n (change)=\"onGeometryTypeChange($event.value)\" [value]=\"geometryType.Point\">\n <mat-button-toggle [value]=\"geometryType.Point\">\n {{'igo.geo.draw.' + geometryType.Point | translate}}\n </mat-button-toggle>\n\n <mat-button-toggle [value]=\"geometryType.LineString\">\n {{'igo.geo.draw.' + geometryType.LineString | translate}}\n </mat-button-toggle>\n\n <mat-button-toggle [value]=\"geometryType.Polygon\">\n {{'igo.geo.draw.' + geometryType.Polygon | translate}}\n </mat-button-toggle>\n\n <mat-button-toggle [value]=\"geometryType.Circle\">\n {{'igo.geo.draw.' + geometryType.Circle | translate}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <div class=\"draw-options mat-typography\">\n <mat-slide-toggle\n [disabled]=\"drawControlIsDisabled\"\n [checked]=\"drawControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDrawControl($event.checked)\">\n {{'igo.geo.spatialFilter.drawControl' | translate}}\n </mat-slide-toggle>\n\n <mat-slide-toggle\n [checked]=\"labelsAreShown\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleLabels()\"\n >\n {{ 'igo.geo.draw.toggleMapTooltips' | translate }}\n </mat-slide-toggle>\n </div>\n\n <mat-divider></mat-divider>\n\n <div>\n <mat-form-field appearance=\"outline\" class=\"layer-select\">\n <mat-label>{{'igo.geo.draw.layer.title' | translate}}</mat-label>\n <mat-select #selectedLayer (selectionChange)=\"onLayerChange(selectedLayer.value)\" [value]=\"updateActiveLayer()\">\n <mat-option *ngFor=\"let layer of allLayers\" [value]=\"layer\">\n {{ layer.title }}\n </mat-option>\n <mat-option id=\"createNewLayer\" >\n {{'igo.geo.draw.layer.createNewLayer' | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <button\n *ngIf=\"activeDrawingLayer\"\n mat-icon-button\n [color]=\"activeDrawingLayer.visible ? 'primary' : 'default'\"\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"activeDrawingLayer.visible ?\n ('igo.geo.layer.hideLayer' | translate) :\n ('igo.geo.layer.showLayer' | translate)\"\n (click)=\"activeDrawingLayer.visible = !activeDrawingLayer.visible\">\n <mat-icon\n [svgIcon]=\"activeDrawingLayer.visible ? 'eye' : 'eye-off'\">\n </mat-icon>\n </button>\n </div>\n <mat-divider></mat-divider>\n <div>\n <button\n *ngIf=\"activeStore.count$.getValue() > 0\"\n class=\"deleteBtn\"\n mat-icon-button\n color=\"warn\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.draw.delete' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\n (click)=\"deleteDrawings()\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n\n <div>\n <igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"activeStore\"\n [template]=\"tableTemplate\"\n (dblclick)=\"editLabelDrawing()\">\n </igo-entity-table>\n </div>\n </div>\n\n <div class=\"icon-options\">\n <mat-form-field *ngIf=\"icons.length >= 1\">\n <mat-label>{{ 'igo.geo.draw.icon' | translate }}</mat-label>\n <mat-select>\n <mat-select-trigger>\n <div *ngIf=\"icon\" class=\"box\">\n <img src=\"{{ icon }}\">\n </div>\n </mat-select-trigger>\n <mat-option value=\"\" (click)=\"onIconChange()\">{{ 'igo.geo.draw.noIcon' | translate }}</mat-option>\n <mat-option\n *ngFor=\"let icon_html of icons\"\n [value]=\"icon_html\"\n (click)=\"onIconChange(icon_html)\">\n <div class=\"box\">\n <img src=\"{{ icon_html }}\">\n </div>\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <button\n mat-icon-button\n color=\"accent\"\n disableRipple=\"true\"\n (click)=\"openShorcutsDialog()\"\n >\n <mat-icon\n class=\"shortcuts-icon\"\n svgIcon=\"keyboard-outline\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.draw.shortcuts' | translate\"\n >\n </mat-icon>\n </button>\n\n <button\n *ngIf=\"selectedFeatures$.value.length\"\n mat-raised-button\n color=\"primary\"\n (click)=\"openStyleModalDialog()\"\n [matTooltip]=\"'igo.geo.layer.style.styleModalTooltip' | translate\">\n {{'igo.geo.layer.style.styleModal' | translate}}\n <mat-icon\n class=\"style-icon\"\n svgIcon=\"palette\"\n [matBadge]=\"selectedFeatures$.value.length\"\n matBadgeColor=\"warn\"\n matBadgeSize=\"medium\">\n </mat-icon>\n </button>\n</div>\n", styles: [".geometry-type-toggle{padding:10px;text-align:center}.geometry-type-toggle mat-button-toggle-group{width:100%}.geometry-type-toggle mat-button-toggle-group mat-button-toggle{width:25%}.draw-options{overflow-x:hidden}.draw-options mat-slide-toggle{width:100%;margin:10px}.draw-options mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.icon-options{margin:5px 5px 0}.edition-drawing{padding:10px 0}img{width:100%;height:100%}.deleteBtn{margin-left:12px}.storeTable{height:auto!important}.layer-select{width:85%;padding:10px 10px 0%}.input-button-container{padding:10px}.input-button-container mat-form-field{width:25%}.input-button-container button{left:8px;bottom:10px}\n"] }]
19128
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\r\n <div class=\"geometry-type-toggle mat-typography\">\r\n <mat-button-toggle-group\r\n (change)=\"onGeometryTypeChange($event.value)\" [value]=\"geometryType.Point\">\r\n <mat-button-toggle [value]=\"geometryType.Point\">\r\n {{'igo.geo.draw.' + geometryType.Point | translate}}\r\n </mat-button-toggle>\r\n\r\n <mat-button-toggle [value]=\"geometryType.LineString\">\r\n {{'igo.geo.draw.' + geometryType.LineString | translate}}\r\n </mat-button-toggle>\r\n\r\n <mat-button-toggle [value]=\"geometryType.Polygon\">\r\n {{'igo.geo.draw.' + geometryType.Polygon | translate}}\r\n </mat-button-toggle>\r\n\r\n <mat-button-toggle [value]=\"geometryType.Circle\">\r\n {{'igo.geo.draw.' + geometryType.Circle | translate}}\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n\r\n <div class=\"draw-options mat-typography\">\r\n <mat-slide-toggle\r\n [disabled]=\"drawControlIsDisabled\"\r\n [checked]=\"drawControlIsActive\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleDrawControl($event.checked)\">\r\n {{'igo.geo.spatialFilter.drawControl' | translate}}\r\n </mat-slide-toggle>\r\n\r\n <mat-slide-toggle\r\n [checked]=\"labelsAreShown\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleLabels()\">\r\n {{ 'igo.geo.draw.toggleMapTooltips' | translate }}\r\n </mat-slide-toggle>\r\n\r\n <mat-slide-toggle\r\n *ngIf=\"!isPoint()\"\r\n [checked]=\"freehandMode\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleFreehandMode($event)\">\r\n {{ 'igo.geo.draw.freehandMode' | translate }}\r\n </mat-slide-toggle>\r\n\r\n <div class=\"radius-unit\" *ngIf=\"isCircle()\">\r\n <form class=\"radius-form\">\r\n <mat-form-field class=\"radius\">\r\n <input\r\n matInput type=\"number\"\r\n min=\"0\"\r\n placeholder=\"{{ 'igo.geo.spatialFilter.radius' | translate }}\"\r\n [formControl]=\"radiusFormControl\"\r\n [readonly]=\"this.freehandMode\">\r\n </mat-form-field>\r\n </form>\r\n\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select\r\n [value]=\"measureUnit\"\r\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\r\n <mat-option\r\n *ngFor=\"let measureUnit of measureUnits\"\r\n [value]=\"measureUnit\">\r\n {{('igo.geo.measure.' + measureUnit) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n <div>\r\n <mat-form-field appearance=\"outline\" class=\"layer-select\">\r\n <mat-label>{{'igo.geo.draw.layer.title' | translate}}</mat-label>\r\n <mat-select #selectedLayer (selectionChange)=\"onLayerChange(selectedLayer.value)\" [value]=\"updateActiveLayer()\">\r\n <mat-option *ngFor=\"let layer of allLayers\" [value]=\"layer\">\r\n {{ layer.title }}\r\n </mat-option>\r\n <mat-option id=\"createNewLayer\" >\r\n {{'igo.geo.draw.layer.createNewLayer' | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <button\r\n *ngIf=\"activeDrawingLayer\"\r\n mat-icon-button\r\n [color]=\"activeDrawingLayer.visible ? 'primary' : 'default'\"\r\n collapsibleButton\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"activeDrawingLayer.visible ?\r\n ('igo.geo.layer.hideLayer' | translate) :\r\n ('igo.geo.layer.showLayer' | translate)\"\r\n (click)=\"activeDrawingLayer.visible = !activeDrawingLayer.visible\">\r\n <mat-icon\r\n [svgIcon]=\"activeDrawingLayer.visible ? 'eye' : 'eye-off'\">\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div>\r\n <button\r\n *ngIf=\"activeStore.count$.getValue() > 0\"\r\n class=\"deleteBtn\"\r\n mat-icon-button\r\n color=\"warn\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.draw.delete' | translate\"\r\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\r\n (click)=\"deleteDrawings()\"\r\n >\r\n <mat-icon svgIcon=\"delete\"></mat-icon>\r\n </button>\r\n\r\n <div>\r\n <igo-entity-table\r\n #table\r\n class=\"table-compact\"\r\n [store]=\"activeStore\"\r\n [template]=\"tableTemplate\">\r\n </igo-entity-table>\r\n </div>\r\n </div>\r\n\r\n <div class=\"icon-options\">\r\n <mat-form-field *ngIf=\"icons.length >= 1\">\r\n <mat-label>{{ 'igo.geo.draw.icon' | translate }}</mat-label>\r\n <mat-select>\r\n <mat-select-trigger>\r\n <div *ngIf=\"icon\" class=\"box\">\r\n <img src=\"{{ icon }}\">\r\n </div>\r\n </mat-select-trigger>\r\n <mat-option value=\"\" (click)=\"onIconChange()\">{{ 'igo.geo.draw.noIcon' | translate }}</mat-option>\r\n <mat-option\r\n *ngFor=\"let icon_html of icons\"\r\n [value]=\"icon_html\"\r\n (click)=\"onIconChange(icon_html)\">\r\n <div class=\"box\">\r\n <img src=\"{{ icon_html }}\">\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <button\r\n mat-icon-button\r\n color=\"accent\"\r\n disableRipple=\"true\"\r\n (click)=\"openShorcutsDialog()\"\r\n >\r\n <mat-icon\r\n class=\"shortcuts-icon\"\r\n svgIcon=\"keyboard-outline\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.draw.shortcuts' | translate\"\r\n >\r\n </mat-icon>\r\n </button>\r\n\r\n <button\r\n *ngIf=\"selectedFeatures$.value.length\"\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"openStyleModalDialog()\"\r\n [matTooltip]=\"'igo.geo.layer.style.styleModalTooltip' | translate\">\r\n {{'igo.geo.layer.style.styleModal' | translate}}\r\n <mat-icon\r\n class=\"style-icon\"\r\n svgIcon=\"palette\"\r\n [matBadge]=\"selectedFeatures$.value.length\"\r\n matBadgeColor=\"warn\"\r\n matBadgeSize=\"medium\">\r\n </mat-icon>\r\n </button>\r\n</div>\r\n", styles: [".geometry-type-toggle{padding:10px;text-align:center}.geometry-type-toggle mat-button-toggle-group{width:100%}.geometry-type-toggle mat-button-toggle-group mat-button-toggle{width:25%}.draw-options{overflow-x:hidden}.draw-options mat-slide-toggle{width:100%;margin:10px}.draw-options mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.icon-options{margin:5px 5px 0}.edition-drawing{padding:10px 0}img{width:100%;height:100%}.deleteBtn{margin-left:12px}.storeTable{height:auto!important}.layer-select{width:85%;padding:10px 10px 0%}.input-button-container{padding:10px}.input-button-container mat-form-field{width:25%}.input-button-container button{left:8px;bottom:10px}.radius{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}.radius-unit{display:flex;width:100%;margin-left:2px;padding:5px}::ng-deep igo-entity-table td:last-child{text-align:right!important}::ng-deep igo-entity-table td:last-child button{margin:0%!important}\n"] }]
18317
19129
  }], function () { return [{ type: i2$1.LanguageService }, { type: i2$2.UntypedFormBuilder }, { type: DrawStyleService }, { type: i1.MatDialog }, { type: DrawIconService }]; }, { map: [{
18318
19130
  type: Input
18319
19131
  }], stores: [{
@@ -18603,10 +19415,10 @@ StyleModalComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: StyleMo
18603
19415
  i0.ɵɵproperty("value", ctx.getFeatureOffsetY());
18604
19416
  i0.ɵɵadvance(4);
18605
19417
  i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(51, 44, "igo.geo.draw.cancel"), " ");
18606
- } }, dependencies: [i13.MatFormField, i13.MatLabel, i13.MatSuffix, i14.MatInput, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i1$1.NgForOf, i1$1.NgIf, i2.MatIcon, i3.MatButton, i15.MatSelect, i9.MatOption, i4.MatTooltip, i12.ColorPickerDirective, i7.TranslatePipe], styles: ["h2[_ngcontent-%COMP%]{font-weight:700;font-size:large}.igo-form[_ngcontent-%COMP%]{padding:10px}.fill-field[_ngcontent-%COMP%], .stroke-field[_ngcontent-%COMP%]{width:130px}.fill-color-picker[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}.fill-color-picker[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{left:8px}.stroke-color-picker[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}.stroke-color-picker[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{left:35px}.box[_ngcontent-%COMP%]{width:25px;height:25px}.edition-drawing[_ngcontent-%COMP%]{padding:10px 0}.igo-input-container[_ngcontent-%COMP%] .mat-form-field[_ngcontent-%COMP%] + .mat-form-field[_ngcontent-%COMP%]{margin-left:8px}.igo-form-input-box[_ngcontent-%COMP%]{width:150px}button[_ngcontent-%COMP%]{margin-right:5px}"] });
19418
+ } }, dependencies: [i13.MatFormField, i13.MatLabel, i13.MatSuffix, i14.MatInput, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i1$1.NgForOf, i1$1.NgIf, i2.MatIcon, i3.MatButton, i15.MatSelect, i9.MatOption, i4.MatTooltip, i12$1.ColorPickerDirective, i7.TranslatePipe], styles: ["h2[_ngcontent-%COMP%]{font-weight:700;font-size:large}.igo-form[_ngcontent-%COMP%]{padding:10px}.fill-field[_ngcontent-%COMP%], .stroke-field[_ngcontent-%COMP%]{width:130px}.fill-color-picker[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}.fill-color-picker[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{left:8px}.stroke-color-picker[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:7px}.stroke-color-picker[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{left:35px}.box[_ngcontent-%COMP%]{width:25px;height:25px}.edition-drawing[_ngcontent-%COMP%]{padding:10px 0}.igo-input-container[_ngcontent-%COMP%] .mat-form-field[_ngcontent-%COMP%] + .mat-form-field[_ngcontent-%COMP%]{margin-left:8px}.igo-form-input-box[_ngcontent-%COMP%]{width:150px}button[_ngcontent-%COMP%]{margin-right:5px}"] });
18607
19419
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StyleModalComponent, [{
18608
19420
  type: Component,
18609
- args: [{ selector: 'igo-style-modal-component', template: "<div mat-dialog-content>\n <h2 mat-dialog-title class=\"mat-typography\">{{ 'igo.geo.layer.style.styleModal' | translate }}</h2>\n <div\n class=\"edition-drawing mat-typography\"\n [hidden]=\"data.features.length === 0\">\n <form\n class=\"igo-form\"\n [formGroup]=\"form\">\n <div class=\"fill-color-picker mat-typography\" *ngIf=\"linestringOnly !== true\">\n <span>\n <mat-icon class=\"stroke-palette-icon\" svgIcon=\"square\"></mat-icon>\n {{ 'igo.geo.draw.fill' | translate }}\n </span>\n\n <mat-form-field\n class=\"fill-field\"\n appearance=\"outline\"\n floatLabel=\"always\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.draw.colorPicker' | translate\">\n <mat-label>{{ getFeatureFillColor() }}</mat-label>\n <input\n #fillColorInput\n formControlName=\"fill\"\n matInput\n type=\"text\"\n [style.background]=\"getFeatureFillColor()\"\n [readonly]=\"true\"\n [colorPicker]=\"getFeatureFillColor()\"\n [cpWidth]=\"'200px'\"\n [cpOutputFormat]=\"'rgba'\"\n [cpPosition]=\"'bottom'\"\n [cpPositionOffset]=\"'-75%'\"\n [cpCancelButton]=\"true\"\n [cpCancelButtonText]=\"'igo.geo.draw.cancel' | translate\"\n [cpOKButton]=\"true\"\n (colorPickerChange)=\"styleModalData.fillColor = $event\">\n </mat-form-field>\n </div>\n\n <div class=\"stroke-color-picker mat-typography\">\n <span>\n <mat-icon\n class=\"stroke-palette-icon\"\n svgIcon=\"square-outline\">\n </mat-icon>\n {{'igo.geo.draw.stroke' | translate}}\n </span>\n\n <mat-form-field\n class=\"stroke-field\"\n appearance=\"outline\"\n floatLabel=\"always\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.draw.colorPicker' | translate\">\n <mat-label>{{ getFeatureStrokeColor() }}</mat-label>\n <input\n #strokeColorInput\n formControlName=\"stroke\"\n matInput\n type=\"text\"\n [style.background]=\"getFeatureStrokeColor()\"\n [readonly]=\"true\"\n [colorPicker]=\"getFeatureStrokeColor()\"\n [cpWidth]=\"'200px'\"\n [cpPosition]=\"'bottom'\"\n [cpPositionOffset]=\"'-75%'\"\n [cpOutputFormat]=\"'rgba'\"\n [cpCancelButton]=\"true\"\n [cpCancelButtonText]=\"'igo.geo.draw.cancel' | translate\"\n [cpOKButton]=\"true\"\n (colorPickerChange)=\"styleModalData.strokeColor = $event\">\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\n <mat-label>{{ 'igo.geo.draw.fontSize' | translate }}</mat-label>\n <input\n matInput\n #testFontSize\n type=\"number\"\n placeholder=\"10\"\n min=\"10\"\n onkeydown=\"return event.keyCode !== 69\"\n [value]=\"getFeatureFontSize()\"\n (input)=\"styleModalData.fontSize = $event.target.value\">\n <span matSuffix>px</span>\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\n <mat-label>{{ 'igo.geo.draw.fontStyle' | translate }}</mat-label>\n <mat-select\n #testFontStyle\n [value]=\"getFeatureFontStyle()\"\n (selectionChange)=\"styleModalData.fontStyle = $event.value\">\n <mat-option\n *ngFor=\"let fontSelect of allFontStyles\"\n [value]=\"fontSelect\">\n {{ fontSelect }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\n <mat-label>{{ 'igo.geo.draw.offsetX' | translate }}</mat-label>\n <input\n matInput\n #offsetXInput\n type=\"number\"\n onkeydown=\"return event.keyCode !== 69\"\n [value]=\"getFeatureOffsetX()\"\n (input)=\"styleModalData.offsetX = $event.target.value\">\n </mat-form-field>\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\n <mat-label>{{ 'igo.geo.draw.offsetY' | translate }}</mat-label>\n <input\n matInput\n #offsetYInput\n type=\"number\"\n onkeydown=\"return event.keyCode !== 69\"\n [value]=\"getFeatureOffsetY()\"\n (input)=\"styleModalData.offsetY= $event.target.value\">\n </mat-form-field>\n </div>\n </form>\n </div>\n</div>\n<div mat-dialog-actions>\n <button \n mat-raised-button \n (click)=\"cancelDrawing()\">{{'igo.geo.draw.cancel' | translate}}\n </button>\n <button \n mat-raised-button \n color=\"primary\" \n (click)=\"confirm()\">OK\n </button>\n</div>\n", styles: ["h2{font-weight:700;font-size:large}.igo-form{padding:10px}.fill-field,.stroke-field{width:130px}.fill-color-picker mat-icon{position:relative;top:7px}.fill-color-picker mat-form-field{left:8px}.stroke-color-picker mat-icon{position:relative;top:7px}.stroke-color-picker mat-form-field{left:35px}.box{width:25px;height:25px}.edition-drawing{padding:10px 0}.igo-input-container .mat-form-field+.mat-form-field{margin-left:8px}.igo-form-input-box{width:150px}button{margin-right:5px}\n"] }]
19421
+ args: [{ selector: 'igo-style-modal-component', template: "<div mat-dialog-content>\r\n <h2 mat-dialog-title class=\"mat-typography\">{{ 'igo.geo.layer.style.styleModal' | translate }}</h2>\r\n <div\r\n class=\"edition-drawing mat-typography\"\r\n [hidden]=\"data.features.length === 0\">\r\n <form\r\n class=\"igo-form\"\r\n [formGroup]=\"form\">\r\n <div class=\"fill-color-picker mat-typography\" *ngIf=\"linestringOnly !== true\">\r\n <span>\r\n <mat-icon class=\"stroke-palette-icon\" svgIcon=\"square\"></mat-icon>\r\n {{ 'igo.geo.draw.fill' | translate }}\r\n </span>\r\n\r\n <mat-form-field\r\n class=\"fill-field\"\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.draw.colorPicker' | translate\">\r\n <mat-label>{{ getFeatureFillColor() }}</mat-label>\r\n <input\r\n #fillColorInput\r\n formControlName=\"fill\"\r\n matInput\r\n type=\"text\"\r\n [style.background]=\"getFeatureFillColor()\"\r\n [readonly]=\"true\"\r\n [colorPicker]=\"getFeatureFillColor()\"\r\n [cpWidth]=\"'200px'\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPosition]=\"'bottom'\"\r\n [cpPositionOffset]=\"'-75%'\"\r\n [cpCancelButton]=\"true\"\r\n [cpCancelButtonText]=\"'igo.geo.draw.cancel' | translate\"\r\n [cpOKButton]=\"true\"\r\n (colorPickerChange)=\"styleModalData.fillColor = $event\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"stroke-color-picker mat-typography\">\r\n <span>\r\n <mat-icon\r\n class=\"stroke-palette-icon\"\r\n svgIcon=\"square-outline\">\r\n </mat-icon>\r\n {{'igo.geo.draw.stroke' | translate}}\r\n </span>\r\n\r\n <mat-form-field\r\n class=\"stroke-field\"\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.draw.colorPicker' | translate\">\r\n <mat-label>{{ getFeatureStrokeColor() }}</mat-label>\r\n <input\r\n #strokeColorInput\r\n formControlName=\"stroke\"\r\n matInput\r\n type=\"text\"\r\n [style.background]=\"getFeatureStrokeColor()\"\r\n [readonly]=\"true\"\r\n [colorPicker]=\"getFeatureStrokeColor()\"\r\n [cpWidth]=\"'200px'\"\r\n [cpPosition]=\"'bottom'\"\r\n [cpPositionOffset]=\"'-75%'\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpCancelButton]=\"true\"\r\n [cpCancelButtonText]=\"'igo.geo.draw.cancel' | translate\"\r\n [cpOKButton]=\"true\"\r\n (colorPickerChange)=\"styleModalData.strokeColor = $event\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\">\r\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\r\n <mat-label>{{ 'igo.geo.draw.fontSize' | translate }}</mat-label>\r\n <input\r\n matInput\r\n #testFontSize\r\n type=\"number\"\r\n placeholder=\"10\"\r\n min=\"10\"\r\n onkeydown=\"return event.keyCode !== 69\"\r\n [value]=\"getFeatureFontSize()\"\r\n (input)=\"styleModalData.fontSize = $event.target.value\">\r\n <span matSuffix>px</span>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\r\n <mat-label>{{ 'igo.geo.draw.fontStyle' | translate }}</mat-label>\r\n <mat-select\r\n #testFontStyle\r\n [value]=\"getFeatureFontStyle()\"\r\n (selectionChange)=\"styleModalData.fontStyle = $event.value\">\r\n <mat-option\r\n *ngFor=\"let fontSelect of allFontStyles\"\r\n [value]=\"fontSelect\">\r\n {{ fontSelect }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\">\r\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\r\n <mat-label>{{ 'igo.geo.draw.offsetX' | translate }}</mat-label>\r\n <input\r\n matInput\r\n #offsetXInput\r\n type=\"number\"\r\n onkeydown=\"return event.keyCode !== 69\"\r\n [value]=\"getFeatureOffsetX()\"\r\n (input)=\"styleModalData.offsetX = $event.target.value\">\r\n </mat-form-field>\r\n <mat-form-field appearance=\"outline\" class=\"igo-form-input-box\">\r\n <mat-label>{{ 'igo.geo.draw.offsetY' | translate }}</mat-label>\r\n <input\r\n matInput\r\n #offsetYInput\r\n type=\"number\"\r\n onkeydown=\"return event.keyCode !== 69\"\r\n [value]=\"getFeatureOffsetY()\"\r\n (input)=\"styleModalData.offsetY= $event.target.value\">\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n </div>\r\n</div>\r\n<div mat-dialog-actions>\r\n <button \r\n mat-raised-button \r\n (click)=\"cancelDrawing()\">{{'igo.geo.draw.cancel' | translate}}\r\n </button>\r\n <button \r\n mat-raised-button \r\n color=\"primary\" \r\n (click)=\"confirm()\">OK\r\n </button>\r\n</div>\r\n", styles: ["h2{font-weight:700;font-size:large}.igo-form{padding:10px}.fill-field,.stroke-field{width:130px}.fill-color-picker mat-icon{position:relative;top:7px}.fill-color-picker mat-form-field{left:8px}.stroke-color-picker mat-icon{position:relative;top:7px}.stroke-color-picker mat-form-field{left:35px}.box{width:25px;height:25px}.edition-drawing{padding:10px 0}.igo-input-container .mat-form-field+.mat-form-field{margin-left:8px}.igo-form-input-box{width:150px}button{margin-right:5px}\n"] }]
18610
19422
  }], function () { return [{ type: i1.MatDialogRef }, { type: i2$2.UntypedFormBuilder }, { type: DrawStyleService }, { type: undefined, decorators: [{
18611
19423
  type: Inject,
18612
19424
  args: [MAT_DIALOG_DATA]
@@ -18745,9 +19557,9 @@ IgoLayerModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [MatInputM
18745
19557
  LayerLegendListBindingDirective,
18746
19558
  TrackFeatureButtonComponent,
18747
19559
  StyleModalComponent] }); })();
18748
- i0.ɵɵsetComponentScope(LayerItemComponent, [i1$1.NgClass, i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5.MatListItem, i9.MatLine, i5.MatListIconCssMatStyler, i7$1.MatBadge, i12$1.MatCheckbox, LayerLegendComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
19560
+ i0.ɵɵsetComponentScope(LayerItemComponent, [i1$1.NgClass, i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5.MatListItem, i9.MatLine, i5.MatListIconCssMatStyler, i7$1.MatBadge, i12.MatCheckbox, LayerLegendComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
18749
19561
  i0.ɵɵsetComponentScope(LayerLegendItemComponent, [i4.MatTooltip, i5.MatListItem, i9.MatLine, LayerLegendComponent], []);
18750
- i0.ɵɵsetComponentScope(LayerListComponent, [i2$2.NgControlStatus, i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i1$1.NgTemplateOutlet, i2$2.NgModel, i11.MatDivider, i7$2.MatMenu, i7$2.MatMenuTrigger, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5.MatList, i5.MatListItem, i13$1.MatSlider, i7$1.MatBadge, i12$1.MatCheckbox, i5$1.ListItemDirective, i5$1.ListComponent, i5$1.PanelComponent, LayerItemComponent,
19562
+ i0.ɵɵsetComponentScope(LayerListComponent, [i2$2.NgControlStatus, i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i1$1.NgTemplateOutlet, i2$2.NgModel, i11.MatDivider, i7$2.MatMenu, i7$2.MatMenuTrigger, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5.MatList, i5.MatListItem, i13$1.MatSlider, i7$1.MatBadge, i12.MatCheckbox, i5$1.ListItemDirective, i5$1.ListComponent, i5$1.PanelComponent, LayerItemComponent,
18751
19563
  LayerListToolComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
18752
19564
  i0.ɵɵsetComponentScope(LayerLegendListComponent, [i1$1.NgForOf, i1$1.NgIf, i11.MatDivider, i23.MatSlideToggle, i4.MatTooltip, i5$1.ListItemDirective, i5$1.ListComponent, LayerLegendItemComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
18753
19565
 
@@ -18997,7 +19809,7 @@ AddCatalogDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: A
18997
19809
  } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i9.MatLine, i4.MatTooltip, i3.MatButton, i13.MatFormField, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i14.MatInput, i15.MatSelect, i9.MatOption, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i1.MatDialogTitle, i1.MatDialogContent, i1.MatDialogActions, i1$1.AsyncPipe, i7.TranslatePipe], styles: ["mat-form-field[_ngcontent-%COMP%]{width:100%}.add-catalog-button-top-padding[_ngcontent-%COMP%]{padding-top:25px}.igo-form[_ngcontent-%COMP%]{padding:10px 5px 5px}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center}button[_ngcontent-%COMP%]{cursor:pointer}button#addCatalogBtnDialog[disabled=true][_ngcontent-%COMP%]{cursor:default;background-color:#0000001f;color:#00000042}.error[_ngcontent-%COMP%]{color:red}"] });
18998
19810
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AddCatalogDialogComponent, [{
18999
19811
  type: Component,
19000
- args: [{ selector: 'igo-add-catalog-dialog', template: "<h1 mat-dialog-title class=\"mat-typography\">{{'igo.geo.catalog.library.addTitle' | translate}}</h1>\n<div mat-dialog-content class=\"mat-typography\">\n <form class=\"igo-form\" [formGroup]=\"form\">\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input type=\"text\" formControlName=\"title\" placeholder=\"{{'igo.geo.printForm.title' | translate}}\" matInput [matAutocomplete]=\"auto2\">\n <mat-autocomplete #auto2=\"matAutocomplete\" (optionSelected)='changeUrlOrTitle($event.option.value)'>\n <mat-option *ngFor=\"let predefinedCatalog of (predefinedCatalogsList$ | async)\" matTooltipShowDelay=\"500\"\n [matTooltip]=\"predefinedCatalog.title\" [value]=\"predefinedCatalog\">\n {{predefinedCatalog.title}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input type=\"text\" formControlName=\"url\" placeholder=\"URL\" matInput [matAutocomplete]=\"auto\">\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)='changeUrlOrTitle($event.option.value)'>\n <mat-option *ngFor=\"let predefinedCatalog of (predefinedCatalogsList$ | async)\" matTooltipShowDelay=\"500\"\n [matTooltip]=\"predefinedCatalog.url\" [value]=\"predefinedCatalog\">\n {{predefinedCatalog.url}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-select\n formControlName=\"type\"\n placeholder=\"Type\">\n <mat-option\n *ngFor=\"let type of typeCapabilities\"\n [value]=\"type\"\n (click)=\"$event.stopPropagation()\">\n <p mat-line>{{type}}</p>\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </form>\n <span *ngIf=\"error && addedCatalog && emailAddress\">\n <p class=\"error\">{{languageService.translate.instant('igo.geo.catalog.externalProvider.unavailableWithEmail', { value: addedCatalog.url, email: emailAddress })}}</p>\n </span>\n <span *ngIf=\"error && addedCatalog && !emailAddress\">\n <p class=\"error\">{{languageService.translate.instant('igo.geo.catalog.unavailable', { value: addedCatalog.url })}}</p>\n </span>\n</div>\n<div mat-dialog-actions style=\"justify-content: center\">\n <div class=\"igo-form-button-group add-catalog-button-top-padding\">\n <button\n mat-raised-button\n type=\"button\"\n (click)=\"cancel()\">\n {{'igo.geo.catalog.library.cancel' | translate}}\n </button>\n <button\n id=\"addCatalogBtnDialog\"\n mat-raised-button\n type=\"button\"\n color=\"primary\"\n [disabled]=\"!form.valid\"\n (click)=\"addCatalog(form.value)\">\n {{'igo.geo.catalog.library.add' | translate}}\n </button>\n </div>\n</div>", styles: ["mat-form-field{width:100%}.add-catalog-button-top-padding{padding-top:25px}.igo-form{padding:10px 5px 5px}.igo-form-button-group{text-align:center}button{cursor:pointer}button#addCatalogBtnDialog[disabled=true]{cursor:default;background-color:#0000001f;color:#00000042}.error{color:red}\n"] }]
19812
+ args: [{ selector: 'igo-add-catalog-dialog', template: "<h1 mat-dialog-title class=\"mat-typography\">{{'igo.geo.catalog.library.addTitle' | translate}}</h1>\r\n<div mat-dialog-content class=\"mat-typography\">\r\n <form class=\"igo-form\" [formGroup]=\"form\">\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <input type=\"text\" formControlName=\"title\" placeholder=\"{{'igo.geo.printForm.title' | translate}}\" matInput [matAutocomplete]=\"auto2\">\r\n <mat-autocomplete #auto2=\"matAutocomplete\" (optionSelected)='changeUrlOrTitle($event.option.value)'>\r\n <mat-option *ngFor=\"let predefinedCatalog of (predefinedCatalogsList$ | async)\" matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"predefinedCatalog.title\" [value]=\"predefinedCatalog\">\r\n {{predefinedCatalog.title}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <input type=\"text\" formControlName=\"url\" placeholder=\"URL\" matInput [matAutocomplete]=\"auto\">\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)='changeUrlOrTitle($event.option.value)'>\r\n <mat-option *ngFor=\"let predefinedCatalog of (predefinedCatalogsList$ | async)\" matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"predefinedCatalog.url\" [value]=\"predefinedCatalog\">\r\n {{predefinedCatalog.url}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <mat-select\r\n formControlName=\"type\"\r\n placeholder=\"Type\">\r\n <mat-option\r\n *ngFor=\"let type of typeCapabilities\"\r\n [value]=\"type\"\r\n (click)=\"$event.stopPropagation()\">\r\n <p mat-line>{{type}}</p>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </form>\r\n <span *ngIf=\"error && addedCatalog && emailAddress\">\r\n <p class=\"error\">{{languageService.translate.instant('igo.geo.catalog.externalProvider.unavailableWithEmail', { value: addedCatalog.url, email: emailAddress })}}</p>\r\n </span>\r\n <span *ngIf=\"error && addedCatalog && !emailAddress\">\r\n <p class=\"error\">{{languageService.translate.instant('igo.geo.catalog.unavailable', { value: addedCatalog.url })}}</p>\r\n </span>\r\n</div>\r\n<div mat-dialog-actions style=\"justify-content: center\">\r\n <div class=\"igo-form-button-group add-catalog-button-top-padding\">\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n (click)=\"cancel()\">\r\n {{'igo.geo.catalog.library.cancel' | translate}}\r\n </button>\r\n <button\r\n id=\"addCatalogBtnDialog\"\r\n mat-raised-button\r\n type=\"button\"\r\n color=\"primary\"\r\n [disabled]=\"!form.valid\"\r\n (click)=\"addCatalog(form.value)\">\r\n {{'igo.geo.catalog.library.add' | translate}}\r\n </button>\r\n </div>\r\n</div>", styles: ["mat-form-field{width:100%}.add-catalog-button-top-padding{padding-top:25px}.igo-form{padding:10px 5px 5px}.igo-form-button-group{text-align:center}button{cursor:pointer}button#addCatalogBtnDialog[disabled=true]{cursor:default;background-color:#0000001f;color:#00000042}.error{color:red}\n"] }]
19001
19813
  }], function () { return [{ type: i2$2.UntypedFormBuilder }, { type: i2$1.LanguageService }, { type: i2$1.ConfigService }, { type: i1.MatDialogRef }, { type: undefined, decorators: [{
19002
19814
  type: Optional
19003
19815
  }, {
@@ -19199,7 +20011,7 @@ CatalogLibaryComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Cata
19199
20011
  } }, styles: ["igo-list[_ngcontent-%COMP%]{height:auto}.btnAddCatalog[_ngcontent-%COMP%]{justify-content:center;display:flex;margin:30px 0}"], changeDetection: 0 });
19200
20012
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogLibaryComponent, [{
19201
20013
  type: Component,
19202
- args: [{ selector: 'igo-catalog-library', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-list [navigation]=\"false\">\n <ng-template ngFor let-catalog [ngForOf]=\"getCatalogs() | async\">\n <igo-catalog-library-item\n igoListItem\n color=\"accent\"\n [map]=\"map\"\n [catalog]=\"catalog\"\n (catalogRemove)=\"onCatalogRemove(catalog)\"\n (select)=\"onCatalogSelect(catalog)\">\n </igo-catalog-library-item>\n </ng-template>\n</igo-list>\n\n<div *ngIf=\"addCatalogAllowed\" class=btnAddCatalog>\n <button\n mat-raised-button\n [matTooltip]=\"'igo.geo.catalog.library.addBtn' | translate\"\n matTooltipPosition=\"above\"\n color=\"primary\"\n (click)=\"addCatalogDialog()\">\n {{'igo.geo.catalog.library.addBtn' | translate}}\n <mat-icon svgIcon=\"earth-plus\"></mat-icon>\n </button>\n</div>\n", styles: ["igo-list{height:auto}.btnAddCatalog{justify-content:center;display:flex;margin:30px 0}\n"] }]
20014
+ args: [{ selector: 'igo-catalog-library', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-list [navigation]=\"false\">\r\n <ng-template ngFor let-catalog [ngForOf]=\"getCatalogs() | async\">\r\n <igo-catalog-library-item\r\n igoListItem\r\n color=\"accent\"\r\n [map]=\"map\"\r\n [catalog]=\"catalog\"\r\n (catalogRemove)=\"onCatalogRemove(catalog)\"\r\n (select)=\"onCatalogSelect(catalog)\">\r\n </igo-catalog-library-item>\r\n </ng-template>\r\n</igo-list>\r\n\r\n<div *ngIf=\"addCatalogAllowed\" class=btnAddCatalog>\r\n <button\r\n mat-raised-button\r\n [matTooltip]=\"'igo.geo.catalog.library.addBtn' | translate\"\r\n matTooltipPosition=\"above\"\r\n color=\"primary\"\r\n (click)=\"addCatalogDialog()\">\r\n {{'igo.geo.catalog.library.addBtn' | translate}}\r\n <mat-icon svgIcon=\"earth-plus\"></mat-icon>\r\n </button>\r\n</div>\r\n", styles: ["igo-list{height:auto}.btnAddCatalog{justify-content:center;display:flex;margin:30px 0}\n"] }]
19203
20015
  }], function () { return [{ type: CapabilitiesService }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: i1.MatDialog }]; }, { store: [{
19204
20016
  type: Input
19205
20017
  }], map: [{
@@ -19272,7 +20084,7 @@ CatalogLibaryItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
19272
20084
  } }, dependencies: [i1$1.NgIf, i2.MatIcon, i5.MatListItem, i9.MatLine, i4.MatTooltip, i3.MatButton, i7.TranslatePipe], styles: [".igo-blank[_ngcontent-%COMP%]{cursor:pointer}.igo-external-provider[_ngcontent-%COMP%]{cursor:help}"], changeDetection: 0 });
19273
20085
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CatalogLibaryItemComponent, [{
19274
20086
  type: Component,
19275
- args: [{ selector: 'igo-catalog-library-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\n <h4 mat-line>\n {{title}}\n </h4>\n <mat-icon\n class=\"igo-external-provider\"\n *ngIf=\"catalog.externalProvider\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.externalProvider.catalog' | translate\"\n color=\"primary\"\n (click)=\"$event.stopPropagation()\"\n svgIcon=\"earth-arrow-right\">\n </mat-icon>\n\n <button\n *ngIf=\"catalog.removable\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.catalog.library.remove' | translate\"\n color=\"warn\"\n (click)=\"removeCatalogFromLibrary($event)\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n</button>\n\n<button\n class=\"igo-blank\"\n *ngIf=\"!catalog.removable\"\n disabled=\"true\"\n mat-icon-button>\n <mat-icon svgIcon=\"blank\"></mat-icon>\n</button>\n</mat-list-item>\n", styles: [".igo-blank{cursor:pointer}.igo-external-provider{cursor:help}\n"] }]
20087
+ args: [{ selector: 'igo-catalog-library-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\r\n <h4 mat-line>\r\n {{title}}\r\n </h4>\r\n <mat-icon\r\n class=\"igo-external-provider\"\r\n *ngIf=\"catalog.externalProvider\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.catalog.externalProvider.catalog' | translate\"\r\n color=\"primary\"\r\n (click)=\"$event.stopPropagation()\"\r\n svgIcon=\"earth-arrow-right\">\r\n </mat-icon>\r\n\r\n <button\r\n *ngIf=\"catalog.removable\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.catalog.library.remove' | translate\"\r\n color=\"warn\"\r\n (click)=\"removeCatalogFromLibrary($event)\">\r\n <mat-icon svgIcon=\"delete\"></mat-icon>\r\n</button>\r\n\r\n<button\r\n class=\"igo-blank\"\r\n *ngIf=\"!catalog.removable\"\r\n disabled=\"true\"\r\n mat-icon-button>\r\n <mat-icon svgIcon=\"blank\"></mat-icon>\r\n</button>\r\n</mat-list-item>\r\n", styles: [".igo-blank{cursor:pointer}.igo-external-provider{cursor:help}\n"] }]
19276
20088
  }], null, { catalog: [{
19277
20089
  type: Input
19278
20090
  }], map: [{
@@ -20003,7 +20815,7 @@ DownloadButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Dow
20003
20815
  } }, dependencies: [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i7.TranslatePipe], changeDetection: 0 });
20004
20816
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DownloadButtonComponent, [{
20005
20817
  type: Component,
20006
- args: [{ selector: 'igo-download-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"options && options.download && (options.download['dynamicUrl'] || options.download['url']) \"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.download.action' | translate\"\n [color]=\"color\"\n (click)=\"openDownload(layer)\">\n <mat-icon svgIcon=\"download\"></mat-icon>\n</button>\n" }]
20818
+ args: [{ selector: 'igo-download-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n *ngIf=\"options && options.download && (options.download['dynamicUrl'] || options.download['url']) \"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.download.action' | translate\"\r\n [color]=\"color\"\r\n (click)=\"openDownload(layer)\">\r\n <mat-icon svgIcon=\"download\"></mat-icon>\r\n</button>\r\n" }]
20007
20819
  }], function () { return [{ type: DownloadService }]; }, { layer: [{
20008
20820
  type: Input
20009
20821
  }], color: [{
@@ -20071,7 +20883,9 @@ IgoDrawModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [FormsModul
20071
20883
  IgoEntityTableModule,
20072
20884
  ColorPickerModule,
20073
20885
  BrowserModule,
20074
- BrowserAnimationsModule] });
20886
+ BrowserAnimationsModule,
20887
+ MatRadioModule,
20888
+ MatCheckboxModule] });
20075
20889
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IgoDrawModule, [{
20076
20890
  type: NgModule,
20077
20891
  args: [{
@@ -20096,7 +20910,9 @@ IgoDrawModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [FormsModul
20096
20910
  IgoEntityTableModule,
20097
20911
  ColorPickerModule,
20098
20912
  BrowserModule,
20099
- BrowserAnimationsModule
20913
+ BrowserAnimationsModule,
20914
+ MatRadioModule,
20915
+ MatCheckboxModule
20100
20916
  ],
20101
20917
  declarations: [DrawComponent, DrawPopupComponent, DrawLayerPopupComponent, DrawShorcutsComponent],
20102
20918
  exports: [DrawComponent]
@@ -20122,7 +20938,9 @@ IgoDrawModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ imports: [FormsModul
20122
20938
  IgoEntityTableModule,
20123
20939
  ColorPickerModule,
20124
20940
  BrowserModule,
20125
- BrowserAnimationsModule], exports: [DrawComponent] }); })();
20941
+ BrowserAnimationsModule,
20942
+ MatRadioModule,
20943
+ MatCheckboxModule], exports: [DrawComponent] }); })();
20126
20944
 
20127
20945
  class IgoDrawingToolModule {
20128
20946
  }
@@ -21140,7 +21958,7 @@ MeasurerDialogComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Mea
21140
21958
  } }, styles: ["[_nghost-%COMP%]{font-family:Roboto,Helvetica Neue,sans-serif}h3[_ngcontent-%COMP%]{text-align:center;margin:0}table[_ngcontent-%COMP%]{width:100%;padding:10px}table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:last-child{padding-left:10px}"] });
21141
21959
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MeasurerDialogComponent, [{
21142
21960
  type: Component,
21143
- args: [{ selector: 'igo-measurer-dialog', template: "<h3 mat-dialog-title>{{'igo.geo.measure.dialog.title' | translate}}</h3>\n\n<table *ngIf=\"data.length > 0\"\n class=\"mat-typography\">\n <thead>\n <tr>\n <th colspan=\"2\">{{'igo.geo.measure.dialog.length.title' | translate}}</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>{{data.length | measureFormat: measureLengthUnit.Meters}}</td>\n <td>{{'igo.geo.measure.dialog.lengthInMeters' | translate}}</td>\n </tr>\n <tr>\n <td>{{data.length | measureFormat: measureLengthUnit.Kilometers}}</td>\n <td>{{'igo.geo.measure.dialog.lengthInKilometers' | translate}}</td>\n </tr>\n <tr>\n <td>{{data.length | measureFormat: measureLengthUnit.Miles}}</td>\n <td>{{'igo.geo.measure.dialog.lengthInMiles' | translate}}</td>\n </tr>\n <tr>\n <td>{{data.length | measureFormat: measureLengthUnit.Feet}}</td>\n <td>{{'igo.geo.measure.dialog.lengthInFeet' | translate}}</td>\n </tr>\n </tbody>\n</table>\n\n<table *ngIf=\"data.area > 0\"\n class=\"mat-typography\">\n <thead>\n <tr>\n <th colspan=\"2\">{{'igo.geo.measure.dialog.area.title' | translate}}</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>{{data.area | measureFormat: measureAreaUnit.SquareMeters}}</td>\n <td>{{'igo.geo.measure.dialog.areaInSquareMeters' | translate}}</td>\n </tr>\n <tr>\n <td>{{data.area | measureFormat:measureAreaUnit.SquareKilometers}}</td>\n <td>{{'igo.geo.measure.dialog.areaInSquareKilometers' | translate}}</td>\n </tr>\n <tr>\n <td>{{data.area | measureFormat: measureAreaUnit.SquareMiles}}</td>\n <td>{{'igo.geo.measure.dialog.areaInSquareMiles' | translate}}</td>\n </tr>\n <tr>\n <td>{{data.area | measureFormat: measureAreaUnit.Acres}}</td>\n <td>{{'igo.geo.measure.dialog.areaInAcres' | translate}}</td>\n </tr>\n <tr>\n <td>{{data.area | measureFormat: measureAreaUnit.Hectares}}</td>\n <td>{{'igo.geo.measure.dialog.areaInHectares' | translate}}</td>\n </tr>\n <tr>\n <td>{{'igo.geo.measure.dialog.perimeterInMeters' | translate}}</td>\n <td>{{data.perimeter | measureFormat: measureLengthUnit.Meters}}</td>\n </tr>\n </tbody>\n</table>\n", styles: [":host{font-family:Roboto,Helvetica Neue,sans-serif}h3{text-align:center;margin:0}table{width:100%;padding:10px}table tbody tr td:last-child{padding-left:10px}\n"] }]
21961
+ args: [{ selector: 'igo-measurer-dialog', template: "<h3 mat-dialog-title>{{'igo.geo.measure.dialog.title' | translate}}</h3>\r\n\r\n<table *ngIf=\"data.length > 0\"\r\n class=\"mat-typography\">\r\n <thead>\r\n <tr>\r\n <th colspan=\"2\">{{'igo.geo.measure.dialog.length.title' | translate}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>{{data.length | measureFormat: measureLengthUnit.Meters}}</td>\r\n <td>{{'igo.geo.measure.dialog.lengthInMeters' | translate}}</td>\r\n </tr>\r\n <tr>\r\n <td>{{data.length | measureFormat: measureLengthUnit.Kilometers}}</td>\r\n <td>{{'igo.geo.measure.dialog.lengthInKilometers' | translate}}</td>\r\n </tr>\r\n <tr>\r\n <td>{{data.length | measureFormat: measureLengthUnit.Miles}}</td>\r\n <td>{{'igo.geo.measure.dialog.lengthInMiles' | translate}}</td>\r\n </tr>\r\n <tr>\r\n <td>{{data.length | measureFormat: measureLengthUnit.Feet}}</td>\r\n <td>{{'igo.geo.measure.dialog.lengthInFeet' | translate}}</td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n\r\n<table *ngIf=\"data.area > 0\"\r\n class=\"mat-typography\">\r\n <thead>\r\n <tr>\r\n <th colspan=\"2\">{{'igo.geo.measure.dialog.area.title' | translate}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr>\r\n <td>{{data.area | measureFormat: measureAreaUnit.SquareMeters}}</td>\r\n <td>{{'igo.geo.measure.dialog.areaInSquareMeters' | translate}}</td>\r\n </tr>\r\n <tr>\r\n <td>{{data.area | measureFormat:measureAreaUnit.SquareKilometers}}</td>\r\n <td>{{'igo.geo.measure.dialog.areaInSquareKilometers' | translate}}</td>\r\n </tr>\r\n <tr>\r\n <td>{{data.area | measureFormat: measureAreaUnit.SquareMiles}}</td>\r\n <td>{{'igo.geo.measure.dialog.areaInSquareMiles' | translate}}</td>\r\n </tr>\r\n <tr>\r\n <td>{{data.area | measureFormat: measureAreaUnit.Acres}}</td>\r\n <td>{{'igo.geo.measure.dialog.areaInAcres' | translate}}</td>\r\n </tr>\r\n <tr>\r\n <td>{{data.area | measureFormat: measureAreaUnit.Hectares}}</td>\r\n <td>{{'igo.geo.measure.dialog.areaInHectares' | translate}}</td>\r\n </tr>\r\n <tr>\r\n <td>{{'igo.geo.measure.dialog.perimeterInMeters' | translate}}</td>\r\n <td>{{data.perimeter | measureFormat: measureLengthUnit.Meters}}</td>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: [":host{font-family:Roboto,Helvetica Neue,sans-serif}h3{text-align:center;margin:0}table{width:100%;padding:10px}table tbody tr td:last-child{padding-left:10px}\n"] }]
21144
21962
  }], function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
21145
21963
  type: Inject,
21146
21964
  args: [MAT_DIALOG_DATA]
@@ -22155,7 +22973,7 @@ MeasurerComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MeasurerC
22155
22973
  } }, styles: [".measure-type-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.measure-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:100%}.measure-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:50%}.measure-options[_ngcontent-%COMP%]{overflow-x:hidden}.measure-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.measure-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.measure-store-buttons[_ngcontent-%COMP%]{margin-left:-2px}.measure-store-buttons[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:first-of-type{margin-left:14px}.table-compact[_ngcontent-%COMP%] .mat-header-cell.mat-column-selectionCheckbox{width:52px}"], changeDetection: 0 });
22156
22974
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MeasurerComponent, [{
22157
22975
  type: Component,
22158
- args: [{ selector: 'igo-measurer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\n <div class=\"measure-type-toggle mat-typography\">\n <mat-button-toggle-group\n [value]=\"activeMeasureType\"\n (change)=\"onMeasureTypeChange($event.value)\">\n <mat-button-toggle [value]=\"measureType.Length\">\n {{('igo.geo.measure.' + measureType.Length) | translate}}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"measureType.Area\">\n {{('igo.geo.measure.' + measureType.Area) | translate}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n\n <div class=\"measure-options mat-typography\">\n <mat-slide-toggle\n [disabled]=\"drawControlIsDisabled\"\n [checked]=\"drawControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDrawControl($event.checked)\">\n {{'igo.geo.measure.toggleActive' | translate}}\n </mat-slide-toggle>\n\n <mat-divider *ngIf=\"(hasLine$ | async)\"></mat-divider>\n\n <mat-slide-toggle *ngIf=\"(hasLine$ | async)\"\n [checked]=\"displayLines\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDisplayLines($event.checked)\">\n {{'igo.geo.measure.toggleDisplayLines' | translate}}\n </mat-slide-toggle>\n\n <mat-divider *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"></mat-divider>\n\n <mat-slide-toggle *ngIf=\"(hasArea$ | async)\"\n [checked]=\"displayDistance\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDisplayDistance($event.checked)\">\n {{'igo.geo.measure.toggleDisplayDistance' | translate}}\n </mat-slide-toggle>\n\n <mat-slide-toggle *ngIf=\"(hasArea$ | async)\"\n [checked]=\"displayAreas\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleDisplayAreas($event.checked)\">\n {{'igo.geo.measure.toggleDisplayAreas' | translate}}\n </mat-slide-toggle>\n\n <mat-divider *ngIf=\"(hasArea$ | async)\"></mat-divider>\n\n <mat-slide-toggle\n [checked]=\"measureUnitsAuto\"\n [labelPosition]=\"'before'\"\n (change)=\"onToggleMeasureUnitsAuto($event.checked)\">\n {{'igo.geo.measure.toggleAutoUnits' | translate}}\n </mat-slide-toggle>\n </div>\n\n <ng-container *ngIf=\"measure$ | async as measure\">\n <igo-measurer-item *ngIf=\"activeMeasureType === measureType.Length || activeMeasureType === measureType.Area\"\n [measureType]=\"measureType.Length\"\n [measureUnit]=\"measureLengthUnit.Meters\"\n [measure]=\"measure.length\"\n [auto]=\"measureUnitsAuto\"\n [placeholder]=\"(activeMeasureType === measureType.Area ? 'igo.geo.measure.perimeter' : 'igo.geo.measure.length') | translate\"\n (measureUnitChange)=\"onLengthUnitChange($event)\">\n </igo-measurer-item>\n\n <igo-measurer-item *ngIf=\"activeMeasureType === measureType.Area\"\n [measureType]=\"measureType.Area\"\n [measureUnit]=\"measureAreaUnit.SquareMeters\"\n [measure]=\"measure.area\"\n [auto]=\"measureUnitsAuto\"\n [placeholder]=\"'igo.geo.measure.area' | translate\"\n (measureUnitChange)=\"onAreaUnitChange($event)\">\n </igo-measurer-item>\n </ng-container>\n\n <mat-divider *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"></mat-divider>\n\n <div class=\"measure-store-buttons\">\n <button *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"\n mat-icon-button\n [matTooltip]=\"'igo.geo.measure.actionbar.calculate.tooltip' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\n color=\"accent\"\n (click)=\"onCalculateClick()\">\n <mat-icon svgIcon=\"calculator\"></mat-icon>\n </button>\n\n <button *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"\n mat-icon-button\n [matTooltip]=\"'igo.geo.measure.actionbar.delete.tooltip' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\n color=\"warn\"\n (click)=\"onDeleteClick()\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n\n <!--button\n mat-icon-button\n [matTooltip]=\"'igo.geo.measure.actionbar.modify.tooltip' | translate\"\n [disabled]=\"(selectedFeatures$ | async).length !== 1\"\n (click)=\"onModifyClick()\">\n <mat-icon svgIcon=\"edit\"></mat-icon>\n </button-->\n </div>\n\n <igo-entity-table\n #table\n class=\"table-compact\"\n [store]=\"store\"\n [template]=\"tableTemplate\">\n </igo-entity-table>\n</div>\n", styles: [".measure-type-toggle{padding:10px;text-align:center}.measure-type-toggle mat-button-toggle-group{width:100%}.measure-type-toggle mat-button-toggle-group mat-button-toggle{width:50%}.measure-options{overflow-x:hidden}.measure-options mat-slide-toggle{width:100%;margin:10px}.measure-options mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.measure-store-buttons{margin-left:-2px}.measure-store-buttons button:first-of-type{margin-left:14px}.table-compact ::ng-deep .mat-header-cell.mat-column-selectionCheckbox{width:52px}\n"] }]
22976
+ args: [{ selector: 'igo-measurer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div>\r\n <div class=\"measure-type-toggle mat-typography\">\r\n <mat-button-toggle-group\r\n [value]=\"activeMeasureType\"\r\n (change)=\"onMeasureTypeChange($event.value)\">\r\n <mat-button-toggle [value]=\"measureType.Length\">\r\n {{('igo.geo.measure.' + measureType.Length) | translate}}\r\n </mat-button-toggle>\r\n <mat-button-toggle [value]=\"measureType.Area\">\r\n {{('igo.geo.measure.' + measureType.Area) | translate}}\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n\r\n <div class=\"measure-options mat-typography\">\r\n <mat-slide-toggle\r\n [disabled]=\"drawControlIsDisabled\"\r\n [checked]=\"drawControlIsActive\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleDrawControl($event.checked)\">\r\n {{'igo.geo.measure.toggleActive' | translate}}\r\n </mat-slide-toggle>\r\n\r\n <mat-divider *ngIf=\"(hasLine$ | async)\"></mat-divider>\r\n\r\n <mat-slide-toggle *ngIf=\"(hasLine$ | async)\"\r\n [checked]=\"displayLines\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleDisplayLines($event.checked)\">\r\n {{'igo.geo.measure.toggleDisplayLines' | translate}}\r\n </mat-slide-toggle>\r\n\r\n <mat-divider *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"></mat-divider>\r\n\r\n <mat-slide-toggle *ngIf=\"(hasArea$ | async)\"\r\n [checked]=\"displayDistance\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleDisplayDistance($event.checked)\">\r\n {{'igo.geo.measure.toggleDisplayDistance' | translate}}\r\n </mat-slide-toggle>\r\n\r\n <mat-slide-toggle *ngIf=\"(hasArea$ | async)\"\r\n [checked]=\"displayAreas\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleDisplayAreas($event.checked)\">\r\n {{'igo.geo.measure.toggleDisplayAreas' | translate}}\r\n </mat-slide-toggle>\r\n\r\n <mat-divider *ngIf=\"(hasArea$ | async)\"></mat-divider>\r\n\r\n <mat-slide-toggle\r\n [checked]=\"measureUnitsAuto\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onToggleMeasureUnitsAuto($event.checked)\">\r\n {{'igo.geo.measure.toggleAutoUnits' | translate}}\r\n </mat-slide-toggle>\r\n </div>\r\n\r\n <ng-container *ngIf=\"measure$ | async as measure\">\r\n <igo-measurer-item *ngIf=\"activeMeasureType === measureType.Length || activeMeasureType === measureType.Area\"\r\n [measureType]=\"measureType.Length\"\r\n [measureUnit]=\"measureLengthUnit.Meters\"\r\n [measure]=\"measure.length\"\r\n [auto]=\"measureUnitsAuto\"\r\n [placeholder]=\"(activeMeasureType === measureType.Area ? 'igo.geo.measure.perimeter' : 'igo.geo.measure.length') | translate\"\r\n (measureUnitChange)=\"onLengthUnitChange($event)\">\r\n </igo-measurer-item>\r\n\r\n <igo-measurer-item *ngIf=\"activeMeasureType === measureType.Area\"\r\n [measureType]=\"measureType.Area\"\r\n [measureUnit]=\"measureAreaUnit.SquareMeters\"\r\n [measure]=\"measure.area\"\r\n [auto]=\"measureUnitsAuto\"\r\n [placeholder]=\"'igo.geo.measure.area' | translate\"\r\n (measureUnitChange)=\"onAreaUnitChange($event)\">\r\n </igo-measurer-item>\r\n </ng-container>\r\n\r\n <mat-divider *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"></mat-divider>\r\n\r\n <div class=\"measure-store-buttons\">\r\n <button *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"\r\n mat-icon-button\r\n [matTooltip]=\"'igo.geo.measure.actionbar.calculate.tooltip' | translate\"\r\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\r\n color=\"accent\"\r\n (click)=\"onCalculateClick()\">\r\n <mat-icon svgIcon=\"calculator\"></mat-icon>\r\n </button>\r\n\r\n <button *ngIf=\"(hasLine$ | async) || (hasArea$ | async)\"\r\n mat-icon-button\r\n [matTooltip]=\"'igo.geo.measure.actionbar.delete.tooltip' | translate\"\r\n [disabled]=\"(selectedFeatures$ | async).length === 0\"\r\n color=\"warn\"\r\n (click)=\"onDeleteClick()\">\r\n <mat-icon svgIcon=\"delete\"></mat-icon>\r\n </button>\r\n\r\n <!--button\r\n mat-icon-button\r\n [matTooltip]=\"'igo.geo.measure.actionbar.modify.tooltip' | translate\"\r\n [disabled]=\"(selectedFeatures$ | async).length !== 1\"\r\n (click)=\"onModifyClick()\">\r\n <mat-icon svgIcon=\"edit\"></mat-icon>\r\n </button-->\r\n </div>\r\n\r\n <igo-entity-table\r\n #table\r\n class=\"table-compact\"\r\n [store]=\"store\"\r\n [template]=\"tableTemplate\">\r\n </igo-entity-table>\r\n</div>\r\n", styles: [".measure-type-toggle{padding:10px;text-align:center}.measure-type-toggle mat-button-toggle-group{width:100%}.measure-type-toggle mat-button-toggle-group mat-button-toggle{width:50%}.measure-options{overflow-x:hidden}.measure-options mat-slide-toggle{width:100%;margin:10px}.measure-options mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.measure-store-buttons{margin-left:-2px}.measure-store-buttons button:first-of-type{margin-left:14px}.table-compact ::ng-deep .mat-header-cell.mat-column-selectionCheckbox{width:52px}\n"] }]
22159
22977
  }], function () { return [{ type: i2$1.LanguageService }, { type: i1.MatDialog }, { type: i2$1.StorageService }]; }, { map: [{
22160
22978
  type: Input
22161
22979
  }], store: [{
@@ -22286,6 +23104,14 @@ class GeometryFormFieldInputComponent {
22286
23104
  }
22287
23105
  this.toggleControl();
22288
23106
  }
23107
+ /**
23108
+ * Whether freehand draw control should be active or not
23109
+ */
23110
+ get predefinedRadius() { return this._predefinedRadius; }
23111
+ set predefinedRadius(value) {
23112
+ this._predefinedRadius = value;
23113
+ this.drawControl.ispredefinedRadius$.next(value);
23114
+ }
22289
23115
  /**
22290
23116
  * Style for the draw control (applies while the geometry is being drawn)
22291
23117
  */
@@ -22666,7 +23492,7 @@ class GeometryFormFieldInputComponent {
22666
23492
  }
22667
23493
  }
22668
23494
  GeometryFormFieldInputComponent.ɵfac = function GeometryFormFieldInputComponent_Factory(t) { return new (t || GeometryFormFieldInputComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2$2.NgControl, 10)); };
22669
- GeometryFormFieldInputComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: GeometryFormFieldInputComponent, selectors: [["igo-geometry-form-field-input"]], inputs: { map: "map", geometryType: "geometryType", drawGuide: "drawGuide", measure: "measure", drawControlIsActive: "drawControlIsActive", freehandDrawIsActive: "freehandDrawIsActive", controlOptions: "controlOptions", drawStyle: "drawStyle", overlayStyle: "overlayStyle", value: "value", radius: "radius" }, decls: 1, vars: 0, template: function GeometryFormFieldInputComponent_Template(rf, ctx) { if (rf & 1) {
23495
+ GeometryFormFieldInputComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: GeometryFormFieldInputComponent, selectors: [["igo-geometry-form-field-input"]], inputs: { map: "map", geometryType: "geometryType", drawGuide: "drawGuide", measure: "measure", drawControlIsActive: "drawControlIsActive", freehandDrawIsActive: "freehandDrawIsActive", predefinedRadius: "predefinedRadius", controlOptions: "controlOptions", drawStyle: "drawStyle", overlayStyle: "overlayStyle", value: "value", radius: "radius" }, decls: 1, vars: 0, template: function GeometryFormFieldInputComponent_Template(rf, ctx) { if (rf & 1) {
22670
23496
  i0.ɵɵtemplate(0, GeometryFormFieldInputComponent_ng_template_0_Template, 0, 0, "ng-template");
22671
23497
  } }, encapsulation: 2, changeDetection: 0 });
22672
23498
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GeometryFormFieldInputComponent, [{
@@ -22688,6 +23514,8 @@ GeometryFormFieldInputComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ t
22688
23514
  type: Input
22689
23515
  }], freehandDrawIsActive: [{
22690
23516
  type: Input
23517
+ }], predefinedRadius: [{
23518
+ type: Input
22691
23519
  }], controlOptions: [{
22692
23520
  type: Input
22693
23521
  }], drawStyle: [{
@@ -22848,7 +23676,7 @@ GeometryFormFieldComponent = __decorate([
22848
23676
  ], GeometryFormFieldComponent);
22849
23677
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GeometryFormFieldComponent, [{
22850
23678
  type: Component,
22851
- args: [{ selector: 'igo-geometry-form-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-geometry-form-field-input\n [formControl]=\"formControl\"\n [map]=\"map\"\n [geometryType]=\"geometryType$ | async\"\n [drawGuide]=\"drawGuide$ | async\"\n [measure]=\"measure\"\n [drawControlIsActive]=\"drawControlIsActive\"\n [freehandDrawIsActive]=\"freehandDrawIsActive\"\n [controlOptions]=\"controlOptions\"\n [drawStyle]=\"drawStyle\"\n [overlayStyle]=\"overlayStyle\">\n</igo-geometry-form-field-input>\n\n<div *ngIf=\"geometryTypeField\" class=\"geometry-type-toggle\">\n <mat-button-toggle-group\n [disabled]=\"(value$ | async) !== undefined\"\n [(ngModel)]=\"geometryType\">\n <mat-button-toggle\n value=\"Point\"\n [disabled]=\"geometryTypes.indexOf('Point') < 0\">\n {{'igo.geo.geometry.point' | translate}}\n </mat-button-toggle>\n <mat-button-toggle\n value=\"LineString\"\n [disabled]=\"geometryTypes.indexOf('LineString') < 0\">\n {{'igo.geo.geometry.line' | translate}}\n </mat-button-toggle>\n <mat-button-toggle\n value=\"Polygon\"\n [disabled]=\"geometryTypes.indexOf('Polygon') < 0\">\n {{'igo.geo.geometry.polygon' | translate}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n\n<mat-form-field *ngIf=\"drawGuideField\" class=\"draw-guide-field\">\n <input\n matInput\n type=\"number\"\n [placeholder]=\"drawGuidePlaceholder\"\n [(ngModel)]=\"drawGuide\">\n <mat-icon\n matPrefix\n [color]=\"'primary'\"\n svgIcon=\"adjust\"> \n </mat-icon>\n <span matSuffix class=\"draw-guide-units\">{{'igo.geo.measure.meters' | translate}}</span>\n</mat-form-field>", styles: [":host{display:block;width:100%}.geometry-type-toggle,.draw-guide-field{width:100%}.geometry-type-toggle{padding:10px;text-align:center}.draw-guide-field mat-icon{margin:0 10px}.draw-guide-units{padding:10px}\n"] }]
23679
+ args: [{ selector: 'igo-geometry-form-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-geometry-form-field-input\r\n [formControl]=\"formControl\"\r\n [map]=\"map\"\r\n [geometryType]=\"geometryType$ | async\"\r\n [drawGuide]=\"drawGuide$ | async\"\r\n [measure]=\"measure\"\r\n [drawControlIsActive]=\"drawControlIsActive\"\r\n [freehandDrawIsActive]=\"freehandDrawIsActive\"\r\n [controlOptions]=\"controlOptions\"\r\n [drawStyle]=\"drawStyle\"\r\n [overlayStyle]=\"overlayStyle\">\r\n</igo-geometry-form-field-input>\r\n\r\n<div *ngIf=\"geometryTypeField\" class=\"geometry-type-toggle\">\r\n <mat-button-toggle-group\r\n [disabled]=\"(value$ | async) !== undefined\"\r\n [(ngModel)]=\"geometryType\">\r\n <mat-button-toggle\r\n value=\"Point\"\r\n [disabled]=\"geometryTypes.indexOf('Point') < 0\">\r\n {{'igo.geo.geometry.point' | translate}}\r\n </mat-button-toggle>\r\n <mat-button-toggle\r\n value=\"LineString\"\r\n [disabled]=\"geometryTypes.indexOf('LineString') < 0\">\r\n {{'igo.geo.geometry.line' | translate}}\r\n </mat-button-toggle>\r\n <mat-button-toggle\r\n value=\"Polygon\"\r\n [disabled]=\"geometryTypes.indexOf('Polygon') < 0\">\r\n {{'igo.geo.geometry.polygon' | translate}}\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n</div>\r\n\r\n<mat-form-field *ngIf=\"drawGuideField\" class=\"draw-guide-field\">\r\n <input\r\n matInput\r\n type=\"number\"\r\n [placeholder]=\"drawGuidePlaceholder\"\r\n [(ngModel)]=\"drawGuide\">\r\n <mat-icon\r\n matPrefix\r\n [color]=\"'primary'\"\r\n svgIcon=\"adjust\"> \r\n </mat-icon>\r\n <span matSuffix class=\"draw-guide-units\">{{'igo.geo.measure.meters' | translate}}</span>\r\n</mat-form-field>", styles: [":host{display:block;width:100%}.geometry-type-toggle,.draw-guide-field{width:100%}.geometry-type-toggle{padding:10px;text-align:center}.draw-guide-field mat-icon{margin:0 10px}.draw-guide-units{padding:10px}\n"] }]
22852
23680
  }], function () { return [{ type: i0.ChangeDetectorRef }]; }, { formControl: [{
22853
23681
  type: Input
22854
23682
  }], map: [{
@@ -23015,7 +23843,7 @@ TimeFilterButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: T
23015
23843
  } }, changeDetection: 0 });
23016
23844
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimeFilterButtonComponent, [{
23017
23845
  type: Component,
23018
- args: [{ selector: 'igo-time-filter-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button *ngIf=\"header && options.timeFilterable && options.timeFilter\"\n mat-icon-button\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.filter.filterBy' | translate\"\n [color]=\"color\">\n <mat-icon [matBadge]=\"badge\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" svgIcon=\"history\"></mat-icon>\n</button>\n\n<div #ogcFilter class=\"igo-layer-actions-container\"\n*ngIf=\"header && options.timeFilterable && options.timeFilter\">\n <igo-time-filter-item\n *ngIf=\"timeFilterCollapse && options.timeFilter\"\n igoListItem\n [header]=\"false\"\n [layer]=\"layer\">\n </igo-time-filter-item>\n</div>\n" }]
23846
+ args: [{ selector: 'igo-time-filter-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button *ngIf=\"header && options.timeFilterable && options.timeFilter\"\r\n mat-icon-button\r\n collapsibleButton\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.filter.filterBy' | translate\"\r\n [color]=\"color\">\r\n <mat-icon [matBadge]=\"badge\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" svgIcon=\"history\"></mat-icon>\r\n</button>\r\n\r\n<div #ogcFilter class=\"igo-layer-actions-container\"\r\n*ngIf=\"header && options.timeFilterable && options.timeFilter\">\r\n <igo-time-filter-item\r\n *ngIf=\"timeFilterCollapse && options.timeFilter\"\r\n igoListItem\r\n [header]=\"false\"\r\n [layer]=\"layer\">\r\n </igo-time-filter-item>\r\n</div>\r\n" }]
23019
23847
  }], function () { return []; }, { layer: [{
23020
23848
  type: Input
23021
23849
  }], map: [{
@@ -23726,7 +24554,7 @@ TimeFilterFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Tim
23726
24554
  } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgModel, i9.MatOption, i2.MatIcon, i3.MatButton, i13$1.MatSlider, i23.MatSlideToggle, i13.MatFormField, i13.MatSuffix, i14.MatInput, i15.MatSelect, i4.MatTooltip, i12$2.MatDatetimepickerComponent, i12$2.MatDatetimepickerToggleComponent, i12$2.MatDatetimepickerInputDirective, i7.TranslatePipe], styles: [".igo-layer-filters-container[_ngcontent-%COMP%]{padding-left:5px}mat-slider[_ngcontent-%COMP%] div.mat-slider-thumb-label{width:32px;height:32px;margin:0 auto}mat-slider[_ngcontent-%COMP%] span.mat-slider-thumb-label-text{font-size:10px}#time-slider[_ngcontent-%COMP%]{width:70%;margin:0 auto}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){#time-slider[_ngcontent-%COMP%]{width:60%;margin:0 auto}}.date-below[_ngcontent-%COMP%]{margin:0}mat-form-field[_ngcontent-%COMP%]{text-align:center}mat-datetimepicker-toggle[_ngcontent-%COMP%] .mat-icon{padding-bottom:30px}.igo-layer-actions-container[_ngcontent-%COMP%] > .mat-slide-toggle[_ngcontent-%COMP%]{vertical-align:middle}.time-filter-mat-datetimepicker-toggle[_ngcontent-%COMP%] .mat-icon{width:auto}"] });
23727
24555
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimeFilterFormComponent, [{
23728
24556
  type: Component,
23729
- args: [{ selector: 'igo-time-filter-form', template: "<div *ngIf=\"style === 'calendar' && type !=='year'\">\n <div *ngIf=\"!isRange\" class=\"igo-col igo-col-100 igo-col-100-m\">\n <mat-form-field>\n <mat-datetimepicker-toggle class=\"time-filter-mat-datetimepicker-toggle\" [for]=\"datetimePicker\" matSuffix></mat-datetimepicker-toggle>\n <mat-datetimepicker #datetimePicker type=\"{{type}}\" openOnFocus=\"true\" timeInterval=\"5\"></mat-datetimepicker>\n <input matInput autocomplete=\"false\"\n placeholder=\"{{'igo.geo.timeFilter.date' | translate}}\"\n [matDatetimepicker]=\"datetimePicker\"\n [(ngModel)]=\"date\"\n [min]=\"min\"\n [max]=\"max\"\n readonly=\"readonly\"\n (dateChange)=\"handleDateChange($event)\">\n </mat-form-field>\n\n </div>\n\n <div *ngIf=\"isRange\">\n <div class=\"igo-col igo-col-100\">\n <mat-form-field>\n <mat-datetimepicker-toggle class=\"time-filter-mat-datetimepicker-toggle\" [for]=\"minDatetimePicker\" matSuffix></mat-datetimepicker-toggle>\n <mat-datetimepicker #minDatetimePicker type=\"{{type}}\" openOnFocus=\"true\" timeInterval=\"5\"></mat-datetimepicker>\n <input matInput autocomplete=\"false\"\n placeholder=\"{{'igo.geo.timeFilter.startDate' | translate}}\"\n [matDatetimepicker]=\"minDatetimePicker\"\n [(ngModel)]=\"startDate\"\n [min]=\"min\"\n [max]=\"getRangeMaxDate()\"\n readonly=\"readonly\"\n (input)=\"startDate\"\n (dateChange)=\"handleDateChange($event)\">\n </mat-form-field>\n </div>\n\n <div class=\"igo-col igo-col-100\">\n <mat-form-field>\n <mat-datetimepicker-toggle class=\"time-filter-mat-datetimepicker-toggle\" [for]=\"maxDatetimePicker\" matSuffix></mat-datetimepicker-toggle>\n <mat-datetimepicker #maxDatetimePicker type=\"{{type}}\" openOnFocus=\"true\" timeInterval=\"5\"></mat-datetimepicker>\n <input matInput autocomplete=\"false\"\n placeholder=\"{{'igo.geo.timeFilter.endDate' | translate}}\"\n [matDatetimepicker]=\"maxDatetimePicker\"\n [(ngModel)]=\"endDate\"\n [min]=\"getRangeMinDate()\"\n [max]=\"max\"\n readonly=\"readonly\"\n (dateChange)=\"handleDateChange($event)\">\n </mat-form-field>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"style === 'calendar' && type ==='year'\">\n\n <div *ngIf=\"!isRange\" class=\"igo-col igo-col-100 igo-col-100-m\">\n <mat-form-field>\n <mat-select placeholder=\"{{'igo.geo.timeFilter.date' | translate}}\" [(ngModel)]=\"year\" (selectionChange)=\"handleYearChange($event)\">\n <mat-option [value]=\"year\" *ngFor=\"let year of listYears\">{{year}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div *ngIf=\"isRange\">\n <div class=\"igo-col igo-col-100\">\n <mat-form-field>\n <mat-select placeholder=\"{{'igo.geo.timeFilter.startDate' | translate}}\" [(ngModel)]=\"startYear\" (selectionChange)=\"handleYearChange($event)\">\n <mat-option [value]=\"startYear\" *ngFor=\"let startYear of startListYears\">{{startYear}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-col igo-col-100\">\n <mat-form-field>\n <mat-select placeholder=\"{{'igo.geo.timeFilter.endDate' | translate}}\" [(ngModel)]=\"endYear\" (selectionChange)=\"handleYearChange($event)\">\n <mat-option [value]=\"endYear\" *ngFor=\"let endYear of endListYears\">{{endYear}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n</div>\n\n\n <br>\n <div *ngIf=\"!isRange && style === 'slider' && type === 'year'\" class=\"igo-col igo-col-100 igo-col-100-m mat-typography\">\n <span>{{startYear}}</span>\n <mat-slider\n id=\"time-slider\"\n tickInterval=\"auto\"\n step=\"{{step}}\"\n [min]=\"startYear\"\n [max]=\"endYear\"\n [value]=\"handleSliderValue()\"\n [color]=\"color\"\n thumbLabel\n (input)=\"handleSliderYearChange($event)\"\n (change)=\"handleSliderYearChange($event)\"\n [disabled]= \"!options.enabled || !layer.visible\">\n </mat-slider>\n <span>{{endYear}}</span>\n <p *ngIf= \"options.enabled\" class=\"date-below\">{{year}}</p>\n <div #actions class=\"igo-layer-actions-container\">\n <mat-slide-toggle (change)=\"toggleFilterState()\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.filter.toggleFilterState' | translate\" [color]=\"color\" [checked]=\"options.enabled\"\n [disabled]=\"!layer.visible\">\n </mat-slide-toggle>\n <button [disabled]= \"!options.enabled || !layer.visible\" mat-icon-button color=\"primary\" (click)=\"playYear($event)\">\n <mat-icon svgIcon=\"{{playIcon}}\"></mat-icon>\n </button>\n <button [disabled]=\"!options.enabled || !layer.visible\" mat-icon-button color=\"primary\" (click)=\"resetFilter($event)\">\n <mat-icon svgIcon=\"{{resetIcon}}\"></mat-icon>\n </button>\n </div>\n </div>\n\n<div *ngIf=\"style === 'slider' && type !== 'year'\" class=\"igo-col igo-col-100 igo-col-100-m\">\n <mat-slider\n id=\"time-slider\"\n tickInterval=\"auto\"\n step=\"{{step}}\"\n [min]=\"dateToNumber(min)\"\n [max]=\"dateToNumber(max)\"\n [value]=\"handleSliderValue()\"\n thumbLabel\n (input)=\"handleSliderDateChange($event)\"\n (selectionChange)=\"handleSliderDateChange($event)\">\n </mat-slider>\n <p class=\"date-below\">{{handleSliderTooltip()}}</p>\n <button mat-icon-button color=\"primary\" (click)=\"playFilter($event)\">\n <mat-icon svgIcon=\"{{playIcon}}\"></mat-icon>\n </button>\n</div>\n", styles: [".igo-layer-filters-container{padding-left:5px}mat-slider ::ng-deep div.mat-slider-thumb-label{width:32px;height:32px;margin:0 auto}mat-slider ::ng-deep span.mat-slider-thumb-label-text{font-size:10px}#time-slider{width:70%;margin:0 auto}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){#time-slider{width:60%;margin:0 auto}}.date-below{margin:0}mat-form-field{text-align:center}mat-datetimepicker-toggle ::ng-deep .mat-icon{padding-bottom:30px}.igo-layer-actions-container>.mat-slide-toggle{vertical-align:middle}.time-filter-mat-datetimepicker-toggle ::ng-deep .mat-icon{width:auto}\n"] }]
24557
+ args: [{ selector: 'igo-time-filter-form', template: "<div *ngIf=\"style === 'calendar' && type !=='year'\">\r\n <div *ngIf=\"!isRange\" class=\"igo-col igo-col-100 igo-col-100-m\">\r\n <mat-form-field>\r\n <mat-datetimepicker-toggle class=\"time-filter-mat-datetimepicker-toggle\" [for]=\"datetimePicker\" matSuffix></mat-datetimepicker-toggle>\r\n <mat-datetimepicker #datetimePicker type=\"{{type}}\" openOnFocus=\"true\" timeInterval=\"5\"></mat-datetimepicker>\r\n <input matInput autocomplete=\"false\"\r\n placeholder=\"{{'igo.geo.timeFilter.date' | translate}}\"\r\n [matDatetimepicker]=\"datetimePicker\"\r\n [(ngModel)]=\"date\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n readonly=\"readonly\"\r\n (dateChange)=\"handleDateChange($event)\">\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <div *ngIf=\"isRange\">\r\n <div class=\"igo-col igo-col-100\">\r\n <mat-form-field>\r\n <mat-datetimepicker-toggle class=\"time-filter-mat-datetimepicker-toggle\" [for]=\"minDatetimePicker\" matSuffix></mat-datetimepicker-toggle>\r\n <mat-datetimepicker #minDatetimePicker type=\"{{type}}\" openOnFocus=\"true\" timeInterval=\"5\"></mat-datetimepicker>\r\n <input matInput autocomplete=\"false\"\r\n placeholder=\"{{'igo.geo.timeFilter.startDate' | translate}}\"\r\n [matDatetimepicker]=\"minDatetimePicker\"\r\n [(ngModel)]=\"startDate\"\r\n [min]=\"min\"\r\n [max]=\"getRangeMaxDate()\"\r\n readonly=\"readonly\"\r\n (input)=\"startDate\"\r\n (dateChange)=\"handleDateChange($event)\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-col igo-col-100\">\r\n <mat-form-field>\r\n <mat-datetimepicker-toggle class=\"time-filter-mat-datetimepicker-toggle\" [for]=\"maxDatetimePicker\" matSuffix></mat-datetimepicker-toggle>\r\n <mat-datetimepicker #maxDatetimePicker type=\"{{type}}\" openOnFocus=\"true\" timeInterval=\"5\"></mat-datetimepicker>\r\n <input matInput autocomplete=\"false\"\r\n placeholder=\"{{'igo.geo.timeFilter.endDate' | translate}}\"\r\n [matDatetimepicker]=\"maxDatetimePicker\"\r\n [(ngModel)]=\"endDate\"\r\n [min]=\"getRangeMinDate()\"\r\n [max]=\"max\"\r\n readonly=\"readonly\"\r\n (dateChange)=\"handleDateChange($event)\">\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"style === 'calendar' && type ==='year'\">\r\n\r\n <div *ngIf=\"!isRange\" class=\"igo-col igo-col-100 igo-col-100-m\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'igo.geo.timeFilter.date' | translate}}\" [(ngModel)]=\"year\" (selectionChange)=\"handleYearChange($event)\">\r\n <mat-option [value]=\"year\" *ngFor=\"let year of listYears\">{{year}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div *ngIf=\"isRange\">\r\n <div class=\"igo-col igo-col-100\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'igo.geo.timeFilter.startDate' | translate}}\" [(ngModel)]=\"startYear\" (selectionChange)=\"handleYearChange($event)\">\r\n <mat-option [value]=\"startYear\" *ngFor=\"let startYear of startListYears\">{{startYear}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-col igo-col-100\">\r\n <mat-form-field>\r\n <mat-select placeholder=\"{{'igo.geo.timeFilter.endDate' | translate}}\" [(ngModel)]=\"endYear\" (selectionChange)=\"handleYearChange($event)\">\r\n <mat-option [value]=\"endYear\" *ngFor=\"let endYear of endListYears\">{{endYear}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n</div>\r\n\r\n\r\n <br>\r\n <div *ngIf=\"!isRange && style === 'slider' && type === 'year'\" class=\"igo-col igo-col-100 igo-col-100-m mat-typography\">\r\n <span>{{startYear}}</span>\r\n <mat-slider\r\n id=\"time-slider\"\r\n tickInterval=\"auto\"\r\n step=\"{{step}}\"\r\n [min]=\"startYear\"\r\n [max]=\"endYear\"\r\n [value]=\"handleSliderValue()\"\r\n [color]=\"color\"\r\n thumbLabel\r\n (input)=\"handleSliderYearChange($event)\"\r\n (change)=\"handleSliderYearChange($event)\"\r\n [disabled]= \"!options.enabled || !layer.visible\">\r\n </mat-slider>\r\n <span>{{endYear}}</span>\r\n <p *ngIf= \"options.enabled\" class=\"date-below\">{{year}}</p>\r\n <div #actions class=\"igo-layer-actions-container\">\r\n <mat-slide-toggle (change)=\"toggleFilterState()\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.filter.toggleFilterState' | translate\" [color]=\"color\" [checked]=\"options.enabled\"\r\n [disabled]=\"!layer.visible\">\r\n </mat-slide-toggle>\r\n <button [disabled]= \"!options.enabled || !layer.visible\" mat-icon-button color=\"primary\" (click)=\"playYear($event)\">\r\n <mat-icon svgIcon=\"{{playIcon}}\"></mat-icon>\r\n </button>\r\n <button [disabled]=\"!options.enabled || !layer.visible\" mat-icon-button color=\"primary\" (click)=\"resetFilter($event)\">\r\n <mat-icon svgIcon=\"{{resetIcon}}\"></mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n<div *ngIf=\"style === 'slider' && type !== 'year'\" class=\"igo-col igo-col-100 igo-col-100-m\">\r\n <mat-slider\r\n id=\"time-slider\"\r\n tickInterval=\"auto\"\r\n step=\"{{step}}\"\r\n [min]=\"dateToNumber(min)\"\r\n [max]=\"dateToNumber(max)\"\r\n [value]=\"handleSliderValue()\"\r\n thumbLabel\r\n (input)=\"handleSliderDateChange($event)\"\r\n (selectionChange)=\"handleSliderDateChange($event)\">\r\n </mat-slider>\r\n <p class=\"date-below\">{{handleSliderTooltip()}}</p>\r\n <button mat-icon-button color=\"primary\" (click)=\"playFilter($event)\">\r\n <mat-icon svgIcon=\"{{playIcon}}\"></mat-icon>\r\n </button>\r\n</div>\r\n", styles: [".igo-layer-filters-container{padding-left:5px}mat-slider ::ng-deep div.mat-slider-thumb-label{width:32px;height:32px;margin:0 auto}mat-slider ::ng-deep span.mat-slider-thumb-label-text{font-size:10px}#time-slider{width:70%;margin:0 auto}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){#time-slider{width:60%;margin:0 auto}}.date-below{margin:0}mat-form-field{text-align:center}mat-datetimepicker-toggle ::ng-deep .mat-icon{padding-bottom:30px}.igo-layer-actions-container>.mat-slide-toggle{vertical-align:middle}.time-filter-mat-datetimepicker-toggle ::ng-deep .mat-icon{width:auto}\n"] }]
23730
24558
  }], function () { return [{ type: i9.DateAdapter }]; }, { layer: [{
23731
24559
  type: Input
23732
24560
  }], options: [{
@@ -23850,7 +24678,7 @@ TimeFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Tim
23850
24678
  } }, styles: ["[_nghost-%COMP%]{overflow:hidden}.igo-datasource-filters-container[_ngcontent-%COMP%]{text-align:center;width:100%;display:inline-block;padding-top:5px}.igo-layer-legend-container[_ngcontent-%COMP%]{padding-left:1.125em;width:calc(100% - 18px)}"] });
23851
24679
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimeFilterItemComponent, [{
23852
24680
  type: Component,
23853
- args: [{ selector: 'igo-time-filter-item', template: "<mat-list-item *ngIf=\"header\">\n <mat-icon\n class=\"igo-chevron\"\n mat-list-avatar\n igoCollapse\n [target]=\"filters\"\n [collapsed]=\"filtersCollapsed\"\n (click)=\"toggleFiltersCollapsed()\"\n svgIcon=\"chevron-up\" >\n </mat-icon>\n <h4 (click)=\"toggleLegendOnClick()\" [ngStyle]=\"{'cursor': filtersCollapsed ? 'default' : 'pointer'}\" matLine>{{layer.title}}</h4>\n \n <button *ngIf=\"header\"\n mat-icon-button\n [color]=\"layer.visible ? 'primary' : 'default'\"\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"layer.visible ?\n ('igo.geo.layer.hideLayer' | translate) :\n ('igo.geo.layer.showLayer' | translate)\"\n (click)=\"layer.visible = !layer.visible\">\n <mat-icon\n [ngClass]=\"{disabled: (inResolutionRange$ | async)===false}\"\n [svgIcon]=\"layer.visible ? 'eye' : 'eye-off'\">\n </mat-icon>\n </button>\n\n</mat-list-item>\n\n<div #filters class=\"igo-datasource-filters-container\">\n <div #legend class=\"igo-layer-legend-container\">\n <igo-layer-legend *ngIf=\"showLegend$ | async\" [layer]=\"layer\">\n </igo-layer-legend>\n </div>\n <igo-time-filter-form\n [layer]= \"layer\"\n [options]=\"datasource.options.timeFilter\"\n [currentValue]=\"datasource.options.params.TIME\"\n (change)=\"handleDateChange($event)\"\n (yearChange)=\"handleYearChange($event)\">\n </igo-time-filter-form>\n</div>\n", styles: [":host{overflow:hidden}.igo-datasource-filters-container{text-align:center;width:100%;display:inline-block;padding-top:5px}.igo-layer-legend-container{padding-left:1.125em;width:calc(100% - 18px)}\n"] }]
24681
+ args: [{ selector: 'igo-time-filter-item', template: "<mat-list-item *ngIf=\"header\">\r\n <mat-icon\r\n class=\"igo-chevron\"\r\n mat-list-avatar\r\n igoCollapse\r\n [target]=\"filters\"\r\n [collapsed]=\"filtersCollapsed\"\r\n (click)=\"toggleFiltersCollapsed()\"\r\n svgIcon=\"chevron-up\" >\r\n </mat-icon>\r\n <h4 (click)=\"toggleLegendOnClick()\" [ngStyle]=\"{'cursor': filtersCollapsed ? 'default' : 'pointer'}\" matLine>{{layer.title}}</h4>\r\n \r\n <button *ngIf=\"header\"\r\n mat-icon-button\r\n [color]=\"layer.visible ? 'primary' : 'default'\"\r\n collapsibleButton\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"layer.visible ?\r\n ('igo.geo.layer.hideLayer' | translate) :\r\n ('igo.geo.layer.showLayer' | translate)\"\r\n (click)=\"layer.visible = !layer.visible\">\r\n <mat-icon\r\n [ngClass]=\"{disabled: (inResolutionRange$ | async)===false}\"\r\n [svgIcon]=\"layer.visible ? 'eye' : 'eye-off'\">\r\n </mat-icon>\r\n </button>\r\n\r\n</mat-list-item>\r\n\r\n<div #filters class=\"igo-datasource-filters-container\">\r\n <div #legend class=\"igo-layer-legend-container\">\r\n <igo-layer-legend *ngIf=\"showLegend$ | async\" [layer]=\"layer\">\r\n </igo-layer-legend>\r\n </div>\r\n <igo-time-filter-form\r\n [layer]= \"layer\"\r\n [options]=\"datasource.options.timeFilter\"\r\n [currentValue]=\"datasource.options.params.TIME\"\r\n (change)=\"handleDateChange($event)\"\r\n (yearChange)=\"handleYearChange($event)\">\r\n </igo-time-filter-form>\r\n</div>\r\n", styles: [":host{overflow:hidden}.igo-datasource-filters-container{text-align:center;width:100%;display:inline-block;padding-top:5px}.igo-layer-legend-container{padding-left:1.125em;width:calc(100% - 18px)}\n"] }]
23854
24682
  }], function () { return [{ type: TimeFilterService }]; }, { header: [{
23855
24683
  type: Input
23856
24684
  }], layer: [{
@@ -23889,7 +24717,7 @@ TimeFilterListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Tim
23889
24717
  } }, encapsulation: 2, changeDetection: 0 });
23890
24718
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimeFilterListComponent, [{
23891
24719
  type: Component,
23892
- args: [{ selector: 'igo-time-filter-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-list [navigation]=\"false\" [selection]=\"false\">\n <ng-template ngFor let-layer [ngForOf]=\"layers | filterableDataSource: 'time'\">\n <igo-time-filter-item [header]=\"true\" igoListItem [layer]=\"layer\"></igo-time-filter-item>\n </ng-template>\n</igo-list>\n" }]
24720
+ args: [{ selector: 'igo-time-filter-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-list [navigation]=\"false\" [selection]=\"false\">\r\n <ng-template ngFor let-layer [ngForOf]=\"layers | filterableDataSource: 'time'\">\r\n <igo-time-filter-item [header]=\"true\" igoListItem [layer]=\"layer\"></igo-time-filter-item>\r\n </ng-template>\r\n</igo-list>\r\n" }]
23893
24721
  }], function () { return [{ type: i0.ChangeDetectorRef }]; }, { layers: [{
23894
24722
  type: Input
23895
24723
  }] }); })();
@@ -23924,7 +24752,7 @@ TimeFilterListBindingDirective.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ ty
23924
24752
  class WktService {
23925
24753
  constructor() { }
23926
24754
  wktToFeature(wkt, wktProj, featureProj) {
23927
- return new olWKT().readFeature(wkt, {
24755
+ return new olFormatWKT().readFeature(wkt, {
23928
24756
  dataProjection: wktProj,
23929
24757
  featureProjection: featureProj
23930
24758
  });
@@ -23932,22 +24760,22 @@ class WktService {
23932
24760
  extentToWkt(epsgTO, extent, extentProj) {
23933
24761
  let currentExtent = olproj.transformExtent(extent, extentProj, epsgTO);
23934
24762
  currentExtent = this.roundCoordinateArray(currentExtent, epsgTO, 0);
23935
- const wktPoly = `POLYGON((
23936
- ${extent[0]} ${extent[1]},
23937
- ${extent[0]} ${extent[3]},
23938
- ${extent[2]} ${extent[3]},
23939
- ${extent[2]} ${extent[1]},
24763
+ const wktPoly = `POLYGON((
24764
+ ${extent[0]} ${extent[1]},
24765
+ ${extent[0]} ${extent[3]},
24766
+ ${extent[2]} ${extent[3]},
24767
+ ${extent[2]} ${extent[1]},
23940
24768
  ${extent[0]} ${extent[1]}))`;
23941
- const wktLine = `LINESTRING(
23942
- ${extent[0]} ${extent[1]},
23943
- ${extent[0]} ${extent[3]},
23944
- ${extent[2]} ${extent[3]},
23945
- ${extent[2]} ${extent[1]},
24769
+ const wktLine = `LINESTRING(
24770
+ ${extent[0]} ${extent[1]},
24771
+ ${extent[0]} ${extent[3]},
24772
+ ${extent[2]} ${extent[3]},
24773
+ ${extent[2]} ${extent[1]},
23946
24774
  ${extent[0]} ${extent[1]})`;
23947
- const wktMultiPoints = `MULTIPOINT(
23948
- ${extent[0]} ${extent[1]},
23949
- ${extent[0]} ${extent[3]},
23950
- ${extent[2]} ${extent[3]},
24775
+ const wktMultiPoints = `MULTIPOINT(
24776
+ ${extent[0]} ${extent[1]},
24777
+ ${extent[0]} ${extent[3]},
24778
+ ${extent[2]} ${extent[3]},
23951
24779
  ${extent[2]} ${extent[1]})`;
23952
24780
  return {
23953
24781
  wktPoly,
@@ -24782,7 +25610,7 @@ OgcFilterFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcF
24782
25610
  } }, styles: ["[_nghost-%COMP%]{width:100%;padding:5px 10px} .mat-form-field .mat-icon svg{width:1em;height:1em;color:#d3d3d3}.mat-form-field[_ngcontent-%COMP%]{width:100%}.mat-select-arrow[_ngcontent-%COMP%]{visibility:hidden}.mat-slide-toggle[_ngcontent-%COMP%]{margin-top:10px}.logical[_ngcontent-%COMP%]{flex-flow:column nowrap;width:10%;max-width:45px;margin-left:5px}.logicalHidden[_ngcontent-%COMP%]{flex-flow:column nowrap;width:10%;visibility:hidden;max-width:45px;margin-left:5px} .logical .mat-select-arrow{visibility:hidden} .logicalHidden .mat-select-arrow{visibility:hidden}.field[_ngcontent-%COMP%]{width:20%} .field .mat-select-arrow{visibility:hidden}.operator[_ngcontent-%COMP%]{width:12%;margin-left:10px;text-align:center} .operator .mat-select-arrow{visibility:hidden}.spatialSelector[_ngcontent-%COMP%]{width:15%;margin-left:5px} .spatialSelector .mat-select-arrow{visibility:hidden}.singleInput[_ngcontent-%COMP%]{width:30%;margin-left:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.singleInput[_ngcontent-%COMP%]{width:27%}}.snrc[_ngcontent-%COMP%]{width:20%;margin-left:5px} .singleInput .mat-select-arrow{visibility:hidden}.dualInput[_ngcontent-%COMP%]{width:20%;margin-left:5px} .dualInput .mat-select-arrow{visibility:hidden}.igo-layer-button-group[_ngcontent-%COMP%]{display:flex;float:right;padding-top:5px}.container[_ngcontent-%COMP%]{display:flex}"] });
24783
25611
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterFormComponent, [{
24784
25612
  type: Component,
24785
- args: [{ selector: 'igo-ogc-filter-form', template: "<mat-checkbox\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.filter.toggleFilterState' | translate\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleFilterState($event)\"\n [checked]=\"currentFilter.active\">\n</mat-checkbox>\n\n<mat-form-field\n [ngClass]=\"{'logical': activeFilters.indexOf(currentFilter) !== 0 && currentFilter.active===true, 'logicalHidden': activeFilters.indexOf(currentFilter) === 0 || currentFilter.active!==true}\">\n <mat-select\n [disabled]=\"!currentFilter.active\"\n [value]=\"currentFilter.parentLogical\"\n tooltip-position=\"above\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"currentFilter.parentLogical ? (('igo.geo.operators.tooltip.'+ currentFilter.parentLogical) | translate) : ''\"\n (selectionChange)=\"changeLogical($event.value)\">\n <mat-option\n [value]=ogcFilterOperator.And\n tooltip-position=\"above\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.operators.tooltip.And' | translate\">\n {{'igo.geo.operators.And' | translate}}\n </mat-option>\n <mat-option\n [value]=ogcFilterOperator.Or\n tooltip-position=\"above\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.operators.tooltip.Or' | translate\">\n {{'igo.geo.operators.Or' | translate}}\n </mat-option>\n </mat-select>\n</mat-form-field>\n\n<mat-form-field\n class=\"field\"\n *ngIf=\"(currentFilterIsSpatial$ | async)===false && (fields$ | async) && (fields$| async).length > 0 && (fields$| async)[0].name !== ''\"\n (mouseenter)=\"inputClearable = 'selectField'\"\n (mouseleave)=\"inputClearable = undefined\"\n [floatLabel]=\"floatLabel\">\n <input\n matInput\n [placeholder]=\"'igo.geo.sourceFields.selectField' | translate\"\n [disabled]=\"!currentFilter.active\"\n [matAutocomplete]=\"autoCompleteField\"\n [value]=\"(selectedField$ | async) ? (selectedField$ | async).alias : ''\"\n tooltip-position=\"above\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"(selectedField$ | async) ? (selectedField$ | async).alias : ('igo.geo.sourceFields.selectField' | translate)\"\n (input)=\"updateFieldsList($event.target.value)\">\n <mat-autocomplete #autoCompleteField=\"matAutocomplete\"\n (optionSelected)='changeField($event.option.id)'>\n <mat-option\n *ngFor=\"let field of filteredFields$ | async\"\n matTooltipShowDelay=\"500\"\n [value]=\"field.alias\"\n [id]=\"field.name\"\n [matTooltip]=\"field.alias\">\n {{field.alias}}\n </mat-option>\n </mat-autocomplete>\n <button mat-button\n *ngIf=\"currentFilter.propertyName && inputClearable === 'selectField' && currentFilter.active\"\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n [disabled]=\"!currentFilter.active\"\n (click)=\"clearSelectedField()\">\n <mat-icon svgIcon=\"close\"></mat-icon>\n </button>\n</mat-form-field>\n\n\n<mat-form-field\n [ngClass]=\"{'operator': (currentFilterIsSpatial$ | async)===false , 'dualInput': (currentFilterIsSpatial$ | async)}\"\n [floatLabel]=\"floatLabel\">\n <mat-select\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"currentFilter.operator ? (('igo.geo.operators.tooltip.'+ currentFilter.operator) | translate) : ('igo.geo.filter.selectOperator' | translate)\"\n [disabled]=\"!currentFilter.active\"\n [value]=\"currentFilter.operator\"\n (selectionChange)=\"changeOperator($event.value)\">\n <mat-option\n *ngFor=\"let operator of (ogcFilterOperators$ | async) | keyvalue\"\n tooltip-position=\"above\"\n matTooltipShowDelay=\"500\"\n [value]=\"operator.key\"\n [matTooltip]=\"('igo.geo.operators.tooltip.'+ operator.key) | translate\">\n {{('igo.geo.operators.'+ operator.key) | translate}}\n </mat-option>\n </mat-select>\n</mat-form-field>\n\n<mat-form-field\nclass=\"spatialSelector\"\n*ngIf=\"currentFilterIsSpatial$ | async\">\n <mat-select\n [disabled]=\"!currentFilter.active\"\n [value]=\"currentFilter.igoSpatialSelector\"\n (selectionChange)=\"changeSpatialSelector($event.value)\">\n <mat-option\n *ngFor=\"let igoSpatialSelector of igoSpatialSelectors\"\n [value]=\"igoSpatialSelector.type\">\n {{('igo.geo.spatialSelector.'+ igoSpatialSelector.type) | translate}}\n </mat-option>\n </mat-select>\n</mat-form-field>\n\n<mat-form-field\nclass=\"singleInput\"\n*ngIf=\"['expression','pattern'].indexOf(detectProperty()) !== -1\"\n(mouseenter)=\"inputClearable = 'selectProperty'\"\n(mouseleave)=\"inputClearable = undefined\"\n[floatLabel]=\"floatLabel\">\n <input\n matInput\n [placeholder]=\"'igo.geo.filter.placeholder' | translate\"\n [disabled]=\"!currentFilter.active\"\n [matAutocomplete]=\"autoCompleteValues\"\n [value]=\"detectProperty() === 'expression' ? currentFilter.expression : currentFilter.pattern\"\n tooltip-position=\"above\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"detectProperty() === 'expression' ? currentFilter.expression || '' : currentFilter.pattern || ''\"\n (input)=\"updateValuesList($event.target.value)\">\n <mat-autocomplete #autoCompleteValues=\"matAutocomplete\"\n (optionSelected)=\"changeProperty($event.option.value)\">\n <mat-option\n *ngFor=\"let value of filteredValues$ | async\"\n matTooltipShowDelay=\"500\"\n [value]=\"value\"\n [matTooltip]=\"value\">\n {{value}}\n </mat-option>\n </mat-autocomplete>\n <button mat-button\n *ngIf=\"isClearable() && inputClearable === 'selectProperty' && currentFilter.active\"\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n [disabled]=\"!currentFilter.active\"\n (click)=\"clearProperty()\">\n <mat-icon svgIcon=\"close\"></mat-icon>\n </button>\n</mat-form-field>\n\n<div class=\"igo-layer-button-group\">\n <button\n mat-icon-button\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.filter.removeFilter' | translate\"\n color=\"warn\"\n (click)=\"deleteFilter()\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n</div>\n\n<mat-form-field\nclass=\"snrc\"\n*ngIf=\"(currentFilterIsSpatial$ | async) && currentFilter.igoSpatialSelector === 'snrc'\"\n(mouseenter)=\"inputClearable = 'selectSNRC'\"\n(mouseleave)=\"inputClearable = undefined\"\n[floatLabel]=\"floatLabel\">\n <input\n matInput\n [placeholder]=\"'igo.geo.filter.placeholderSnrc' | translate\"\n [value]=\"currentFilter.igoSNRC\"\n tooltip-position=\"above\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"currentFilter.igoSNRC ? currentFilter.igoSNRC : ''\"\n (input)=\"changeSNRC($event.target.value)\">\n <button\n mat-button\n *ngIf=\"currentFilter.igoSNRC\"\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n [disabled]=\"!currentFilter.active && inputClearable === 'selectSNRC' && currentFilter.active\"\n (click)=\"currentFilter.igoSNRC=''\">\n <mat-icon svgIcon=\"close\"></mat-icon>\n </button>\n </mat-form-field>\n\n <ng-container *ngIf=\"(currentFilterIsSpatial$ | async) && currentFilter.igoSpatialSelector === 'fixedExtent'\">\n <button\n mat-button\n [disabled]=\"!currentFilter.active\"\n *ngIf=\"currentFilter.igoSpatialSelector === 'fixedExtent'\"\n matSuffix\n mat-icon-button\n [disabled]=\"!currentFilter.active\"\n (click)=\"changeMapExtentGeometry()\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.spatialSelector.btnSetExtent' | translate\">\n <mat-icon svgIcon=\"arrow-expand-all\"></mat-icon>\n </button>\n</ng-container>\n\n<br/>\n\n<mat-form-field\nclass=\"dualInput\"\n*ngIf=\"!isTemporalOperator() && ['lowerBoundary','begin'].indexOf(detectProperty(1)) !== -1\"\n(mouseenter)=\"inputClearable = 'selectProperty1'\"\n(mouseleave)=\"inputClearable = undefined\"\n[floatLabel]=\"floatLabel\">\n <input\n matInput\n [placeholder]=\"'igo.geo.filter.placeholder' | translate\"\n [disabled]=\"!currentFilter.active\"\n [matAutocomplete]=\"autoDualValueOperator1\"\n type=\"number\"\n [value]=\"detectProperty(1) === 'lowerBoundary' ? currentFilter.lowerBoundary : currentFilter.begin\"\n (input)=\"updateValuesList($event.target.value,1)\">\n <mat-autocomplete #autoDualValueOperator1=\"matAutocomplete\"\n (optionSelected)=\"changeNumericProperty($event.option.value,1)\">\n <mat-option\n *ngFor=\"let value of filteredValues$ | async\"\n matTooltipShowDelay=\"500\"\n [value]=\"value\"\n [matTooltip]=\"value\">\n {{value}}\n </mat-option>\n </mat-autocomplete>\n <button mat-button\n *ngIf=\"isClearable(1) && inputClearable === 'selectProperty1' && currentFilter.active\"\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n [disabled]=\"!currentFilter.active\"\n (click)=\"clearProperty(1)\">\n <mat-icon svgIcon=\"close\"></mat-icon>\n </button>\n</mat-form-field>\n\n<mat-form-field\n class=\"dualInput\"\n *ngIf=\"!isTemporalOperator() && ['upperBoundary','end'].indexOf(detectProperty(2)) !== -1\"\n (mouseenter)=\"inputClearable = 'selectProperty2'\"\n (mouseleave)=\"inputClearable = undefined\"\n [floatLabel]=\"floatLabel\">\n <input\n matInput\n [placeholder]=\"'igo.geo.filter.placeholder' | translate\"\n [disabled]=\"!currentFilter.active\"\n [matAutocomplete]=\"autoDualValueOperator2\"\n type=\"number\"\n [value]=\"detectProperty(2) === 'upperBoundary' ? currentFilter.upperBoundary : currentFilter.end\"\n (input)=\"updateValuesList($event.target.value,2)\">\n <mat-autocomplete #autoDualValueOperator2=\"matAutocomplete\"\n (optionSelected)=\"changeNumericProperty($event.option.value,2)\">\n <mat-option\n *ngFor=\"let value of filteredValues$ | async\"\n matTooltipShowDelay=\"500\"\n [value]=\"value\"\n [matTooltip]=\"value\">\n {{value}}\n </mat-option>\n </mat-autocomplete>\n <button mat-button\n *ngIf=\"isClearable(2) && inputClearable === 'selectProperty2' && currentFilter.active\"\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n [disabled]=\"!currentFilter.active\"\n (click)=\"clearProperty(2)\">\n <mat-icon svgIcon=\"close\"></mat-icon>\n </button>\n</mat-form-field>\n\n<igo-ogc-filter-time *ngIf=\"isTemporalOperator()\"\n [(datasource)]=\"datasource\"\n [(currentFilter)]=\"currentFilter\"\n (changeProperty)=\"changeProperty($event.value, $event.pos)\">\n</igo-ogc-filter-time>\n\n<!--\nTODO C'EST PERTINENT je crois\n<mat-form-field class=\"field\" *ngIf=\"!(currentFilterIsSpatial$ | async) && (fields$| async) && (fields$| async).length === 1 && (fields$| async)[0].name === ''\">\n<input [disabled]=\"!currentFilter.active\" matInput #fieldPerUser (keyup)=\"changeProperty(currentFilter,'propertyName',fieldPerUser.value)\"\n (blur)=\"changeProperty(currentFilter,'propertyName',fieldPerUser.value)\" [(ngModel)]=\"currentFilter.propertyName\">\n<button mat-button *ngIf=\"currentFilter.propertyName\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"currentFilter.propertyName=''\">\n <mat-icon svgIcon=\"close\"></mat-icon>\n</button>\n</mat-form-field>\n\n\n\n<mat-checkbox labelPosition='before' (change)=\"changeCaseSensitive($event)\" [(ngModel)]=\"currentFilter.matchCase\">\n {{('igo.geo.operators.caseSensitive') | translate}}\n</mat-checkbox>\n\n</mat-list-item> -->\n", styles: [":host{width:100%;padding:5px 10px}::ng-deep .mat-form-field .mat-icon svg{width:1em;height:1em;color:#d3d3d3}.mat-form-field{width:100%}.mat-select-arrow{visibility:hidden}.mat-slide-toggle{margin-top:10px}.logical{flex-flow:column nowrap;width:10%;max-width:45px;margin-left:5px}.logicalHidden{flex-flow:column nowrap;width:10%;visibility:hidden;max-width:45px;margin-left:5px}::ng-deep .logical .mat-select-arrow{visibility:hidden}::ng-deep .logicalHidden .mat-select-arrow{visibility:hidden}.field{width:20%}::ng-deep .field .mat-select-arrow{visibility:hidden}.operator{width:12%;margin-left:10px;text-align:center}::ng-deep .operator .mat-select-arrow{visibility:hidden}.spatialSelector{width:15%;margin-left:5px}::ng-deep .spatialSelector .mat-select-arrow{visibility:hidden}.singleInput{width:30%;margin-left:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.singleInput{width:27%}}.snrc{width:20%;margin-left:5px}::ng-deep .singleInput .mat-select-arrow{visibility:hidden}.dualInput{width:20%;margin-left:5px}::ng-deep .dualInput .mat-select-arrow{visibility:hidden}.igo-layer-button-group{display:flex;float:right;padding-top:5px}.container{display:flex}\n"] }]
25613
+ args: [{ selector: 'igo-ogc-filter-form', template: "<mat-checkbox\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.filter.toggleFilterState' | translate\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"toggleFilterState($event)\"\r\n [checked]=\"currentFilter.active\">\r\n</mat-checkbox>\r\n\r\n<mat-form-field\r\n [ngClass]=\"{'logical': activeFilters.indexOf(currentFilter) !== 0 && currentFilter.active===true, 'logicalHidden': activeFilters.indexOf(currentFilter) === 0 || currentFilter.active!==true}\">\r\n <mat-select\r\n [disabled]=\"!currentFilter.active\"\r\n [value]=\"currentFilter.parentLogical\"\r\n tooltip-position=\"above\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"currentFilter.parentLogical ? (('igo.geo.operators.tooltip.'+ currentFilter.parentLogical) | translate) : ''\"\r\n (selectionChange)=\"changeLogical($event.value)\">\r\n <mat-option\r\n [value]=ogcFilterOperator.And\r\n tooltip-position=\"above\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.operators.tooltip.And' | translate\">\r\n {{'igo.geo.operators.And' | translate}}\r\n </mat-option>\r\n <mat-option\r\n [value]=ogcFilterOperator.Or\r\n tooltip-position=\"above\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.operators.tooltip.Or' | translate\">\r\n {{'igo.geo.operators.Or' | translate}}\r\n </mat-option>\r\n </mat-select>\r\n</mat-form-field>\r\n\r\n<mat-form-field\r\n class=\"field\"\r\n *ngIf=\"(currentFilterIsSpatial$ | async)===false && (fields$ | async) && (fields$| async).length > 0 && (fields$| async)[0].name !== ''\"\r\n (mouseenter)=\"inputClearable = 'selectField'\"\r\n (mouseleave)=\"inputClearable = undefined\"\r\n [floatLabel]=\"floatLabel\">\r\n <input\r\n matInput\r\n [placeholder]=\"'igo.geo.sourceFields.selectField' | translate\"\r\n [disabled]=\"!currentFilter.active\"\r\n [matAutocomplete]=\"autoCompleteField\"\r\n [value]=\"(selectedField$ | async) ? (selectedField$ | async).alias : ''\"\r\n tooltip-position=\"above\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"(selectedField$ | async) ? (selectedField$ | async).alias : ('igo.geo.sourceFields.selectField' | translate)\"\r\n (input)=\"updateFieldsList($event.target.value)\">\r\n <mat-autocomplete #autoCompleteField=\"matAutocomplete\"\r\n (optionSelected)='changeField($event.option.id)'>\r\n <mat-option\r\n *ngFor=\"let field of filteredFields$ | async\"\r\n matTooltipShowDelay=\"500\"\r\n [value]=\"field.alias\"\r\n [id]=\"field.name\"\r\n [matTooltip]=\"field.alias\">\r\n {{field.alias}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <button mat-button\r\n *ngIf=\"currentFilter.propertyName && inputClearable === 'selectField' && currentFilter.active\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n [disabled]=\"!currentFilter.active\"\r\n (click)=\"clearSelectedField()\">\r\n <mat-icon svgIcon=\"close\"></mat-icon>\r\n </button>\r\n</mat-form-field>\r\n\r\n\r\n<mat-form-field\r\n [ngClass]=\"{'operator': (currentFilterIsSpatial$ | async)===false , 'dualInput': (currentFilterIsSpatial$ | async)}\"\r\n [floatLabel]=\"floatLabel\">\r\n <mat-select\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"currentFilter.operator ? (('igo.geo.operators.tooltip.'+ currentFilter.operator) | translate) : ('igo.geo.filter.selectOperator' | translate)\"\r\n [disabled]=\"!currentFilter.active\"\r\n [value]=\"currentFilter.operator\"\r\n (selectionChange)=\"changeOperator($event.value)\">\r\n <mat-option\r\n *ngFor=\"let operator of (ogcFilterOperators$ | async) | keyvalue\"\r\n tooltip-position=\"above\"\r\n matTooltipShowDelay=\"500\"\r\n [value]=\"operator.key\"\r\n [matTooltip]=\"('igo.geo.operators.tooltip.'+ operator.key) | translate\">\r\n {{('igo.geo.operators.'+ operator.key) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n</mat-form-field>\r\n\r\n<mat-form-field\r\nclass=\"spatialSelector\"\r\n*ngIf=\"currentFilterIsSpatial$ | async\">\r\n <mat-select\r\n [disabled]=\"!currentFilter.active\"\r\n [value]=\"currentFilter.igoSpatialSelector\"\r\n (selectionChange)=\"changeSpatialSelector($event.value)\">\r\n <mat-option\r\n *ngFor=\"let igoSpatialSelector of igoSpatialSelectors\"\r\n [value]=\"igoSpatialSelector.type\">\r\n {{('igo.geo.spatialSelector.'+ igoSpatialSelector.type) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n</mat-form-field>\r\n\r\n<mat-form-field\r\nclass=\"singleInput\"\r\n*ngIf=\"['expression','pattern'].indexOf(detectProperty()) !== -1\"\r\n(mouseenter)=\"inputClearable = 'selectProperty'\"\r\n(mouseleave)=\"inputClearable = undefined\"\r\n[floatLabel]=\"floatLabel\">\r\n <input\r\n matInput\r\n [placeholder]=\"'igo.geo.filter.placeholder' | translate\"\r\n [disabled]=\"!currentFilter.active\"\r\n [matAutocomplete]=\"autoCompleteValues\"\r\n [value]=\"detectProperty() === 'expression' ? currentFilter.expression : currentFilter.pattern\"\r\n tooltip-position=\"above\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"detectProperty() === 'expression' ? currentFilter.expression || '' : currentFilter.pattern || ''\"\r\n (input)=\"updateValuesList($event.target.value)\">\r\n <mat-autocomplete #autoCompleteValues=\"matAutocomplete\"\r\n (optionSelected)=\"changeProperty($event.option.value)\">\r\n <mat-option\r\n *ngFor=\"let value of filteredValues$ | async\"\r\n matTooltipShowDelay=\"500\"\r\n [value]=\"value\"\r\n [matTooltip]=\"value\">\r\n {{value}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <button mat-button\r\n *ngIf=\"isClearable() && inputClearable === 'selectProperty' && currentFilter.active\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n [disabled]=\"!currentFilter.active\"\r\n (click)=\"clearProperty()\">\r\n <mat-icon svgIcon=\"close\"></mat-icon>\r\n </button>\r\n</mat-form-field>\r\n\r\n<div class=\"igo-layer-button-group\">\r\n <button\r\n mat-icon-button\r\n collapsibleButton\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.filter.removeFilter' | translate\"\r\n color=\"warn\"\r\n (click)=\"deleteFilter()\">\r\n <mat-icon svgIcon=\"delete\"></mat-icon>\r\n </button>\r\n</div>\r\n\r\n<mat-form-field\r\nclass=\"snrc\"\r\n*ngIf=\"(currentFilterIsSpatial$ | async) && currentFilter.igoSpatialSelector === 'snrc'\"\r\n(mouseenter)=\"inputClearable = 'selectSNRC'\"\r\n(mouseleave)=\"inputClearable = undefined\"\r\n[floatLabel]=\"floatLabel\">\r\n <input\r\n matInput\r\n [placeholder]=\"'igo.geo.filter.placeholderSnrc' | translate\"\r\n [value]=\"currentFilter.igoSNRC\"\r\n tooltip-position=\"above\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"currentFilter.igoSNRC ? currentFilter.igoSNRC : ''\"\r\n (input)=\"changeSNRC($event.target.value)\">\r\n <button\r\n mat-button\r\n *ngIf=\"currentFilter.igoSNRC\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n [disabled]=\"!currentFilter.active && inputClearable === 'selectSNRC' && currentFilter.active\"\r\n (click)=\"currentFilter.igoSNRC=''\">\r\n <mat-icon svgIcon=\"close\"></mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n <ng-container *ngIf=\"(currentFilterIsSpatial$ | async) && currentFilter.igoSpatialSelector === 'fixedExtent'\">\r\n <button\r\n mat-button\r\n [disabled]=\"!currentFilter.active\"\r\n *ngIf=\"currentFilter.igoSpatialSelector === 'fixedExtent'\"\r\n matSuffix\r\n mat-icon-button\r\n [disabled]=\"!currentFilter.active\"\r\n (click)=\"changeMapExtentGeometry()\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.spatialSelector.btnSetExtent' | translate\">\r\n <mat-icon svgIcon=\"arrow-expand-all\"></mat-icon>\r\n </button>\r\n</ng-container>\r\n\r\n<br/>\r\n\r\n<mat-form-field\r\nclass=\"dualInput\"\r\n*ngIf=\"!isTemporalOperator() && ['lowerBoundary','begin'].indexOf(detectProperty(1)) !== -1\"\r\n(mouseenter)=\"inputClearable = 'selectProperty1'\"\r\n(mouseleave)=\"inputClearable = undefined\"\r\n[floatLabel]=\"floatLabel\">\r\n <input\r\n matInput\r\n [placeholder]=\"'igo.geo.filter.placeholder' | translate\"\r\n [disabled]=\"!currentFilter.active\"\r\n [matAutocomplete]=\"autoDualValueOperator1\"\r\n type=\"number\"\r\n [value]=\"detectProperty(1) === 'lowerBoundary' ? currentFilter.lowerBoundary : currentFilter.begin\"\r\n (input)=\"updateValuesList($event.target.value,1)\">\r\n <mat-autocomplete #autoDualValueOperator1=\"matAutocomplete\"\r\n (optionSelected)=\"changeNumericProperty($event.option.value,1)\">\r\n <mat-option\r\n *ngFor=\"let value of filteredValues$ | async\"\r\n matTooltipShowDelay=\"500\"\r\n [value]=\"value\"\r\n [matTooltip]=\"value\">\r\n {{value}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <button mat-button\r\n *ngIf=\"isClearable(1) && inputClearable === 'selectProperty1' && currentFilter.active\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n [disabled]=\"!currentFilter.active\"\r\n (click)=\"clearProperty(1)\">\r\n <mat-icon svgIcon=\"close\"></mat-icon>\r\n </button>\r\n</mat-form-field>\r\n\r\n<mat-form-field\r\n class=\"dualInput\"\r\n *ngIf=\"!isTemporalOperator() && ['upperBoundary','end'].indexOf(detectProperty(2)) !== -1\"\r\n (mouseenter)=\"inputClearable = 'selectProperty2'\"\r\n (mouseleave)=\"inputClearable = undefined\"\r\n [floatLabel]=\"floatLabel\">\r\n <input\r\n matInput\r\n [placeholder]=\"'igo.geo.filter.placeholder' | translate\"\r\n [disabled]=\"!currentFilter.active\"\r\n [matAutocomplete]=\"autoDualValueOperator2\"\r\n type=\"number\"\r\n [value]=\"detectProperty(2) === 'upperBoundary' ? currentFilter.upperBoundary : currentFilter.end\"\r\n (input)=\"updateValuesList($event.target.value,2)\">\r\n <mat-autocomplete #autoDualValueOperator2=\"matAutocomplete\"\r\n (optionSelected)=\"changeNumericProperty($event.option.value,2)\">\r\n <mat-option\r\n *ngFor=\"let value of filteredValues$ | async\"\r\n matTooltipShowDelay=\"500\"\r\n [value]=\"value\"\r\n [matTooltip]=\"value\">\r\n {{value}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <button mat-button\r\n *ngIf=\"isClearable(2) && inputClearable === 'selectProperty2' && currentFilter.active\"\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Clear\"\r\n [disabled]=\"!currentFilter.active\"\r\n (click)=\"clearProperty(2)\">\r\n <mat-icon svgIcon=\"close\"></mat-icon>\r\n </button>\r\n</mat-form-field>\r\n\r\n<igo-ogc-filter-time *ngIf=\"isTemporalOperator()\"\r\n [(datasource)]=\"datasource\"\r\n [(currentFilter)]=\"currentFilter\"\r\n (changeProperty)=\"changeProperty($event.value, $event.pos)\">\r\n</igo-ogc-filter-time>\r\n\r\n<!--\r\nTODO C'EST PERTINENT je crois\r\n<mat-form-field class=\"field\" *ngIf=\"!(currentFilterIsSpatial$ | async) && (fields$| async) && (fields$| async).length === 1 && (fields$| async)[0].name === ''\">\r\n<input [disabled]=\"!currentFilter.active\" matInput #fieldPerUser (keyup)=\"changeProperty(currentFilter,'propertyName',fieldPerUser.value)\"\r\n (blur)=\"changeProperty(currentFilter,'propertyName',fieldPerUser.value)\" [(ngModel)]=\"currentFilter.propertyName\">\r\n<button mat-button *ngIf=\"currentFilter.propertyName\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"currentFilter.propertyName=''\">\r\n <mat-icon svgIcon=\"close\"></mat-icon>\r\n</button>\r\n</mat-form-field>\r\n\r\n\r\n\r\n<mat-checkbox labelPosition='before' (change)=\"changeCaseSensitive($event)\" [(ngModel)]=\"currentFilter.matchCase\">\r\n {{('igo.geo.operators.caseSensitive') | translate}}\r\n</mat-checkbox>\r\n\r\n</mat-list-item> -->\r\n", styles: [":host{width:100%;padding:5px 10px}::ng-deep .mat-form-field .mat-icon svg{width:1em;height:1em;color:#d3d3d3}.mat-form-field{width:100%}.mat-select-arrow{visibility:hidden}.mat-slide-toggle{margin-top:10px}.logical{flex-flow:column nowrap;width:10%;max-width:45px;margin-left:5px}.logicalHidden{flex-flow:column nowrap;width:10%;visibility:hidden;max-width:45px;margin-left:5px}::ng-deep .logical .mat-select-arrow{visibility:hidden}::ng-deep .logicalHidden .mat-select-arrow{visibility:hidden}.field{width:20%}::ng-deep .field .mat-select-arrow{visibility:hidden}.operator{width:12%;margin-left:10px;text-align:center}::ng-deep .operator .mat-select-arrow{visibility:hidden}.spatialSelector{width:15%;margin-left:5px}::ng-deep .spatialSelector .mat-select-arrow{visibility:hidden}.singleInput{width:30%;margin-left:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.singleInput{width:27%}}.snrc{width:20%;margin-left:5px}::ng-deep .singleInput .mat-select-arrow{visibility:hidden}.dualInput{width:20%;margin-left:5px}::ng-deep .dualInput .mat-select-arrow{visibility:hidden}.igo-layer-button-group{display:flex;float:right;padding-top:5px}.container{display:flex}\n"] }]
24786
25614
  }], function () { return [{ type: WktService }]; }, { refreshFilters: [{
24787
25615
  type: Input
24788
25616
  }], datasource: [{
@@ -24843,7 +25671,7 @@ OgcFilterableFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
24843
25671
  } }, encapsulation: 2 });
24844
25672
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterableFormComponent, [{
24845
25673
  type: Component,
24846
- args: [{ selector: 'igo-ogc-filterable-form', template: "<igo-ogc-filter-selection\n *ngIf=\"!advancedOgcFilters\"\n igoListItem\n [refreshFilters]=\"refreshFunc\"\n [datasource]=\"datasource\"\n [map]=\"map\"\n [currentFilter]=\"currentFilter\">\n</igo-ogc-filter-selection>\n\n<ng-template \n*ngIf=\"advancedOgcFilters && datasource.options.ogcFilters.editable\"\nngFor let-currentFilter \n[ngForOf]=\"datasource.options.ogcFilters.interfaceOgcFilters\">\n<igo-ogc-filter-form\n [currentFilter]=\"currentFilter\"\n [refreshFilters]=\"refreshFunc\"\n [datasource]=\"datasource\"\n [map]=\"map\">\n</igo-ogc-filter-form>\n</ng-template>" }]
25674
+ args: [{ selector: 'igo-ogc-filterable-form', template: "<igo-ogc-filter-selection\r\n *ngIf=\"!advancedOgcFilters\"\r\n igoListItem\r\n [refreshFilters]=\"refreshFunc\"\r\n [datasource]=\"datasource\"\r\n [map]=\"map\"\r\n [currentFilter]=\"currentFilter\">\r\n</igo-ogc-filter-selection>\r\n\r\n<ng-template \r\n*ngIf=\"advancedOgcFilters && datasource.options.ogcFilters.editable\"\r\nngFor let-currentFilter \r\n[ngForOf]=\"datasource.options.ogcFilters.interfaceOgcFilters\">\r\n<igo-ogc-filter-form\r\n [currentFilter]=\"currentFilter\"\r\n [refreshFilters]=\"refreshFunc\"\r\n [datasource]=\"datasource\"\r\n [map]=\"map\">\r\n</igo-ogc-filter-form>\r\n</ng-template>" }]
24847
25675
  }], function () { return []; }, { datasource: [{
24848
25676
  type: Input
24849
25677
  }], map: [{
@@ -25144,7 +25972,7 @@ OgcFilterableItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
25144
25972
  } }, styles: ["[_nghost-%COMP%]{overflow:hidden}.advancedOgcFilters[_ngcontent-%COMP%]{text-align:center;width:100%;display:inline-block}.mat-list-item[_ngcontent-%COMP%]{height:auto}.igo-layer-legend-container[_ngcontent-%COMP%]{padding-left:1.125em;width:calc(100% - 18px)}mat-icon.disabled[_ngcontent-%COMP%]{color:#00000061}.separate-item[_ngcontent-%COMP%]{border-bottom:4px solid darkgrey}"] });
25145
25973
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterableItemComponent, [{
25146
25974
  type: Component,
25147
- args: [{ selector: 'igo-ogc-filterable-item', template: "<div [ngClass]=\"{'separate-item' : header === true}\" >\n <mat-list-item>\n <mat-icon\n *ngIf=\"header\"\n class=\"igo-chevron\"\n mat-list-avatar\n igoCollapse [target]=\"ogcFilters\"\n [collapsed]=\"filtersCollapsed\"\n (click)=\"toggleFiltersCollapsed()\"\n svgIcon=\"chevron-up\">\n </mat-icon>\n <h4 (click)=\"toggleLegendOnClick()\" *ngIf=\"header\" [ngStyle]=\"{'cursor': filtersCollapsed ? 'default' : 'pointer'}\" matLine [matTooltip]=\"layer.title\" matTooltipShowDelay=\"500\">{{layer.title}}</h4>\n <button *ngIf=\"isAdvancedOgcFilters() && filtersAreEditable\" [disabled]=\"addFilterDisabled()\" mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.filter.addFilter' | translate\" [color]=\"color\" (click)=\"addFilterToSequence()\">\n <mat-icon svgIcon=\"plus\"></mat-icon>\n </button>\n <button *ngIf=\"header\"\n mat-icon-button\n [color]=\"layer.visible ? 'primary' : 'default'\"\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"layer.visible ?\n ('igo.geo.layer.hideLayer' | translate) :\n ('igo.geo.layer.showLayer' | translate)\"\n (click)=\"layer.visible = !layer.visible\">\n <mat-icon\n [ngClass]=\"{disabled: (inResolutionRange$ | async)===false}\"\n [svgIcon]=\"layer.visible ? 'eye' : 'eye-off'\">\n </mat-icon>\n </button>\n </mat-list-item>\n\n <div #ogcFilters>\n <div *ngIf=\"header\" #legend class=\"igo-layer-legend-container\">\n <igo-layer-legend *ngIf=\"showLegend$ | async\" [layer]=\"layer\">\n </igo-layer-legend>\n </div>\n <igo-ogc-filterable-form [datasource]=\"datasource\" [map]=\"map\" [refreshFilters]=\"refreshFunc\">\n </igo-ogc-filterable-form>\n\n <section *ngIf=\"hasSelector && filtersAreEditable\" class=\"mat-typography advancedOgcFilters\">\n <mat-divider></mat-divider>\n <mat-checkbox labelPosition='before' (change)=\"changeOgcFilterType($event)\"\n [(ngModel)]=\"datasource.options.ogcFilters.advancedOgcFilters\">\n {{'igo.geo.filter.advancedOgcFilters' | translate}}\n </mat-checkbox>\n </section>\n </div>\n</div>", styles: [":host{overflow:hidden}.advancedOgcFilters{text-align:center;width:100%;display:inline-block}.mat-list-item{height:auto}.igo-layer-legend-container{padding-left:1.125em;width:calc(100% - 18px)}mat-icon.disabled{color:#00000061}.separate-item{border-bottom:4px solid darkgrey}\n"] }]
25975
+ args: [{ selector: 'igo-ogc-filterable-item', template: "<div [ngClass]=\"{'separate-item' : header === true}\" >\r\n <mat-list-item>\r\n <mat-icon\r\n *ngIf=\"header\"\r\n class=\"igo-chevron\"\r\n mat-list-avatar\r\n igoCollapse [target]=\"ogcFilters\"\r\n [collapsed]=\"filtersCollapsed\"\r\n (click)=\"toggleFiltersCollapsed()\"\r\n svgIcon=\"chevron-up\">\r\n </mat-icon>\r\n <h4 (click)=\"toggleLegendOnClick()\" *ngIf=\"header\" [ngStyle]=\"{'cursor': filtersCollapsed ? 'default' : 'pointer'}\" matLine [matTooltip]=\"layer.title\" matTooltipShowDelay=\"500\">{{layer.title}}</h4>\r\n <button *ngIf=\"isAdvancedOgcFilters() && filtersAreEditable\" [disabled]=\"addFilterDisabled()\" mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.filter.addFilter' | translate\" [color]=\"color\" (click)=\"addFilterToSequence()\">\r\n <mat-icon svgIcon=\"plus\"></mat-icon>\r\n </button>\r\n <button *ngIf=\"header\"\r\n mat-icon-button\r\n [color]=\"layer.visible ? 'primary' : 'default'\"\r\n collapsibleButton\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"layer.visible ?\r\n ('igo.geo.layer.hideLayer' | translate) :\r\n ('igo.geo.layer.showLayer' | translate)\"\r\n (click)=\"layer.visible = !layer.visible\">\r\n <mat-icon\r\n [ngClass]=\"{disabled: (inResolutionRange$ | async)===false}\"\r\n [svgIcon]=\"layer.visible ? 'eye' : 'eye-off'\">\r\n </mat-icon>\r\n </button>\r\n </mat-list-item>\r\n\r\n <div #ogcFilters>\r\n <div *ngIf=\"header\" #legend class=\"igo-layer-legend-container\">\r\n <igo-layer-legend *ngIf=\"showLegend$ | async\" [layer]=\"layer\">\r\n </igo-layer-legend>\r\n </div>\r\n <igo-ogc-filterable-form [datasource]=\"datasource\" [map]=\"map\" [refreshFilters]=\"refreshFunc\">\r\n </igo-ogc-filterable-form>\r\n\r\n <section *ngIf=\"hasSelector && filtersAreEditable\" class=\"mat-typography advancedOgcFilters\">\r\n <mat-divider></mat-divider>\r\n <mat-checkbox labelPosition='before' (change)=\"changeOgcFilterType($event)\"\r\n [(ngModel)]=\"datasource.options.ogcFilters.advancedOgcFilters\">\r\n {{'igo.geo.filter.advancedOgcFilters' | translate}}\r\n </mat-checkbox>\r\n </section>\r\n </div>\r\n</div>", styles: [":host{overflow:hidden}.advancedOgcFilters{text-align:center;width:100%;display:inline-block}.mat-list-item{height:auto}.igo-layer-legend-container{padding-left:1.125em;width:calc(100% - 18px)}mat-icon.disabled{color:#00000061}.separate-item{border-bottom:4px solid darkgrey}\n"] }]
25148
25976
  }], function () { return [{ type: OGCFilterService }]; }, { layer: [{
25149
25977
  type: Input
25150
25978
  }], map: [{
@@ -25188,7 +26016,7 @@ OgcFilterableListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
25188
26016
  } }, styles: ["#no-layer-message[_ngcontent-%COMP%]{padding:7%;text-align:center;font-size:medium;font-weight:700}"], changeDetection: 0 });
25189
26017
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterableListComponent, [{
25190
26018
  type: Component,
25191
- args: [{ selector: 'igo-ogc-filterable-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n<igo-list [navigation]=\"false\" [selection]=\"false\">\n <div id=\"no-layer-message\" *ngIf=\"(layers | filterableDataSource : 'ogc').length === 0\">{{'igo.geo.filter.noFilterableLayer' | translate}}</div>\n <ng-template ngFor let-layer [ngForOf]=\"layers | filterableDataSource: 'ogc'\">\n <igo-ogc-filterable-item igoListItem [header]=\"true\" [layer]=\"layer\" \n [map]=\"layer.map\" ></igo-ogc-filterable-item>\n </ng-template>\n</igo-list>\n", styles: ["#no-layer-message{padding:7%;text-align:center;font-size:medium;font-weight:700}\n"] }]
26019
+ args: [{ selector: 'igo-ogc-filterable-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "\r\n<igo-list [navigation]=\"false\" [selection]=\"false\">\r\n <div id=\"no-layer-message\" *ngIf=\"(layers | filterableDataSource : 'ogc').length === 0\">{{'igo.geo.filter.noFilterableLayer' | translate}}</div>\r\n <ng-template ngFor let-layer [ngForOf]=\"layers | filterableDataSource: 'ogc'\">\r\n <igo-ogc-filterable-item igoListItem [header]=\"true\" [layer]=\"layer\" \r\n [map]=\"layer.map\" ></igo-ogc-filterable-item>\r\n </ng-template>\r\n</igo-list>\r\n", styles: ["#no-layer-message{padding:7%;text-align:center;font-size:medium;font-weight:700}\n"] }]
25192
26020
  }], function () { return []; }, { layers: [{
25193
26021
  type: Input
25194
26022
  }], map: [{
@@ -25349,7 +26177,7 @@ OgcFilterButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Og
25349
26177
  } }, changeDetection: 0 });
25350
26178
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterButtonComponent, [{
25351
26179
  type: Component,
25352
- args: [{ selector: 'igo-ogc-filter-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"header && options.ogcFilters && options.ogcFilters.enabled &&\n (options.ogcFilters.pushButtons || options.ogcFilters.checkboxes || options.ogcFilters.radioButtons || options.ogcFilters.select || options.ogcFilters.autocomplete\n || options.ogcFilters.editable)\"\n mat-icon-button\n collapsibleButton\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.filter.filterBy' | translate\"\n [color]=\"color\">\n <mat-icon [matBadge]=\"badge\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" svgIcon=\"filter\"></mat-icon>\n</button>\n\n<div #ogcFilter class=\"igo-layer-actions-container\"\n*ngIf=\"options.ogcFilters && options.ogcFilters.enabled &&\n(options.ogcFilters.pushButtons || options.ogcFilters.checkboxes || options.ogcFilters.radioButtons || options.ogcFilters.select || options.ogcFilters.autocomplete\n || options.ogcFilters.editable)\">\n <igo-ogc-filterable-item\n *ngIf=\"ogcFilterCollapse && options.ogcFilters.enabled\"\n igoListItem\n [header]=\"false\"\n [map]=\"layer.map\"\n [layer]=\"layer\">\n </igo-ogc-filterable-item>\n</div>\n" }]
26180
+ args: [{ selector: 'igo-ogc-filter-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n *ngIf=\"header && options.ogcFilters && options.ogcFilters.enabled &&\r\n (options.ogcFilters.pushButtons || options.ogcFilters.checkboxes || options.ogcFilters.radioButtons || options.ogcFilters.select || options.ogcFilters.autocomplete\r\n || options.ogcFilters.editable)\"\r\n mat-icon-button\r\n collapsibleButton\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.filter.filterBy' | translate\"\r\n [color]=\"color\">\r\n <mat-icon [matBadge]=\"badge\" matBadgeColor=\"warn\" matBadgeSize=\"medium\" svgIcon=\"filter\"></mat-icon>\r\n</button>\r\n\r\n<div #ogcFilter class=\"igo-layer-actions-container\"\r\n*ngIf=\"options.ogcFilters && options.ogcFilters.enabled &&\r\n(options.ogcFilters.pushButtons || options.ogcFilters.checkboxes || options.ogcFilters.radioButtons || options.ogcFilters.select || options.ogcFilters.autocomplete\r\n || options.ogcFilters.editable)\">\r\n <igo-ogc-filterable-item\r\n *ngIf=\"ogcFilterCollapse && options.ogcFilters.enabled\"\r\n igoListItem\r\n [header]=\"false\"\r\n [map]=\"layer.map\"\r\n [layer]=\"layer\">\r\n </igo-ogc-filterable-item>\r\n</div>\r\n" }]
25353
26181
  }], function () { return []; }, { layer: [{
25354
26182
  type: Input
25355
26183
  }], map: [{
@@ -26699,7 +27527,7 @@ OgcFilterSelectionComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
26699
27527
  } }, 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}"] });
26700
27528
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterSelectionComponent, [{
26701
27529
  type: Component,
26702
- 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"] }]
27530
+ args: [{ selector: 'igo-ogc-filter-selection', providers: [DOMService], template: "<form [formGroup]=\"form\">\r\n <div *ngFor=\"let selector of ogcFiltersSelectors\">\r\n <div class=\"pushButtonGroups\" *ngIf=\"selector.selectorType === 'pushButton'\">\r\n <mat-divider></mat-divider>\r\n <div class=\"groupsSelector\" *ngIf=\"getPushButtonsGroups().length > 1\">\r\n <mat-form-field>\r\n <mat-select\r\n formControlName=\"pushButtonsGroup\"\r\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\r\n [(value)]=\"currentPushButtonsGroup\">\r\n <mat-option *ngFor=\"let selectorGroup of getPushButtonsGroups()\"\r\n [value]=\"selectorGroup\">{{selectorGroup.title}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <ng-container *ngFor=\"let bundle of currentPushButtonsGroup.computedSelectors\">\r\n <h4>{{bundle.title}}</h4>\r\n <mat-button-toggle-group\r\n formControlName=\"pushButtons\" class=\"mat-typography\" appearance=\"legacy\" vertical={{bundleIsVertical(bundle)}} multiple=\"true\">\r\n <mat-button-toggle *ngFor=\"let ogcPushButton of bundle.selectors\"\r\n [matTooltip]=\"getToolTip(ogcPushButton)\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\r\n [ngStyle]=\"getButtonColor(ogcPushButton)\"\r\n [checked]=\"ogcPushButton.enabled\" (change)=\"onSelectionChange(ogcPushButton, selector.selectorType)\"\r\n [value]=\"ogcPushButton\">{{ogcPushButton.title}}\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"checkboxGroups\" *ngIf=\"selector.selectorType === 'checkbox'\">\r\n <mat-divider></mat-divider>\r\n <div class=\"groupsSelector\" *ngIf=\"getCheckboxesGroups().length > 1\">\r\n <mat-form-field>\r\n <mat-select\r\n formControlName=\"checkboxesGroup\"\r\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\r\n [(value)]=\"currentCheckboxesGroup\">\r\n <mat-option *ngFor=\"let selectorGroup of getCheckboxesGroups()\"\r\n [value]=\"selectorGroup\">{{selectorGroup.title}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <ng-container *ngFor=\"let bundle of currentCheckboxesGroup.computedSelectors\">\r\n <h4>{{bundle.title}}</h4>\r\n <div class=\"checkboxes mat-typography\">\r\n <mat-checkbox *ngFor=\"let ogcCheckbox of bundle.selectors\"\r\n [matTooltip]=\"getToolTip(ogcCheckbox)\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\r\n [checked]=\"ogcCheckbox.enabled\" (change)=\"onSelectionChange(ogcCheckbox, selector.selectorType)\"\r\n [value]=\"ogcCheckbox\">{{ogcCheckbox.title}}\r\n </mat-checkbox>\r\n </div>\r\n <p *ngIf=\"isLessResults(bundle, 'checkbox') || isMoreResults(bundle, 'checkbox')\">\r\n <u *ngIf=\"isLessResults(bundle, 'checkbox')\"\r\n class=\"lessResults mat-typography\"\r\n (click)=\"displayLessResults('checkbox')\">{{ 'igo.geo.filter.displayLessResults' | translate }}\r\n </u>\r\n <u *ngIf=\"isMoreResults(bundle, 'checkbox')\"\r\n class=\"moreResults mat-typography\"\r\n (click)=\"displayMoreResults('checkbox')\">{{ 'igo.geo.filter.displayMoreResults' | translate }}\r\n </u>\r\n </p>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"radioButtonGroups\" *ngIf=\"selector.selectorType === 'radioButton'\">\r\n <mat-divider></mat-divider>\r\n <div class=\"groupsSelector\" *ngIf=\"getRadioButtonsGroups().length > 1\">\r\n <mat-form-field>\r\n <mat-select\r\n formControlName=\"radioButtonsGroup\"\r\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\r\n [(value)]=\"currentRadioButtonsGroup\">\r\n <mat-option *ngFor=\"let selectorGroup of getRadioButtonsGroups()\"\r\n [value]=\"selectorGroup\">{{selectorGroup.title}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <ng-container *ngFor=\"let bundle of currentRadioButtonsGroup.computedSelectors\">\r\n <h4>{{bundle.title}}</h4>\r\n <mat-radio-group\r\n formControlName=\"radioButtons\" class=\"mat-typography\">\r\n <mat-radio-button *ngIf=\"bundle.unfiltered\"\r\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\r\n (change)=\"emptyRadioButtons()\">{{ 'igo.geo.filter.resetFilters' | translate }}\r\n </mat-radio-button>\r\n <mat-radio-button *ngFor=\"let ogcRadioButton of bundle.selectors\"\r\n [matTooltip]=\"getToolTip(ogcRadioButton)\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\r\n [checked]=\"ogcRadioButton.enabled\" (change)=\"onSelectionChange(ogcRadioButton, selector.selectorType)\"\r\n [value]=\"ogcRadioButton\">{{ogcRadioButton.title}}\r\n </mat-radio-button>\r\n <p *ngIf=\"isLessResults(bundle, 'radio') || isMoreResults(bundle, 'radio')\">\r\n <u *ngIf=\"isLessResults(bundle, 'radio')\"\r\n class=\"lessResults mat-typography\"\r\n (click)=\"displayLessResults('radio')\">{{ 'igo.geo.filter.displayLessResults' | translate }}\r\n </u>\r\n <u *ngIf=\"isMoreResults(bundle, 'radio')\"\r\n class=\"moreResults mat-typography\"\r\n (click)=\"displayMoreResults('radio')\">{{ 'igo.geo.filter.displayMoreResults' | translate }}\r\n </u>\r\n </p>\r\n </mat-radio-group>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"selectGroups\" *ngIf=\"selector.selectorType === 'select'\">\r\n <mat-divider></mat-divider>\r\n <div class=\"groupsSelector\" *ngIf=\"getSelectGroups().length > 1\">\r\n <mat-form-field>\r\n <mat-select\r\n formControlName=\"selectGroup\"\r\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\r\n [(value)]=\"currentSelectGroup\">\r\n <mat-option *ngFor=\"let selectorGroup of getSelectGroups()\"\r\n [value]=\"selectorGroup\">{{selectorGroup.title}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <ng-container *ngFor=\"let bundle of currentSelectGroup.computedSelectors\">\r\n <h4>{{bundle.title}}</h4>\r\n <div class=\"groupsSelector\">\r\n <mat-button *ngIf=\"bundle.unfiltered && !bundle.multiple\"\r\n mat-icon-button\r\n color=\"warn\"\r\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\r\n (click)=\"emptySelect()\">\r\n <mat-icon svgIcon=\"filter-remove\"></mat-icon>\r\n </mat-button>\r\n <mat-form-field [style.width.%]=\"bundle.width ? bundle.width : undefined\">\r\n <div *ngIf=\"bundle.multiple; else notMulti\">\r\n <mat-select\r\n #selection [multiple]=\"bundle.multiple\" [placeholder]=\"bundle.title\" formControlName=\"selectMulti\">\r\n <div class=\"checkboxes mat-typography\">\r\n <mat-checkbox *ngIf=\"bundle.multiple\"\r\n [(ngModel)]=\"selectAllSelected\" [ngModelOptions]=\"{standalone: true}\"\r\n (change)=\"toggleAllSelection()\">Tous\r\n </mat-checkbox>\r\n </div>\r\n <mat-option *ngFor=\"let ogcSelect of bundle.selectors\"\r\n [matTooltip]=\"getToolTip(ogcSelect)\" tooltip-position=\"below\" matTooltipDelay=\"500\" matTooltipClass=\"material-tooltip\"\r\n (onSelectionChange)=\"selectOptionClick($event.source.value, bundle, $event)\"\r\n [value]=\"ogcSelect\">{{ogcSelect.title}}\r\n </mat-option>\r\n </mat-select>\r\n </div>\r\n <ng-template #notMulti>\r\n <mat-select\r\n [placeholder]=\"bundle.title\" formControlName=\"select\">\r\n <mat-option *ngFor=\"let ogcSelect of bundle.selectors\"\r\n [matTooltip]=\"getToolTip(ogcSelect)\" tooltip-position=\"below\" matTooltipDelay=\"500\" matTooltipClass=\"material-tooltip\"\r\n [value]=\"ogcSelect\" (onSelectionChange)=\"selectOptionClick($event.source.value, bundle)\">{{ogcSelect.title}}\r\n </mat-option>\r\n </mat-select>\r\n </ng-template>\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"autocompleteGroups\" *ngIf=\"selector.selectorType === 'autocomplete'\">\r\n <mat-divider></mat-divider>\r\n <div class=\"groupsSelector\" *ngIf=\"getAutocompleteGroups().length > 1\">\r\n <mat-form-field>\r\n <mat-select\r\n formControlName=\"autocompleteGroup\"\r\n [matTooltip]=\"'igo.geo.layer.legend.selectStyle' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\"\r\n [(value)]=\"currentAutocompleteGroup\">\r\n <mat-option *ngFor=\"let autocompleteGroup of getAutocompleteGroups()\"\r\n [value]=\"autocompleteGroup\">{{autocompleteGroup.title}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <ng-container *ngFor=\"let bundle of currentAutocompleteGroup.computedSelectors\">\r\n <h4>{{bundle.title}}</h4>\r\n <div class=\"groupsSelector\">\r\n <mat-button *ngIf=\"bundle.unfiltered\"\r\n mat-icon-button\r\n color=\"warn\"\r\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" tooltip-position=\"below\" matTooltipShowDelay=\"500\" matTooltipClass=\"material-tooltip\"\r\n (click)=\"emptyAutocomplete()\">\r\n <mat-icon svgIcon=\"filter-remove\"></mat-icon>\r\n </mat-button>\r\n <mat-form-field *ngIf=\"filteredOgcAutocomplete[bundle.id]\" [style.width.%]=\"bundle.width ? bundle.width : undefined\">\r\n <input matInput type=\"text\" formControlName=\"autocomplete\" #autocomplete class=\"autocomplete\"\r\n [matAutocomplete]=\"auto\" [placeholder]=\"bundle.title\">\r\n <mat-autocomplete #auto=\"matAutocomplete\" #autocomplete (optionSelected)=\"autocompleteOptionClick($event.option.value)\"\r\n [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let ogcAutocomplete of filteredOgcAutocomplete[bundle.id] | async\" [value]=\"ogcAutocomplete\">\r\n {{ ogcAutocomplete.value }}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<div *ngIf=\"isTemporalOperator()\">\r\n <mat-divider></mat-divider>\r\n <h4 *ngIf=\"!currentFilter.title\">{{ 'igo.geo.filter.reportingDate' | translate }}</h4>\r\n <h4 *ngIf=\"currentFilter.title\">{{ currentFilter.title }}</h4>\r\n <igo-ogc-filter-time\r\n [(datasource)]=\"datasource\"\r\n [(currentFilter)]=\"currentFilter\"\r\n (changeProperty)=\"changeProperty($event.value, $event.pos)\">\r\n </igo-ogc-filter-time>\r\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"] }]
26703
27531
  }], function () { return [{ type: OGCFilterService }, { type: i2$2.UntypedFormBuilder }, { type: i5$1.DOMService }, { type: i2$1.ConfigService }, { type: i0.ChangeDetectorRef }]; }, { sel: [{
26704
27532
  type: ViewChild,
26705
27533
  args: ['selection']
@@ -26836,7 +27664,7 @@ SpatialFilterTypeComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
26836
27664
  } }, styles: [".mat-form-field[_ngcontent-%COMP%]{padding:5px;width:95%;margin-left:2px}.mat-tab-group[_ngcontent-%COMP%] .mat-tab-body-content{overflow:hidden}.mat-tab-group[_ngcontent-%COMP%] .mat-tab-label{padding:10px}.mat-tab-group[_ngcontent-%COMP%] .mat-tab-body-wrapper{margin-top:5px}.spatial-type-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.spatial-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:50%}.spatial-type-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:50%}"], changeDetection: 0 });
26837
27665
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SpatialFilterTypeComponent, [{
26838
27666
  type: Component,
26839
- args: [{ selector: 'igo-spatial-filter-type', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-tab-group\n [selectedIndex]=\"selectedTypeIndex.value\"\n (selectedIndexChange)=\"selectedTypeIndex.setValue($event)\"\n (selectedTabChange)=\"onTypeChange($event)\">\n\n <mat-tab [label]=\"'igo.geo.spatialFilter.predefined' |\u00A0translate\">\n <mat-form-field>\n <mat-label>{{'igo.geo.spatialFilter.searchLabel' | translate}}</mat-label>\n <mat-select (selectionChange)=\"onSelectionChange()\" [(value)]=\"selectedQueryType\">\n <mat-option *ngFor=\"let queryType of queryType\" [value]=\"queryType\">\n {{('igo.geo.terrapi.' + queryType) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <igo-spatial-filter-list\n [store]=\"store\"\n [queryType]=\"selectedQueryType\"\n [zone]=\"zone\"\n [layers]=\"layers\"\n (zoneChange)=\"zoneChange.emit($event)\"\n (zoneWithBufferChange)=\"zoneWithBufferChange.emit($event)\"\n (bufferChange)=\"bufferChange.emit($event)\"\n (measureUnitChange)=\"measureUnitChange.emit($event)\">\n </igo-spatial-filter-list>\n </mat-tab>\n\n <mat-tab [label]=\"'igo.geo.spatialFilter.draw' |\u00A0translate\">\n <div class=\"spatial-type-toggle\">\n <mat-button-toggle-group\n [value]=\"activeDrawType\"\n (change)=\"onDrawTypeChange($event.value)\">\n <mat-button-toggle [value]=\"spatialType.Polygon\" [matTooltip]=\"'igo.geo.spatialFilter.drawPolygon' |\u00A0translate\">\n <mat-icon svgIcon=\"pentagon-outline\"></mat-icon>\n </mat-button-toggle>\n <mat-button-toggle [value]=\"spatialType.Point\" [matTooltip]=\"'igo.geo.spatialFilter.drawCircle' |\u00A0translate\">\n <mat-icon svgIcon=\"record-circle-outline\"></mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </mat-tab>\n\n</mat-tab-group>\n", styles: [".mat-form-field{padding:5px;width:95%;margin-left:2px}.mat-tab-group ::ng-deep .mat-tab-body-content{overflow:hidden}.mat-tab-group ::ng-deep .mat-tab-label{padding:10px}.mat-tab-group ::ng-deep .mat-tab-body-wrapper{margin-top:5px}.spatial-type-toggle{padding:10px;text-align:center}.spatial-type-toggle mat-button-toggle-group{width:50%}.spatial-type-toggle mat-button-toggle-group mat-button-toggle{width:50%}\n"] }]
27667
+ args: [{ selector: 'igo-spatial-filter-type', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-tab-group\r\n [selectedIndex]=\"selectedTypeIndex.value\"\r\n (selectedIndexChange)=\"selectedTypeIndex.setValue($event)\"\r\n (selectedTabChange)=\"onTypeChange($event)\">\r\n\r\n <mat-tab [label]=\"'igo.geo.spatialFilter.predefined' |\u00A0translate\">\r\n <mat-form-field>\r\n <mat-label>{{'igo.geo.spatialFilter.searchLabel' | translate}}</mat-label>\r\n <mat-select (selectionChange)=\"onSelectionChange()\" [(value)]=\"selectedQueryType\">\r\n <mat-option *ngFor=\"let queryType of queryType\" [value]=\"queryType\">\r\n {{('igo.geo.terrapi.' + queryType) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <igo-spatial-filter-list\r\n [store]=\"store\"\r\n [queryType]=\"selectedQueryType\"\r\n [zone]=\"zone\"\r\n [layers]=\"layers\"\r\n (zoneChange)=\"zoneChange.emit($event)\"\r\n (zoneWithBufferChange)=\"zoneWithBufferChange.emit($event)\"\r\n (bufferChange)=\"bufferChange.emit($event)\"\r\n (measureUnitChange)=\"measureUnitChange.emit($event)\">\r\n </igo-spatial-filter-list>\r\n </mat-tab>\r\n\r\n <mat-tab [label]=\"'igo.geo.spatialFilter.draw' |\u00A0translate\">\r\n <div class=\"spatial-type-toggle\">\r\n <mat-button-toggle-group\r\n [value]=\"activeDrawType\"\r\n (change)=\"onDrawTypeChange($event.value)\">\r\n <mat-button-toggle [value]=\"spatialType.Polygon\" [matTooltip]=\"'igo.geo.spatialFilter.drawPolygon' |\u00A0translate\">\r\n <mat-icon svgIcon=\"pentagon-outline\"></mat-icon>\r\n </mat-button-toggle>\r\n <mat-button-toggle [value]=\"spatialType.Point\" [matTooltip]=\"'igo.geo.spatialFilter.drawCircle' |\u00A0translate\">\r\n <mat-icon svgIcon=\"record-circle-outline\"></mat-icon>\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n </div>\r\n </mat-tab>\r\n\r\n</mat-tab-group>\r\n", styles: [".mat-form-field{padding:5px;width:95%;margin-left:2px}.mat-tab-group ::ng-deep .mat-tab-body-content{overflow:hidden}.mat-tab-group ::ng-deep .mat-tab-label{padding:10px}.mat-tab-group ::ng-deep .mat-tab-body-wrapper{margin-top:5px}.spatial-type-toggle{padding:10px;text-align:center}.spatial-type-toggle mat-button-toggle-group{width:50%}.spatial-type-toggle mat-button-toggle-group mat-button-toggle{width:50%}\n"] }]
26840
27668
  }], function () { return []; }, { store: [{
26841
27669
  type: Input
26842
27670
  }], selectedQueryType: [{
@@ -27032,7 +27860,7 @@ SpatialFilterListComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
27032
27860
  } }, dependencies: [i1$1.NgForOf, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NumberValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.NgForm, i2$2.FormControlDirective, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i9.MatOption, i13.MatFormField, i14.MatInput, i15.MatSelect, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".buffer-div[_ngcontent-%COMP%]{display:flex;width:100%;margin-left:2px;padding:5px}.zone-list[_ngcontent-%COMP%]{padding:5px;width:95%;margin-left:2px}.buffer[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:110%}.unit-field[_ngcontent-%COMP%]{width:110px;margin-left:30px}"], changeDetection: 0 });
27033
27861
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SpatialFilterListComponent, [{
27034
27862
  type: Component,
27035
- args: [{ selector: 'igo-spatial-filter-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form class=\"form-list\">\n <mat-form-field class=\"zone-list\">\n <input #input type=\"text\" placeholder=\"{{'igo.geo.spatialFilter.listLabel' |\u00A0translate}}\" matInput\n [formControl]=\"formControl\" [matAutocomplete]=\"auto\">\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onZoneChange($event.option.value)\"\n [displayWith]=\"displayFn\">\n <mat-option *ngFor=\"let entities of this.store.view.all$() | async\" [value]=\"entities\">\n {{entities.properties.nom}}\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n<form>\n\n<div class=\"buffer-div\">\n <form class=\"buffer-form\">\n <mat-form-field class=\"buffer\">\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.buffer' | translate}}\" [formControl]=\"bufferFormControl\"\n [value]=\"0\" [readonly]=\"!zone\">\n </mat-form-field>\n </form>\n\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"measureUnit\"\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\n {{('igo.geo.measure.' + measureUnit) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n", styles: [".buffer-div{display:flex;width:100%;margin-left:2px;padding:5px}.zone-list{padding:5px;width:95%;margin-left:2px}.buffer{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}\n"] }]
27863
+ args: [{ selector: 'igo-spatial-filter-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form class=\"form-list\">\r\n <mat-form-field class=\"zone-list\">\r\n <input #input type=\"text\" placeholder=\"{{'igo.geo.spatialFilter.listLabel' |\u00A0translate}}\" matInput\r\n [formControl]=\"formControl\" [matAutocomplete]=\"auto\">\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onZoneChange($event.option.value)\"\r\n [displayWith]=\"displayFn\">\r\n <mat-option *ngFor=\"let entities of this.store.view.all$() | async\" [value]=\"entities\">\r\n {{entities.properties.nom}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n<form>\r\n\r\n<div class=\"buffer-div\">\r\n <form class=\"buffer-form\">\r\n <mat-form-field class=\"buffer\">\r\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.buffer' | translate}}\" [formControl]=\"bufferFormControl\"\r\n [value]=\"0\" [readonly]=\"!zone\">\r\n </mat-form-field>\r\n </form>\r\n\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select\r\n [value]=\"measureUnit\"\r\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\r\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\r\n {{('igo.geo.measure.' + measureUnit) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n", styles: [".buffer-div{display:flex;width:100%;margin-left:2px;padding:5px}.zone-list{padding:5px;width:95%;margin-left:2px}.buffer{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}\n"] }]
27036
27864
  }], function () { return [{ type: SpatialFilterService }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }]; }, { store: [{
27037
27865
  type: Input
27038
27866
  }], queryType: [{
@@ -27324,6 +28152,7 @@ class SpatialFilterItemComponent {
27324
28152
  this.measureUnitChange = new EventEmitter();
27325
28153
  this.radiusEvent = new EventEmitter();
27326
28154
  this.freehandControl = new EventEmitter();
28155
+ this.predefinedRadius = new EventEmitter();
27327
28156
  this.clearButtonEvent = new EventEmitter();
27328
28157
  this.clearSearchEvent = new EventEmitter();
27329
28158
  this.export = new EventEmitter();
@@ -27791,6 +28620,16 @@ class SpatialFilterItemComponent {
27791
28620
  onfreehandControlChange() {
27792
28621
  this.freehandDrawIsActive = !this.freehandDrawIsActive;
27793
28622
  this.freehandControl.emit(this.freehandDrawIsActive);
28623
+ if (this.isPoint()) {
28624
+ this.predefinedRadius.emit(!this.freehandDrawIsActive);
28625
+ if (this.freehandDrawIsActive) {
28626
+ this.overlayStyle$.next(undefined);
28627
+ this.drawStyle$.next(undefined);
28628
+ }
28629
+ }
28630
+ else {
28631
+ this.predefinedRadius.emit(false);
28632
+ }
27794
28633
  }
27795
28634
  /**
27796
28635
  * Launch search button
@@ -27979,7 +28818,7 @@ class SpatialFilterItemComponent {
27979
28818
  }
27980
28819
  }
27981
28820
  SpatialFilterItemComponent.ɵfac = function SpatialFilterItemComponent_Factory(t) { return new (t || SpatialFilterItemComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(SpatialFilterService), i0.ɵɵdirectiveInject(i2$1.MessageService), i0.ɵɵdirectiveInject(i2$1.LanguageService)); };
27982
- SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SpatialFilterItemComponent, selectors: [["igo-spatial-filter-item"]], inputs: { map: "map", type: "type", queryType: "queryType", zone: "zone", loading: "loading", store: "store", layers: "layers", allLayers: "allLayers", thematicLength: "thematicLength" }, outputs: { toggleSearch: "toggleSearch", itemTypeChange: "itemTypeChange", thematicChange: "thematicChange", drawZoneEvent: "drawZoneEvent", bufferEvent: "bufferEvent", zoneWithBufferChange: "zoneWithBufferChange", measureUnitChange: "measureUnitChange", radiusEvent: "radiusEvent", freehandControl: "freehandControl", clearButtonEvent: "clearButtonEvent", clearSearchEvent: "clearSearchEvent", export: "export", openWorkspace: "openWorkspace", entityChange: "entityChange" }, decls: 29, vars: 42, consts: [[3, "formControl", "map", "geometryType", "drawGuide", "measure", "drawControlIsActive", "freehandDrawIsActive", "drawStyle", "overlayStyle", "radius"], [1, "header"], [3, "checked", "labelPosition", "change", 4, "ngIf"], ["class", "buffer-unit", 4, "ngIf"], ["class", "radius-unit", 4, "ngIf"], [1, "title", "mat-typography"], [3, "value"], [3, "value", "change", 4, "ngFor", "ngForOf"], ["class", "thematics", 4, "ngIf"], [1, "buttons"], ["mat-raised-button", "", "class", "clear-search-button", 3, "disabled", "click", 4, "ngIf"], ["mat-raised-button", "", "class", "clear-form-button", 3, "disabled", "click", 4, "ngIf"], ["mat-raised-button", "", "color", "primary", 1, "search-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "remove-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "export-button", 3, "disabled", "click"], ["class", "chevron-down", "mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["class", "results", 4, "ngIf"], [3, "checked", "labelPosition", "change"], [1, "buffer-unit"], [1, "buffer-form"], [1, "buffer"], ["type", "number", "matInput", "", 3, "placeholder", "formControl", "value", "readonly"], [1, "unit-field"], [3, "value", "selectionChange"], [3, "value", 4, "ngFor", "ngForOf"], [1, "radius-unit"], [1, "radius-form"], [1, "radius"], ["type", "number", "matInput", "", 3, "placeholder", "formControl", "value", "readonly", "input"], [3, "value", "change"], [1, "thematics"], ["matColumnDef", "name"], ["class", "thematics-header", 4, "matHeaderCellDef"], ["matColumnDef", "select"], ["class", "checks-header", 4, "matHeaderCellDef"], [4, "matHeaderRowDef"], [4, "matRowDef", "matRowDefColumns"], [3, "dataSource", "treeControl"], ["matTreeNodeToggle", "", 4, "matTreeNodeDef"], [4, "matTreeNodeDef", "matTreeNodeDefWhen"], [1, "thematics-header"], [1, "checks-header"], [3, "checked", "indeterminate", "change"], ["matTreeNodeToggle", ""], [1, "mat-tree-node"], ["mat-icon-button", "", "disabled", ""], [1, "tree-check", 3, "checked", "click", "change"], ["mat-icon-button", "", 3, "click"], [3, "svgIcon"], [1, "tree-check-2", 3, "checked", "indeterminate", "change"], [1, "tree-ul"], ["matTreeNodeOutlet", ""], ["mat-raised-button", "", 1, "clear-search-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "clear-form-button", 3, "disabled", "click"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 1, "chevron-down", 3, "matTooltip", "click"], ["svgIcon", "chevron-down"], [1, "results"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], [1, "results-list", 3, "template", "store", "entitySelectChange"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click"], ["svgIcon", "chevron-up"]], template: function SpatialFilterItemComponent_Template(rf, ctx) { if (rf & 1) {
28821
+ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SpatialFilterItemComponent, selectors: [["igo-spatial-filter-item"]], inputs: { map: "map", type: "type", queryType: "queryType", zone: "zone", loading: "loading", store: "store", layers: "layers", allLayers: "allLayers", thematicLength: "thematicLength" }, outputs: { toggleSearch: "toggleSearch", itemTypeChange: "itemTypeChange", thematicChange: "thematicChange", drawZoneEvent: "drawZoneEvent", bufferEvent: "bufferEvent", zoneWithBufferChange: "zoneWithBufferChange", measureUnitChange: "measureUnitChange", radiusEvent: "radiusEvent", freehandControl: "freehandControl", predefinedRadius: "predefinedRadius", clearButtonEvent: "clearButtonEvent", clearSearchEvent: "clearSearchEvent", export: "export", openWorkspace: "openWorkspace", entityChange: "entityChange" }, decls: 29, vars: 43, consts: [[3, "formControl", "map", "geometryType", "drawGuide", "measure", "drawControlIsActive", "freehandDrawIsActive", "drawStyle", "overlayStyle", "radius", "predefinedRadius"], [1, "header"], [3, "checked", "labelPosition", "change", 4, "ngIf"], ["class", "buffer-unit", 4, "ngIf"], ["class", "radius-unit", 4, "ngIf"], [1, "title", "mat-typography"], [3, "value"], [3, "value", "change", 4, "ngFor", "ngForOf"], ["class", "thematics", 4, "ngIf"], [1, "buttons"], ["mat-raised-button", "", "class", "clear-search-button", 3, "disabled", "click", 4, "ngIf"], ["mat-raised-button", "", "class", "clear-form-button", 3, "disabled", "click", 4, "ngIf"], ["mat-raised-button", "", "color", "primary", 1, "search-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "remove-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "export-button", 3, "disabled", "click"], ["class", "chevron-down", "mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], ["class", "results", 4, "ngIf"], [3, "checked", "labelPosition", "change"], [1, "buffer-unit"], [1, "buffer-form"], [1, "buffer"], ["type", "number", "matInput", "", 3, "placeholder", "formControl", "value", "readonly"], [1, "unit-field"], [3, "value", "selectionChange"], [3, "value", 4, "ngFor", "ngForOf"], [1, "radius-unit"], [1, "radius-form"], [1, "radius"], ["type", "number", "matInput", "", 3, "placeholder", "formControl", "value", "readonly", "input"], [3, "value", "change"], [1, "thematics"], ["matColumnDef", "name"], ["class", "thematics-header", 4, "matHeaderCellDef"], ["matColumnDef", "select"], ["class", "checks-header", 4, "matHeaderCellDef"], [4, "matHeaderRowDef"], [4, "matRowDef", "matRowDefColumns"], [3, "dataSource", "treeControl"], ["matTreeNodeToggle", "", 4, "matTreeNodeDef"], [4, "matTreeNodeDef", "matTreeNodeDefWhen"], [1, "thematics-header"], [1, "checks-header"], [3, "checked", "indeterminate", "change"], ["matTreeNodeToggle", ""], [1, "mat-tree-node"], ["mat-icon-button", "", "disabled", ""], [1, "tree-check", 3, "checked", "click", "change"], ["mat-icon-button", "", 3, "click"], [3, "svgIcon"], [1, "tree-check-2", 3, "checked", "indeterminate", "change"], [1, "tree-ul"], ["matTreeNodeOutlet", ""], ["mat-raised-button", "", 1, "clear-search-button", 3, "disabled", "click"], ["mat-raised-button", "", 1, "clear-form-button", 3, "disabled", "click"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 1, "chevron-down", 3, "matTooltip", "click"], ["svgIcon", "chevron-down"], [1, "results"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click", 4, "ngIf"], [1, "results-list", 3, "template", "store", "entitySelectChange"], ["mat-icon-button", "", "matTooltipShowDelay", "500", 3, "matTooltip", "click"], ["svgIcon", "chevron-up"]], template: function SpatialFilterItemComponent_Template(rf, ctx) { if (rf & 1) {
27983
28822
  i0.ɵɵelement(0, "igo-geometry-form-field-input", 0);
27984
28823
  i0.ɵɵpipe(1, "async");
27985
28824
  i0.ɵɵpipe(2, "async");
@@ -28019,7 +28858,7 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
28019
28858
  i0.ɵɵtemplate(27, SpatialFilterItemComponent_button_27_Template, 3, 3, "button", 15);
28020
28859
  i0.ɵɵtemplate(28, SpatialFilterItemComponent_div_28_Template, 3, 3, "div", 16);
28021
28860
  } if (rf & 2) {
28022
- i0.ɵɵproperty("formControl", ctx.formControl)("map", ctx.map)("geometryType", ctx.geometryType)("drawGuide", i0.ɵɵpipeBind1(1, 28, ctx.drawGuide$))("measure", ctx.measure)("drawControlIsActive", ctx.drawControlIsActive)("freehandDrawIsActive", ctx.freehandDrawIsActive)("drawStyle", i0.ɵɵpipeBind1(2, 30, ctx.drawStyle$))("overlayStyle", i0.ɵɵpipeBind1(3, 32, ctx.overlayStyle$))("radius", ctx.radius);
28861
+ i0.ɵɵproperty("formControl", ctx.formControl)("map", ctx.map)("geometryType", ctx.geometryType)("drawGuide", i0.ɵɵpipeBind1(1, 29, ctx.drawGuide$))("measure", ctx.measure)("drawControlIsActive", ctx.drawControlIsActive)("freehandDrawIsActive", ctx.freehandDrawIsActive)("drawStyle", i0.ɵɵpipeBind1(2, 31, ctx.drawStyle$))("overlayStyle", i0.ɵɵpipeBind1(3, 33, ctx.overlayStyle$))("radius", ctx.radius)("predefinedRadius", ctx.predefinedRadius);
28023
28862
  i0.ɵɵadvance(5);
28024
28863
  i0.ɵɵproperty("ngIf", !ctx.isPredefined());
28025
28864
  i0.ɵɵadvance(1);
@@ -28029,7 +28868,7 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
28029
28868
  i0.ɵɵadvance(1);
28030
28869
  i0.ɵɵproperty("ngIf", ctx.isPoint());
28031
28870
  i0.ɵɵadvance(2);
28032
- i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(11, 34, "igo.geo.spatialFilter.search"), " : ");
28871
+ i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(11, 35, "igo.geo.spatialFilter.search"), " : ");
28033
28872
  i0.ɵɵadvance(2);
28034
28873
  i0.ɵɵproperty("value", ctx.selectedItemType);
28035
28874
  i0.ɵɵadvance(1);
@@ -28043,15 +28882,15 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
28043
28882
  i0.ɵɵadvance(1);
28044
28883
  i0.ɵɵproperty("disabled", ctx.disableSearchButton());
28045
28884
  i0.ɵɵadvance(1);
28046
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(20, 36, "igo.geo.spatialFilter.goSearch"), " ");
28885
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(20, 37, "igo.geo.spatialFilter.goSearch"), " ");
28047
28886
  i0.ɵɵadvance(2);
28048
28887
  i0.ɵɵproperty("disabled", ctx.allLayers.length === 0);
28049
28888
  i0.ɵɵadvance(1);
28050
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 38, "igo.geo.spatialFilter.removeLayer"), " ");
28889
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 39, "igo.geo.spatialFilter.removeLayer"), " ");
28051
28890
  i0.ɵɵadvance(2);
28052
28891
  i0.ɵɵproperty("disabled", !ctx.store.entities$.getValue().length);
28053
28892
  i0.ɵɵadvance(1);
28054
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 40, "igo.geo.spatialFilter.exportLayer"), " ");
28893
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 41, "igo.geo.spatialFilter.exportLayer"), " ");
28055
28894
  i0.ɵɵadvance(2);
28056
28895
  i0.ɵɵproperty("ngIf", ctx.store.all().length && ctx.tableTemplate && !ctx.listIsVisible);
28057
28896
  i0.ɵɵadvance(1);
@@ -28059,7 +28898,7 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
28059
28898
  } }, styles: [".header[_ngcontent-%COMP%]{margin-top:5px;width:100%}.mat-slide-toggle[_ngcontent-%COMP%]{padding:5px;margin-bottom:15px;width:98%}.mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 20px)}.title[_ngcontent-%COMP%]{margin-left:5px;font-size:medium;font-size:initial}.mat-radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding-top:10px}.mat-radio-button[_ngcontent-%COMP%]{display:inline-flex;position:relative;margin-left:16px;margin-top:10px}.mat-form-field[_ngcontent-%COMP%]{margin-top:5px}.mat-column-select[_ngcontent-%COMP%]{overflow:auto}.buttons[_ngcontent-%COMP%]{margin-top:15px}.search-button[_ngcontent-%COMP%]{left:15px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.search-button[_ngcontent-%COMP%]{left:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.export-button[_ngcontent-%COMP%]{left:15px;width:46%;margin-bottom:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.export-button[_ngcontent-%COMP%]{left:10px;margin-top:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.remove-button[_ngcontent-%COMP%]{margin-top:12px;left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.remove-button[_ngcontent-%COMP%]{margin:0;width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-form-button[_ngcontent-%COMP%]{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-form-button[_ngcontent-%COMP%]{width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-search-button[_ngcontent-%COMP%]{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-search-button[_ngcontent-%COMP%]{width:45%;min-height:35px;white-space:normal;line-height:normal}}.thematics[_ngcontent-%COMP%]{max-height:35%;overflow:auto;margin-top:5px;width:98%}.results[_ngcontent-%COMP%]{overflow:auto;max-height:250px;width:98%}.mat-column-typeResults[_ngcontent-%COMP%]{max-width:100px;margin-right:5px}.buffer-unit[_ngcontent-%COMP%], .radius-unit[_ngcontent-%COMP%]{display:flex;width:100%;margin-left:2px;padding:5px}.radius[_ngcontent-%COMP%], .buffer[_ngcontent-%COMP%]{display:flex;flex-flow:column nowrap;width:110%}.unit-field[_ngcontent-%COMP%]{width:110px;margin-left:30px}.example-tree-invisible[_ngcontent-%COMP%]{display:none}.tree-ul[_ngcontent-%COMP%]{margin:0;padding:0 0 0 20px;list-style-type:none}.tree-check[_ngcontent-%COMP%], .tree-check-2[_ngcontent-%COMP%]{position:relative;margin-left:auto;margin-right:5px}.thematics-header[_ngcontent-%COMP%]{max-width:250px}.checks-header[_ngcontent-%COMP%]{padding:none;max-width:calc(100% - 316px);overflow:hidden}.mat-checkbox[_ngcontent-%COMP%]{padding:5px}.mat-tree-node[_ngcontent-%COMP%]{position:relative;min-height:42px;width:280px}.mat-header-cell[_ngcontent-%COMP%]{height:56px}.results[_ngcontent-%COMP%]{max-height:45%;width:98%}.results[_ngcontent-%COMP%] igo-entity-table[_ngcontent-%COMP%] div.table-container{overflow:visible;overflow:initial}"], changeDetection: 0 });
28060
28899
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SpatialFilterItemComponent, [{
28061
28900
  type: Component,
28062
- args: [{ selector: 'igo-spatial-filter-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-geometry-form-field-input\n [formControl]=\"formControl\"\n [map]=\"map\"\n [geometryType]=\"geometryType\"\n [drawGuide]=\"drawGuide$ | async\"\n [measure]=\"measure\"\n [drawControlIsActive]=\"drawControlIsActive\"\n [freehandDrawIsActive]=\"freehandDrawIsActive\"\n [drawStyle]=\"drawStyle$ | async\"\n [overlayStyle]=\"overlayStyle$ | async\"\n [radius]=\"radius\">\n</igo-geometry-form-field-input>\n\n<div class=\"header\">\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\n [checked]=\"drawControlIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onDrawControlChange()\">\n {{'igo.geo.spatialFilter.drawControl' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\n [checked]=\"freehandDrawIsActive\"\n [labelPosition]=\"'before'\"\n (change)=\"onfreehandControlChange()\">\n {{'igo.geo.spatialFilter.freehandControl' | translate}}\n </mat-slide-toggle>\n</div>\n\n<div class=\"buffer-unit\" *ngIf=\"isPolygon()\">\n <form class=\"buffer-form\">\n <mat-form-field class=\"buffer\">\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.buffer' | translate}}\" [formControl]=\"bufferFormControl\"\n [value]=\"0\" [readonly]=\"this.formControl.value === null\">\n </mat-form-field>\n </form>\n\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"measureUnit\"\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\n {{('igo.geo.measure.' + measureUnit) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n\n<div class=\"radius-unit\" *ngIf=\"isPoint()\">\n <form class=\"radius-form\">\n <mat-form-field class=\"radius\">\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.radius' | translate}}\" [formControl]=\"radiusFormControl\"\n [value]=\"1000\" (input)=\"getRadius()\" [readonly]=\"this.freehandDrawIsActive && this.formControl.value === null\">\n </mat-form-field>\n </form>\n\n <mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"measureUnit\"\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\n {{('igo.geo.measure.' + measureUnit) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n</div>\n\n<mat-label class=\"title mat-typography\">{{'igo.geo.spatialFilter.search' | translate}} : </mat-label>\n<mat-radio-group [value]=\"selectedItemType\">\n <mat-radio-button *ngFor=\"let item of itemType\"\n [value]=\"item\"\n (change)=\"onItemTypeChange($event)\">\n {{'igo.geo.spatialFilter.' + item | translate}}\n </mat-radio-button>\n</mat-radio-group>\n\n<div class=\"thematics\" *ngIf=\"(selectedItemType==='Thematics' && !tableTemplate) || (selectedItemType==='Thematics' && tableTemplate && !listIsVisible)\">\n <mat-table>\n <!-- Name Column -->\n <ng-container matColumnDef=\"name\">\n <mat-header-cell *matHeaderCellDef class=\"thematics-header\">{{'igo.geo.spatialFilter.Thematics' | translate}}</mat-header-cell>\n </ng-container>\n\n <!-- Select Column -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef class=\"checks-header\">\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"selectedThematics.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </mat-header-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"></mat-row>\n\n </mat-table>\n\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\n <!-- This is the tree node template for leaf nodes -->\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle>\n <li class=\"mat-tree-node\">\n <!-- use a disabled button to provide padding for tree leaf -->\n <button mat-icon-button disabled></button>\n {{node.name}}\n <mat-checkbox class=\"tree-check\" (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? onToggleChange(node) : null\"\n [checked]=\"selectedThematics.isSelected(node)\">\n </mat-checkbox>\n </li>\n </mat-tree-node>\n\n <!-- This is the tree node template for expandable nodes -->\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChild\">\n <div class=\"mat-tree-node\">\n <button mat-icon-button\n (click)=\"onToggleClick(node)\">\n <mat-icon [svgIcon]=\"treeControl.isExpanded(node) ? 'chevron-down' : 'chevron-right'\"></mat-icon>\n </button>\n {{node.name}}\n <mat-checkbox class=\"tree-check-2\" (change)=\"$event ? childrensToggle(node) : null\"\n [checked]=\"isAllSelected(node)\"\n [indeterminate]=\"hasChildrenSelected(node) && !isAllSelected(node)\">\n </mat-checkbox>\n </div>\n <ul class=\"tree-ul\" [class.example-tree-invisible]=\"!treeControl.isExpanded(node)\">\n <ng-container matTreeNodeOutlet></ng-container>\n </ul>\n </mat-nested-tree-node>\n\n </mat-tree>\n</div>\n\n<div class=\"buttons\">\n\n <button *ngIf=\"isPredefined()\" mat-raised-button class=\"clear-search-button\" [disabled]=\"disabledClearSearch()\"\n (click)=\"clearSearch()\">\n {{'igo.geo.spatialFilter.clearSearch' | translate}}\n </button>\n\n <button *ngIf=\"isPolygon() || isPoint()\" mat-raised-button class=\"clear-form-button\" [disabled]=\"this.formControl.value === null\"\n (click)=\"clearDrawZone()\">\n {{'igo.geo.spatialFilter.clearForm' | translate}}\n </button>\n\n <button mat-raised-button class=\"search-button\" [disabled]=\"disableSearchButton()\" color=\"primary\"\n (click)=\"toggleSearchButton()\">\n {{'igo.geo.spatialFilter.goSearch' | translate}}\n </button>\n\n <button mat-raised-button class=\"remove-button\" [disabled]=\"allLayers.length === 0\" (click)=\"clearButton()\">\n {{'igo.geo.spatialFilter.removeLayer' | translate}}\n </button>\n\n <button mat-raised-button class=\"export-button\" [disabled]=\"!store.entities$.getValue().length\" (click)=\"export.emit()\">\n {{'igo.geo.spatialFilter.exportLayer' | translate}}\n </button>\n\n</div>\n\n<button\n class=\"chevron-down\"\n *ngIf=\"store.all().length && tableTemplate && !listIsVisible\"\n mat-icon-button\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.spatialFilter.showSearchResults' | translate\"\n (click)=\"toggleVisibleList()\">\n <mat-icon svgIcon=\"chevron-down\"></mat-icon>\n</button>\n\n<div class=\"results\" *ngIf=\"store.all().length && tableTemplate && listIsVisible\">\n <button\n *ngIf=\"listIsVisible\"\n mat-icon-button\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.spatialFilter.hideSearchResults' | translate\"\n (click)=\"toggleVisibleList()\">\n <mat-icon svgIcon=\"chevron-up\"></mat-icon>\n </button>\n <igo-entity-table\n class=\"results-list\"\n [template]=\"tableTemplate\"\n [store]=\"store\"\n (entitySelectChange)=\"entityChange.emit($event)\">\n </igo-entity-table>\n</div>\n", styles: [".header{margin-top:5px;width:100%}.mat-slide-toggle{padding:5px;margin-bottom:15px;width:98%}.mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 20px)}.title{margin-left:5px;font-size:medium;font-size:initial}.mat-radio-group{display:flex;flex-direction:column;padding-top:10px}.mat-radio-button{display:inline-flex;position:relative;margin-left:16px;margin-top:10px}.mat-form-field{margin-top:5px}.mat-column-select{overflow:auto}.buttons{margin-top:15px}.search-button{left:15px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.search-button{left:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.export-button{left:15px;width:46%;margin-bottom:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.export-button{left:10px;margin-top:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.remove-button{margin-top:12px;left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.remove-button{margin:0;width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-form-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-form-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-search-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-search-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.thematics{max-height:35%;overflow:auto;margin-top:5px;width:98%}.results{overflow:auto;max-height:250px;width:98%}.mat-column-typeResults{max-width:100px;margin-right:5px}.buffer-unit,.radius-unit{display:flex;width:100%;margin-left:2px;padding:5px}.radius,.buffer{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}.example-tree-invisible{display:none}.tree-ul{margin:0;padding:0 0 0 20px;list-style-type:none}.tree-check,.tree-check-2{position:relative;margin-left:auto;margin-right:5px}.thematics-header{max-width:250px}.checks-header{padding:none;max-width:calc(100% - 316px);overflow:hidden}.mat-checkbox{padding:5px}.mat-tree-node{position:relative;min-height:42px;width:280px}.mat-header-cell{height:56px}.results{max-height:45%;width:98%}.results igo-entity-table ::ng-deep div.table-container{overflow:visible;overflow:initial}\n"] }]
28901
+ args: [{ selector: 'igo-spatial-filter-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-geometry-form-field-input\r\n [formControl]=\"formControl\"\r\n [map]=\"map\"\r\n [geometryType]=\"geometryType\"\r\n [drawGuide]=\"drawGuide$ | async\"\r\n [measure]=\"measure\"\r\n [drawControlIsActive]=\"drawControlIsActive\"\r\n [freehandDrawIsActive]=\"freehandDrawIsActive\"\r\n [drawStyle]=\"drawStyle$ | async\"\r\n [overlayStyle]=\"overlayStyle$ | async\"\r\n [radius]=\"radius\"\r\n [predefinedRadius]=\"predefinedRadius\">\r\n</igo-geometry-form-field-input>\r\n\r\n<div class=\"header\">\r\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\r\n [checked]=\"drawControlIsActive\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onDrawControlChange()\">\r\n {{'igo.geo.spatialFilter.drawControl' | translate}}\r\n </mat-slide-toggle>\r\n <mat-slide-toggle *ngIf=\"!isPredefined()\"\r\n [checked]=\"freehandDrawIsActive\"\r\n [labelPosition]=\"'before'\"\r\n (change)=\"onfreehandControlChange()\">\r\n {{'igo.geo.spatialFilter.freehandControl' | translate}}\r\n </mat-slide-toggle>\r\n</div>\r\n\r\n<div class=\"buffer-unit\" *ngIf=\"isPolygon()\">\r\n <form class=\"buffer-form\">\r\n <mat-form-field class=\"buffer\">\r\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.buffer' | translate}}\" [formControl]=\"bufferFormControl\"\r\n [value]=\"0\" [readonly]=\"this.formControl.value === null\">\r\n </mat-form-field>\r\n </form>\r\n\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select\r\n [value]=\"measureUnit\"\r\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\r\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\r\n {{('igo.geo.measure.' + measureUnit) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n\r\n<div class=\"radius-unit\" *ngIf=\"isPoint()\">\r\n <form class=\"radius-form\">\r\n <mat-form-field class=\"radius\">\r\n <input type=\"number\" matInput placeholder=\"{{'igo.geo.spatialFilter.radius' | translate}}\" [formControl]=\"radiusFormControl\"\r\n [value]=\"1000\" (input)=\"getRadius()\" [readonly]=\"this.freehandDrawIsActive && this.formControl.value === null\">\r\n </mat-form-field>\r\n </form>\r\n\r\n <mat-form-field class=\"unit-field\">\r\n <mat-select\r\n [value]=\"measureUnit\"\r\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\r\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\r\n {{('igo.geo.measure.' + measureUnit) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n</div>\r\n\r\n<mat-label class=\"title mat-typography\">{{'igo.geo.spatialFilter.search' | translate}} : </mat-label>\r\n<mat-radio-group [value]=\"selectedItemType\">\r\n <mat-radio-button *ngFor=\"let item of itemType\"\r\n [value]=\"item\"\r\n (change)=\"onItemTypeChange($event)\">\r\n {{'igo.geo.spatialFilter.' + item | translate}}\r\n </mat-radio-button>\r\n</mat-radio-group>\r\n\r\n<div class=\"thematics\" *ngIf=\"(selectedItemType==='Thematics' && !tableTemplate) || (selectedItemType==='Thematics' && tableTemplate && !listIsVisible)\">\r\n <mat-table>\r\n <!-- Name Column -->\r\n <ng-container matColumnDef=\"name\">\r\n <mat-header-cell *matHeaderCellDef class=\"thematics-header\">{{'igo.geo.spatialFilter.Thematics' | translate}}</mat-header-cell>\r\n </ng-container>\r\n\r\n <!-- Select Column -->\r\n <ng-container matColumnDef=\"select\">\r\n <mat-header-cell *matHeaderCellDef class=\"checks-header\">\r\n <mat-checkbox (change)=\"$event ? masterToggle() : null\"\r\n [checked]=\"isAllSelected()\"\r\n [indeterminate]=\"selectedThematics.hasValue() && !isAllSelected()\">\r\n </mat-checkbox>\r\n </mat-header-cell>\r\n </ng-container>\r\n\r\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns: displayedColumns;\"></mat-row>\r\n\r\n </mat-table>\r\n\r\n <mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <!-- This is the tree node template for leaf nodes -->\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle>\r\n <li class=\"mat-tree-node\">\r\n <!-- use a disabled button to provide padding for tree leaf -->\r\n <button mat-icon-button disabled></button>\r\n {{node.name}}\r\n <mat-checkbox class=\"tree-check\" (click)=\"$event.stopPropagation()\"\r\n (change)=\"$event ? onToggleChange(node) : null\"\r\n [checked]=\"selectedThematics.isSelected(node)\">\r\n </mat-checkbox>\r\n </li>\r\n </mat-tree-node>\r\n\r\n <!-- This is the tree node template for expandable nodes -->\r\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChild\">\r\n <div class=\"mat-tree-node\">\r\n <button mat-icon-button\r\n (click)=\"onToggleClick(node)\">\r\n <mat-icon [svgIcon]=\"treeControl.isExpanded(node) ? 'chevron-down' : 'chevron-right'\"></mat-icon>\r\n </button>\r\n {{node.name}}\r\n <mat-checkbox class=\"tree-check-2\" (change)=\"$event ? childrensToggle(node) : null\"\r\n [checked]=\"isAllSelected(node)\"\r\n [indeterminate]=\"hasChildrenSelected(node) && !isAllSelected(node)\">\r\n </mat-checkbox>\r\n </div>\r\n <ul class=\"tree-ul\" [class.example-tree-invisible]=\"!treeControl.isExpanded(node)\">\r\n <ng-container matTreeNodeOutlet></ng-container>\r\n </ul>\r\n </mat-nested-tree-node>\r\n\r\n </mat-tree>\r\n</div>\r\n\r\n<div class=\"buttons\">\r\n\r\n <button *ngIf=\"isPredefined()\" mat-raised-button class=\"clear-search-button\" [disabled]=\"disabledClearSearch()\"\r\n (click)=\"clearSearch()\">\r\n {{'igo.geo.spatialFilter.clearSearch' | translate}}\r\n </button>\r\n\r\n <button *ngIf=\"isPolygon() || isPoint()\" mat-raised-button class=\"clear-form-button\" [disabled]=\"this.formControl.value === null\"\r\n (click)=\"clearDrawZone()\">\r\n {{'igo.geo.spatialFilter.clearForm' | translate}}\r\n </button>\r\n\r\n <button mat-raised-button class=\"search-button\" [disabled]=\"disableSearchButton()\" color=\"primary\"\r\n (click)=\"toggleSearchButton()\">\r\n {{'igo.geo.spatialFilter.goSearch' | translate}}\r\n </button>\r\n\r\n <button mat-raised-button class=\"remove-button\" [disabled]=\"allLayers.length === 0\" (click)=\"clearButton()\">\r\n {{'igo.geo.spatialFilter.removeLayer' | translate}}\r\n </button>\r\n\r\n <button mat-raised-button class=\"export-button\" [disabled]=\"!store.entities$.getValue().length\" (click)=\"export.emit()\">\r\n {{'igo.geo.spatialFilter.exportLayer' | translate}}\r\n </button>\r\n\r\n</div>\r\n\r\n<button\r\n class=\"chevron-down\"\r\n *ngIf=\"store.all().length && tableTemplate && !listIsVisible\"\r\n mat-icon-button\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.spatialFilter.showSearchResults' | translate\"\r\n (click)=\"toggleVisibleList()\">\r\n <mat-icon svgIcon=\"chevron-down\"></mat-icon>\r\n</button>\r\n\r\n<div class=\"results\" *ngIf=\"store.all().length && tableTemplate && listIsVisible\">\r\n <button\r\n *ngIf=\"listIsVisible\"\r\n mat-icon-button\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.spatialFilter.hideSearchResults' | translate\"\r\n (click)=\"toggleVisibleList()\">\r\n <mat-icon svgIcon=\"chevron-up\"></mat-icon>\r\n </button>\r\n <igo-entity-table\r\n class=\"results-list\"\r\n [template]=\"tableTemplate\"\r\n [store]=\"store\"\r\n (entitySelectChange)=\"entityChange.emit($event)\">\r\n </igo-entity-table>\r\n</div>\r\n", styles: [".header{margin-top:5px;width:100%}.mat-slide-toggle{padding:5px;margin-bottom:15px;width:98%}.mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 20px)}.title{margin-left:5px;font-size:medium;font-size:initial}.mat-radio-group{display:flex;flex-direction:column;padding-top:10px}.mat-radio-button{display:inline-flex;position:relative;margin-left:16px;margin-top:10px}.mat-form-field{margin-top:5px}.mat-column-select{overflow:auto}.buttons{margin-top:15px}.search-button{left:15px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.search-button{left:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.export-button{left:15px;width:46%;margin-bottom:5px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.export-button{left:10px;margin-top:10px;width:45%;min-height:35px;white-space:normal;line-height:normal}}.remove-button{margin-top:12px;left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.remove-button{margin:0;width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-form-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-form-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.clear-search-button{left:5px;width:46%}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.clear-search-button{width:45%;min-height:35px;white-space:normal;line-height:normal}}.thematics{max-height:35%;overflow:auto;margin-top:5px;width:98%}.results{overflow:auto;max-height:250px;width:98%}.mat-column-typeResults{max-width:100px;margin-right:5px}.buffer-unit,.radius-unit{display:flex;width:100%;margin-left:2px;padding:5px}.radius,.buffer{display:flex;flex-flow:column nowrap;width:110%}.unit-field{width:110px;margin-left:30px}.example-tree-invisible{display:none}.tree-ul{margin:0;padding:0 0 0 20px;list-style-type:none}.tree-check,.tree-check-2{position:relative;margin-left:auto;margin-right:5px}.thematics-header{max-width:250px}.checks-header{padding:none;max-width:calc(100% - 316px);overflow:hidden}.mat-checkbox{padding:5px}.mat-tree-node{position:relative;min-height:42px;width:280px}.mat-header-cell{height:56px}.results{max-height:45%;width:98%}.results igo-entity-table ::ng-deep div.table-container{overflow:visible;overflow:initial}\n"] }]
28063
28902
  }], function () { return [{ type: i0.ChangeDetectorRef }, { type: SpatialFilterService }, { type: i2$1.MessageService }, { type: i2$1.LanguageService }]; }, { map: [{
28064
28903
  type: Input
28065
28904
  }], type: [{
@@ -28096,6 +28935,8 @@ SpatialFilterItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
28096
28935
  type: Output
28097
28936
  }], freehandControl: [{
28098
28937
  type: Output
28938
+ }], predefinedRadius: [{
28939
+ type: Output
28099
28940
  }], clearButtonEvent: [{
28100
28941
  type: Output
28101
28942
  }], clearSearchEvent: [{
@@ -28952,7 +29793,7 @@ OgcFilterTimeComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcF
28952
29793
  } }, styles: ["input{text-align:center!important;margin:auto 5px!important}.slider-container[_ngcontent-%COMP%]{text-align:center}.datetime-input[_ngcontent-%COMP%]{display:inline-block;width:100px;margin:10px 0 5px 10px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.datetime-input[_ngcontent-%COMP%]{width:36%;margin:0}}.date-input[_ngcontent-%COMP%]{width:100px;margin-right:25px}.time-input[_ngcontent-%COMP%]{margin-right:25px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.time-input[_ngcontent-%COMP%]{margin-right:5px}}.hour-input[_ngcontent-%COMP%], .minute-input[_ngcontent-%COMP%]{width:35px;margin-left:7px}.year-input[_ngcontent-%COMP%]{width:98px;margin:10px 14px 5px 4px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.year-input[_ngcontent-%COMP%]{width:32%;margin:0 0 0 10px}}.year-input-hide[_ngcontent-%COMP%]{width:120px;margin-right:25px;display:none}.year-input-only-year[_ngcontent-%COMP%]{width:120px;margin-right:25px}.reset-button[_ngcontent-%COMP%]{width:25px;padding-left:8px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.reset-button[_ngcontent-%COMP%]{padding-left:8px}}.toggle-filter-state[_ngcontent-%COMP%]{padding-left:20px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.toggle-filter-state[_ngcontent-%COMP%]{padding-left:12px}} .datepicker-year .mat-calendar-arrow{display:none} .datepicker-year .mat-calendar-period-button{pointer-events:none} .datepicker-year .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover{background-color:#0000001f;border-radius:999px}"] });
28953
29794
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterTimeComponent, [{
28954
29795
  type: Component,
28955
- args: [{ selector: 'igo-ogc-filter-time', template: "<div class=\"datetime-container\">\n <mat-slide-toggle \n *ngIf=\"this.currentFilter.sliderOptions?.enabled\"\n [(ngModel)]=\"sliderMode\"\n (change)=\"modeChange($event)\">\n {{'igo.geo.filter.sliderModeTitle' | translate}}\n </mat-slide-toggle>\n\n <div class=\"slider-container\" *ngIf=\"sliderMode\">\n <igo-ogc-filter-time-slider\n [begin]=\"beginValue\"\n [max]=\"this.restrictedToStep() ? this.maxDate : this.endValue\"\n [currentFilter]=\"currentFilter\" \n [datasource]=\"datasource\"\n (changeProperty)=\"changePropertyByPass($event)\"\n >\n </igo-ogc-filter-time-slider>\n \n </div>\n\n <div *ngIf=\"!sliderMode\">\n\n <div class=\"year-input-container\" *ngIf=\"calendarTypeYear\">\n <!-- to emulate a year-picker, 2 input: first input to show user just year and second input hiden and bind \n with the datepicker -->\n <mat-form-field class=\"year-input\">\n <mat-label>{{'igo.geo.timeFilter.startYear'| translate}}</mat-label>\n <input\n matInput\n class=\"year-input-only-year\"\n value=\"{{onlyYearBegin}}\"\n (change)= \"yearOnlyInputChange($event, beginDatepicker, 'begin')\"\n [disabled]= \"filterStateDisable\"\n >\n <mat-datepicker-toggle matSuffix [for]=\"beginDatepicker\" [disabled]=\"filterStateDisable\"></mat-datepicker-toggle>\n \n <mat-datepicker\n panelClass=\"datepicker-year\"\n #beginDatepicker\n [startView]=\"calendarView()\"\n [startAt]=\"beginValue\"\n (yearSelected)=\"yearSelected($event, beginDatepicker, 'begin')\"\n >\n </mat-datepicker>\n\n <input #beginYear\n class= \"year-input-hide\"\n matInput\n [matDatepicker]=\"beginDatepicker\"\n enabled= false\n readonly= true\n [value]=\"beginValue?beginValue:handleDate(datasource.options.minDate)\"\n [min]=\"handleDate(datasource.options.minDate)\"\n [max]=\"(endValue && (!restrictedToStep()))?endValue:handleDate(datasource.options.maxDate)\"\n >\n </mat-form-field>\n\n <mat-form-field class=\"year-input\">\n <mat-label>{{'igo.geo.timeFilter.endYear'| translate}}</mat-label>\n <input\n matInput\n class=\"year-input-only-year\"\n value=\"{{onlyYearEnd}}\"\n (change)= \"yearOnlyInputChange($event, endDatepicker, 'end')\"\n [disabled] = \"filterStateDisable\">\n <mat-datepicker-toggle matSuffix [for]=\"endDatepicker\" [disabled]=\"filterStateDisable\"></mat-datepicker-toggle>\n <mat-datepicker\n panelClass=\"datepicker-year\"\n #endDatepicker\n [startView]=\"calendarView()\"\n [startAt]=\"endValue\"\n (yearSelected)=\"yearSelected($event, endDatepicker, 'end')\"\n >\n </mat-datepicker>\n\n <input #endYear\n class= \"year-input-hide\"\n matInput\n [matDatepicker]=\"endDatepicker\"\n enabled= false\n readonly= true\n [value]=\"endValue?endValue:handleDate(datasource.options.maxDate)\"\n [min]=\"beginValue?beginValue:handleDate(datasource.options.minDate)\"\n [max]=\"handleDate(datasource.options.maxDate)\"\n >\n </mat-form-field>\n <button class=\"reset-button\" \n mat-icon-button\n color=\"primary\" \n (click)=\"resetFilter()\" \n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" \n [disabled]= \"filterStateDisable\">\n <mat-icon svgIcon=\"{{resetIcon}}\"></mat-icon>\n </button>\n <mat-slide-toggle \n class='toggle-filter-state' \n (change)=\"toggleFilterState()\" \n [matTooltip]=\"'igo.geo.filter.toggleFilterState' | translate\" \n tooltip-position=\"below\" \n matTooltipShowDelay=\"500\"\n [checked]=\"!filterStateDisable\">\n </mat-slide-toggle>\n\n </div>\n\n <div class=\"datetime-input-container\" *ngIf=\"calendarType()!=='year'\">\n <div class=\"datetime-input\">\n <mat-form-field class=\"date-input\">\n <mat-datepicker-toggle matSuffix [for]=\"beginDatepicker\" [disabled]= \"filterStateDisable\"></mat-datepicker-toggle>\n <input #begin\n matInput\n [matDatepicker]=\"beginDatepicker\"\n [placeholder]=\"'igo.geo.timeFilter.startDate' | translate\"\n [attr.disabled]=\"!currentFilter.active\"\n (dateChange)=\"changeTemporalProperty(begin.value, 1)\"\n [matDatepickerFilter]=\"dateFilter.bind(this, 'begin')\"\n [value]=\"beginValue?beginValue:handleDate(datasource.options.minDate)\"\n [min]=\"handleDate(datasource.options.minDate)\"\n [max]=\"(endValue && (!restrictedToStep()))?endValue:handleDate(datasource.options.maxDate)\" \n [disabled]= \"filterStateDisable\">\n <span class=\"filler\"></span>\n <mat-datepicker\n #beginDatepicker\n [startView]=\"calendarView()\"\n [startAt]=\"beginValue\"\n (yearSelected)=\"yearSelected($event, beginDatepicker, 'begin')\"\n (monthSelected)=\"monthSelected($event, beginDatepicker, 'begin')\">\n </mat-datepicker>\n </mat-form-field>\n\n <div class=\"time-input\">\n <mat-form-field class=\"hour-input\" *ngIf=\"calendarType()==='datetime'\">\n <mat-label>{{'igo.geo.timeFilter.hour' | translate}}</mat-label>\n <mat-select\n [formControl]=\"beginHourFormControl\"\n [attr.disabled]=\"!currentFilter.active\"\n (selectionChange)=\"changeTemporalProperty(begin.value, 1)\">\n <mat-option *ngFor=\"let hour of beginHours\" [value]=\"hour\">{{hour}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"minute-input\" *ngIf=\"calendarType()==='datetime'\">\n <mat-label>{{'igo.geo.timeFilter.minute' | translate}}</mat-label>\n <mat-select\n [formControl]=\"beginMinuteFormControl\"\n [attr.disabled]=\"!currentFilter.active\"\n (selectionChange)=\"changeTemporalProperty(begin.value, 1)\">\n <mat-option *ngFor=\"let minute of beginMinutes\" [value]=\"minute\">{{minute}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n <div class=\"datetime-input\" *ngIf=\"!restrictedToStep()\">\n <mat-form-field class=\"date-input\">\n <mat-datepicker-toggle matSuffix [for]=\"endDatepicker\" [disabled]= \"filterStateDisable\"></mat-datepicker-toggle>\n <input #end\n matInput\n [matDatepicker]=\"endDatepicker\"\n [placeholder]=\"'igo.geo.timeFilter.endDate' | translate\"\n [attr.disabled]=\"!currentFilter.active\"\n (dateChange)=\"changeTemporalProperty(end.value, 2)\"\n [matDatepickerFilter]=\"dateFilter.bind(this, 'end')\"\n [value]=\"endValue?endValue:handleDate(datasource.options.maxDate)\"\n [min]=\"beginValue?beginValue:handleDate(datasource.options.minDate)\"\n [max]=\"handleDate(datasource.options.maxDate)\" \n [disabled]= \"filterStateDisable\">\n <span class=\"filler\"></span>\n <mat-datepicker #endDatepicker\n [startView]=\"calendarView()\"\n [startAt]=\"endValue\"\n (yearSelected)=\"yearSelected($event, endDatepicker, 'end')\"\n (monthSelected)=\"monthSelected($event, endDatepicker, 'end')\">\n </mat-datepicker>\n </mat-form-field>\n\n <div class=\"time-input\">\n <mat-form-field class=\"hour-input\" *ngIf=\"calendarType()==='datetime'\" >\n <mat-label>{{'igo.geo.timeFilter.hour' | translate}}</mat-label>\n <mat-select\n [formControl]=\"endHourFormControl\"\n [attr.disabled]=\"!currentFilter.active\"\n (selectionChange)=\"changeTemporalProperty(end.value, 2)\">\n <mat-option *ngFor=\"let hour of endHours\" [value]=\"hour\">{{hour}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"minute-input\" *ngIf=\"calendarType()==='datetime'\">\n <mat-label>{{'igo.geo.timeFilter.minute' | translate}}</mat-label>\n <mat-select\n [formControl]=\"endMinuteFormControl\"\n [attr.disabled]=\"!currentFilter.active\"\n (selectionChange)=\"changeTemporalProperty(end.value, 2)\">\n <mat-option *ngFor=\"let minute of endMinutes\" [value]=\"minute\">{{minute}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n </div>\n\n <button class=\"reset-button\" \n mat-icon-button color=\"primary\"\n (click)=\"resetFilter()\" \n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" \n [disabled]= \"filterStateDisable\">\n <mat-icon svgIcon=\"{{resetIcon}}\"></mat-icon>\n </button>\n <mat-slide-toggle \n class=\"toggle-filter-state\" \n (change)=\"toggleFilterState()\" \n tooltip-position=\"below\" \n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.filter.toggleFilterState' | translate\" \n [checked]= \"!filterStateDisable\">\n </mat-slide-toggle>\n </div>\n </div>\n</div>\n", styles: ["::ng-deep input{text-align:center!important;margin:auto 5px!important}.slider-container{text-align:center}.datetime-input{display:inline-block;width:100px;margin:10px 0 5px 10px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.datetime-input{width:36%;margin:0}}.date-input{width:100px;margin-right:25px}.time-input{margin-right:25px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.time-input{margin-right:5px}}.hour-input,.minute-input{width:35px;margin-left:7px}.year-input{width:98px;margin:10px 14px 5px 4px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.year-input{width:32%;margin:0 0 0 10px}}.year-input-hide{width:120px;margin-right:25px;display:none}.year-input-only-year{width:120px;margin-right:25px}.reset-button{width:25px;padding-left:8px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.reset-button{padding-left:8px}}.toggle-filter-state{padding-left:20px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.toggle-filter-state{padding-left:12px}}::ng-deep .datepicker-year ::ng-deep .mat-calendar-arrow{display:none}::ng-deep .datepicker-year ::ng-deep .mat-calendar-period-button{pointer-events:none}::ng-deep .datepicker-year ::ng-deep .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover{background-color:#0000001f;border-radius:999px}\n"] }]
29796
+ args: [{ selector: 'igo-ogc-filter-time', template: "<div class=\"datetime-container\">\r\n <mat-slide-toggle \r\n *ngIf=\"this.currentFilter.sliderOptions?.enabled\"\r\n [(ngModel)]=\"sliderMode\"\r\n (change)=\"modeChange($event)\">\r\n {{'igo.geo.filter.sliderModeTitle' | translate}}\r\n </mat-slide-toggle>\r\n\r\n <div class=\"slider-container\" *ngIf=\"sliderMode\">\r\n <igo-ogc-filter-time-slider\r\n [begin]=\"beginValue\"\r\n [max]=\"this.restrictedToStep() ? this.maxDate : this.endValue\"\r\n [currentFilter]=\"currentFilter\" \r\n [datasource]=\"datasource\"\r\n (changeProperty)=\"changePropertyByPass($event)\"\r\n >\r\n </igo-ogc-filter-time-slider>\r\n \r\n </div>\r\n\r\n <div *ngIf=\"!sliderMode\">\r\n\r\n <div class=\"year-input-container\" *ngIf=\"calendarTypeYear\">\r\n <!-- to emulate a year-picker, 2 input: first input to show user just year and second input hiden and bind \r\n with the datepicker -->\r\n <mat-form-field class=\"year-input\">\r\n <mat-label>{{'igo.geo.timeFilter.startYear'| translate}}</mat-label>\r\n <input\r\n matInput\r\n class=\"year-input-only-year\"\r\n value=\"{{onlyYearBegin}}\"\r\n (change)= \"yearOnlyInputChange($event, beginDatepicker, 'begin')\"\r\n [disabled]= \"filterStateDisable\"\r\n >\r\n <mat-datepicker-toggle matSuffix [for]=\"beginDatepicker\" [disabled]=\"filterStateDisable\"></mat-datepicker-toggle>\r\n \r\n <mat-datepicker\r\n panelClass=\"datepicker-year\"\r\n #beginDatepicker\r\n [startView]=\"calendarView()\"\r\n [startAt]=\"beginValue\"\r\n (yearSelected)=\"yearSelected($event, beginDatepicker, 'begin')\"\r\n >\r\n </mat-datepicker>\r\n\r\n <input #beginYear\r\n class= \"year-input-hide\"\r\n matInput\r\n [matDatepicker]=\"beginDatepicker\"\r\n enabled= false\r\n readonly= true\r\n [value]=\"beginValue?beginValue:handleDate(datasource.options.minDate)\"\r\n [min]=\"handleDate(datasource.options.minDate)\"\r\n [max]=\"(endValue && (!restrictedToStep()))?endValue:handleDate(datasource.options.maxDate)\"\r\n >\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"year-input\">\r\n <mat-label>{{'igo.geo.timeFilter.endYear'| translate}}</mat-label>\r\n <input\r\n matInput\r\n class=\"year-input-only-year\"\r\n value=\"{{onlyYearEnd}}\"\r\n (change)= \"yearOnlyInputChange($event, endDatepicker, 'end')\"\r\n [disabled] = \"filterStateDisable\">\r\n <mat-datepicker-toggle matSuffix [for]=\"endDatepicker\" [disabled]=\"filterStateDisable\"></mat-datepicker-toggle>\r\n <mat-datepicker\r\n panelClass=\"datepicker-year\"\r\n #endDatepicker\r\n [startView]=\"calendarView()\"\r\n [startAt]=\"endValue\"\r\n (yearSelected)=\"yearSelected($event, endDatepicker, 'end')\"\r\n >\r\n </mat-datepicker>\r\n\r\n <input #endYear\r\n class= \"year-input-hide\"\r\n matInput\r\n [matDatepicker]=\"endDatepicker\"\r\n enabled= false\r\n readonly= true\r\n [value]=\"endValue?endValue:handleDate(datasource.options.maxDate)\"\r\n [min]=\"beginValue?beginValue:handleDate(datasource.options.minDate)\"\r\n [max]=\"handleDate(datasource.options.maxDate)\"\r\n >\r\n </mat-form-field>\r\n <button class=\"reset-button\" \r\n mat-icon-button\r\n color=\"primary\" \r\n (click)=\"resetFilter()\" \r\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" \r\n [disabled]= \"filterStateDisable\">\r\n <mat-icon svgIcon=\"{{resetIcon}}\"></mat-icon>\r\n </button>\r\n <mat-slide-toggle \r\n class='toggle-filter-state' \r\n (change)=\"toggleFilterState()\" \r\n [matTooltip]=\"'igo.geo.filter.toggleFilterState' | translate\" \r\n tooltip-position=\"below\" \r\n matTooltipShowDelay=\"500\"\r\n [checked]=\"!filterStateDisable\">\r\n </mat-slide-toggle>\r\n\r\n </div>\r\n\r\n <div class=\"datetime-input-container\" *ngIf=\"calendarType()!=='year'\">\r\n <div class=\"datetime-input\">\r\n <mat-form-field class=\"date-input\">\r\n <mat-datepicker-toggle matSuffix [for]=\"beginDatepicker\" [disabled]= \"filterStateDisable\"></mat-datepicker-toggle>\r\n <input #begin\r\n matInput\r\n [matDatepicker]=\"beginDatepicker\"\r\n [placeholder]=\"'igo.geo.timeFilter.startDate' | translate\"\r\n [attr.disabled]=\"!currentFilter.active\"\r\n (dateChange)=\"changeTemporalProperty(begin.value, 1)\"\r\n [matDatepickerFilter]=\"dateFilter.bind(this, 'begin')\"\r\n [value]=\"beginValue?beginValue:handleDate(datasource.options.minDate)\"\r\n [min]=\"handleDate(datasource.options.minDate)\"\r\n [max]=\"(endValue && (!restrictedToStep()))?endValue:handleDate(datasource.options.maxDate)\" \r\n [disabled]= \"filterStateDisable\">\r\n <span class=\"filler\"></span>\r\n <mat-datepicker\r\n #beginDatepicker\r\n [startView]=\"calendarView()\"\r\n [startAt]=\"beginValue\"\r\n (yearSelected)=\"yearSelected($event, beginDatepicker, 'begin')\"\r\n (monthSelected)=\"monthSelected($event, beginDatepicker, 'begin')\">\r\n </mat-datepicker>\r\n </mat-form-field>\r\n\r\n <div class=\"time-input\">\r\n <mat-form-field class=\"hour-input\" *ngIf=\"calendarType()==='datetime'\">\r\n <mat-label>{{'igo.geo.timeFilter.hour' | translate}}</mat-label>\r\n <mat-select\r\n [formControl]=\"beginHourFormControl\"\r\n [attr.disabled]=\"!currentFilter.active\"\r\n (selectionChange)=\"changeTemporalProperty(begin.value, 1)\">\r\n <mat-option *ngFor=\"let hour of beginHours\" [value]=\"hour\">{{hour}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field class=\"minute-input\" *ngIf=\"calendarType()==='datetime'\">\r\n <mat-label>{{'igo.geo.timeFilter.minute' | translate}}</mat-label>\r\n <mat-select\r\n [formControl]=\"beginMinuteFormControl\"\r\n [attr.disabled]=\"!currentFilter.active\"\r\n (selectionChange)=\"changeTemporalProperty(begin.value, 1)\">\r\n <mat-option *ngFor=\"let minute of beginMinutes\" [value]=\"minute\">{{minute}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"datetime-input\" *ngIf=\"!restrictedToStep()\">\r\n <mat-form-field class=\"date-input\">\r\n <mat-datepicker-toggle matSuffix [for]=\"endDatepicker\" [disabled]= \"filterStateDisable\"></mat-datepicker-toggle>\r\n <input #end\r\n matInput\r\n [matDatepicker]=\"endDatepicker\"\r\n [placeholder]=\"'igo.geo.timeFilter.endDate' | translate\"\r\n [attr.disabled]=\"!currentFilter.active\"\r\n (dateChange)=\"changeTemporalProperty(end.value, 2)\"\r\n [matDatepickerFilter]=\"dateFilter.bind(this, 'end')\"\r\n [value]=\"endValue?endValue:handleDate(datasource.options.maxDate)\"\r\n [min]=\"beginValue?beginValue:handleDate(datasource.options.minDate)\"\r\n [max]=\"handleDate(datasource.options.maxDate)\" \r\n [disabled]= \"filterStateDisable\">\r\n <span class=\"filler\"></span>\r\n <mat-datepicker #endDatepicker\r\n [startView]=\"calendarView()\"\r\n [startAt]=\"endValue\"\r\n (yearSelected)=\"yearSelected($event, endDatepicker, 'end')\"\r\n (monthSelected)=\"monthSelected($event, endDatepicker, 'end')\">\r\n </mat-datepicker>\r\n </mat-form-field>\r\n\r\n <div class=\"time-input\">\r\n <mat-form-field class=\"hour-input\" *ngIf=\"calendarType()==='datetime'\" >\r\n <mat-label>{{'igo.geo.timeFilter.hour' | translate}}</mat-label>\r\n <mat-select\r\n [formControl]=\"endHourFormControl\"\r\n [attr.disabled]=\"!currentFilter.active\"\r\n (selectionChange)=\"changeTemporalProperty(end.value, 2)\">\r\n <mat-option *ngFor=\"let hour of endHours\" [value]=\"hour\">{{hour}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field class=\"minute-input\" *ngIf=\"calendarType()==='datetime'\">\r\n <mat-label>{{'igo.geo.timeFilter.minute' | translate}}</mat-label>\r\n <mat-select\r\n [formControl]=\"endMinuteFormControl\"\r\n [attr.disabled]=\"!currentFilter.active\"\r\n (selectionChange)=\"changeTemporalProperty(end.value, 2)\">\r\n <mat-option *ngFor=\"let minute of endMinutes\" [value]=\"minute\">{{minute}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <button class=\"reset-button\" \r\n mat-icon-button color=\"primary\"\r\n (click)=\"resetFilter()\" \r\n [matTooltip]=\"'igo.geo.filter.resetFilters' | translate\" \r\n [disabled]= \"filterStateDisable\">\r\n <mat-icon svgIcon=\"{{resetIcon}}\"></mat-icon>\r\n </button>\r\n <mat-slide-toggle \r\n class=\"toggle-filter-state\" \r\n (change)=\"toggleFilterState()\" \r\n tooltip-position=\"below\" \r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.filter.toggleFilterState' | translate\" \r\n [checked]= \"!filterStateDisable\">\r\n </mat-slide-toggle>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["::ng-deep input{text-align:center!important;margin:auto 5px!important}.slider-container{text-align:center}.datetime-input{display:inline-block;width:100px;margin:10px 0 5px 10px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.datetime-input{width:36%;margin:0}}.date-input{width:100px;margin-right:25px}.time-input{margin-right:25px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.time-input{margin-right:5px}}.hour-input,.minute-input{width:35px;margin-left:7px}.year-input{width:98px;margin:10px 14px 5px 4px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.year-input{width:32%;margin:0 0 0 10px}}.year-input-hide{width:120px;margin-right:25px;display:none}.year-input-only-year{width:120px;margin-right:25px}.reset-button{width:25px;padding-left:8px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.reset-button{padding-left:8px}}.toggle-filter-state{padding-left:20px}@media only screen and (orientation:portrait) and (max-width: 599px),only screen and (orientation:landscape) and (max-width: 959px){.toggle-filter-state{padding-left:12px}}::ng-deep .datepicker-year ::ng-deep .mat-calendar-arrow{display:none}::ng-deep .datepicker-year ::ng-deep .mat-calendar-period-button{pointer-events:none}::ng-deep .datepicker-year ::ng-deep .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover{background-color:#0000001f;border-radius:999px}\n"] }]
28956
29797
  }], function () { return [{ type: OGCFilterTimeService }]; }, { datasource: [{
28957
29798
  type: Input
28958
29799
  }], currentFilter: [{
@@ -29125,7 +29966,7 @@ OgcFilterTimeSliderComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type
29125
29966
  } }, dependencies: [i2$2.NgControlStatus, i2$2.NgModel, i2.MatIcon, i3.MatButton, i13$1.MatSlider], styles: ["input{text-align:center!important;margin:auto 5px!important} .mat-slider-thumb{transform:scale(0)!important} .mat-slider-thumb-label{transform:rotate(45deg)!important;border-radius:50% 50% 0!important;background-color:#ffd740!important} .mat-slider-thumb-label-text{opacity:1!important;transform:rotate(135deg)!important} .mat-slider-horizontal .mat-slider-thumb-label{top:10px!important;transform:rotate(225deg)!important} .mat-slider-horizontal.cdk-focused .mat-slider-thumb-label{transform:rotate(225deg)!important}.datetime-container[_ngcontent-%COMP%], .slider-container[_ngcontent-%COMP%]{text-align:center}.datetime-input[_ngcontent-%COMP%]{display:inline-block;margin:5px 25px}.date-input[_ngcontent-%COMP%]{width:120px;margin-right:25px}.time-input[_ngcontent-%COMP%]{display:inherit;margin-right:25px}.hour-input[_ngcontent-%COMP%], .minute-input[_ngcontent-%COMP%]{width:40px}.minute-input[_ngcontent-%COMP%]{margin-left:10px}"] });
29126
29967
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterTimeSliderComponent, [{
29127
29968
  type: Component,
29128
- args: [{ selector: 'igo-ogc-filter-time-slider', template: "<div class=\"slider-container\">\n <mat-slider\n id=\"time-slider\"\n [step]=\"1\"\n [min]=\"1\"\n [max]=\"calculatedStep\"\n [(ngModel)]=\"sliderValue\"\n [displayWith]=\"sliderDisplayWith\"\n (input)=\"handleSliderInput($event)\"\n thumbLabel\n >\n </mat-slider>\n <button mat-icon-button color=\"primary\" (click)=\"playFilter($event)\">\n <mat-icon [svgIcon]=\"playIcon\"></mat-icon>\n </button>\n <button mat-icon-button color=\"primary\" (click)=\"resetFilter($event)\">\n <mat-icon svgIcon=\"{{resetIcon}}\"></mat-icon>\n </button>\n \n</div>", styles: ["::ng-deep input{text-align:center!important;margin:auto 5px!important}::ng-deep .mat-slider-thumb{transform:scale(0)!important}::ng-deep .mat-slider-thumb-label{transform:rotate(45deg)!important;border-radius:50% 50% 0!important;background-color:#ffd740!important}::ng-deep .mat-slider-thumb-label-text{opacity:1!important;transform:rotate(135deg)!important}::ng-deep .mat-slider-horizontal .mat-slider-thumb-label{top:10px!important;transform:rotate(225deg)!important}::ng-deep .mat-slider-horizontal.cdk-focused .mat-slider-thumb-label{transform:rotate(225deg)!important}.datetime-container,.slider-container{text-align:center}.datetime-input{display:inline-block;margin:5px 25px}.date-input{width:120px;margin-right:25px}.time-input{display:inherit;margin-right:25px}.hour-input,.minute-input{width:40px}.minute-input{margin-left:10px}\n"] }]
29969
+ args: [{ selector: 'igo-ogc-filter-time-slider', template: "<div class=\"slider-container\">\r\n <mat-slider\r\n id=\"time-slider\"\r\n [step]=\"1\"\r\n [min]=\"1\"\r\n [max]=\"calculatedStep\"\r\n [(ngModel)]=\"sliderValue\"\r\n [displayWith]=\"sliderDisplayWith\"\r\n (input)=\"handleSliderInput($event)\"\r\n thumbLabel\r\n >\r\n </mat-slider>\r\n <button mat-icon-button color=\"primary\" (click)=\"playFilter($event)\">\r\n <mat-icon [svgIcon]=\"playIcon\"></mat-icon>\r\n </button>\r\n <button mat-icon-button color=\"primary\" (click)=\"resetFilter($event)\">\r\n <mat-icon svgIcon=\"{{resetIcon}}\"></mat-icon>\r\n </button>\r\n \r\n</div>", styles: ["::ng-deep input{text-align:center!important;margin:auto 5px!important}::ng-deep .mat-slider-thumb{transform:scale(0)!important}::ng-deep .mat-slider-thumb-label{transform:rotate(45deg)!important;border-radius:50% 50% 0!important;background-color:#ffd740!important}::ng-deep .mat-slider-thumb-label-text{opacity:1!important;transform:rotate(135deg)!important}::ng-deep .mat-slider-horizontal .mat-slider-thumb-label{top:10px!important;transform:rotate(225deg)!important}::ng-deep .mat-slider-horizontal.cdk-focused .mat-slider-thumb-label{transform:rotate(225deg)!important}.datetime-container,.slider-container{text-align:center}.datetime-input{display:inline-block;margin:5px 25px}.date-input{width:120px;margin-right:25px}.time-input{display:inherit;margin-right:25px}.hour-input,.minute-input{width:40px}.minute-input{margin-left:10px}\n"] }]
29129
29970
  }], function () { return [{ type: OGCFilterTimeService }]; }, { currentFilter: [{
29130
29971
  type: Input
29131
29972
  }], begin: [{
@@ -29343,15 +30184,15 @@ IgoFilterModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [TimeFi
29343
30184
  i0.ɵɵsetComponentScope(TimeFilterButtonComponent, [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5$1.ListItemDirective, i7$1.MatBadge, TimeFilterItemComponent], [i7.TranslatePipe]);
29344
30185
  i0.ɵɵsetComponentScope(TimeFilterItemComponent, [i1$1.NgClass, i1$1.NgIf, i1$1.NgStyle, i2.MatIcon, i3.MatButton, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i4.MatTooltip, LayerLegendComponent, i5$1.CollapseDirective, TimeFilterFormComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
29345
30186
  i0.ɵɵsetComponentScope(TimeFilterListComponent, [i1$1.NgForOf, i5$1.ListItemDirective, i5$1.ListComponent, TimeFilterItemComponent], [FilterableDataSourcePipe]);
29346
- i0.ɵɵsetComponentScope(OgcFilterFormComponent, [i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i9.MatOption, i2.MatIcon, i3.MatButton, i12$1.MatCheckbox, i13.MatFormField, i13.MatSuffix, i14.MatInput, i15.MatSelect, i4.MatTooltip, OgcFilterTimeComponent], [i1$1.AsyncPipe, i7.TranslatePipe, i5$1.KeyValuePipe]);
30187
+ i0.ɵɵsetComponentScope(OgcFilterFormComponent, [i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i9.MatOption, i2.MatIcon, i3.MatButton, i12.MatCheckbox, i13.MatFormField, i13.MatSuffix, i14.MatInput, i15.MatSelect, i4.MatTooltip, OgcFilterTimeComponent], [i1$1.AsyncPipe, i7.TranslatePipe, i5$1.KeyValuePipe]);
29347
30188
  i0.ɵɵsetComponentScope(OgcFilterButtonComponent, [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i5$1.ListItemDirective, i7$1.MatBadge, OgcFilterableItemComponent], [i7.TranslatePipe]);
29348
- i0.ɵɵsetComponentScope(OgcFilterSelectionComponent, [i1$1.NgForOf, i1$1.NgIf, i1$1.NgStyle, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.NgModel, i2$2.FormGroupDirective, i2$2.FormControlName, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i9.MatOption, i2.MatIcon, i17.MatRadioGroup, i17.MatRadioButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i12$1.MatCheckbox, i13.MatFormField, i14.MatInput, i15.MatSelect, i11.MatDivider, i4.MatTooltip, OgcFilterTimeComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
30189
+ i0.ɵɵsetComponentScope(OgcFilterSelectionComponent, [i1$1.NgForOf, i1$1.NgIf, i1$1.NgStyle, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.NgModel, i2$2.FormGroupDirective, i2$2.FormControlName, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i9.MatOption, i2.MatIcon, i17.MatRadioGroup, i17.MatRadioButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i12.MatCheckbox, i13.MatFormField, i14.MatInput, i15.MatSelect, i11.MatDivider, i4.MatTooltip, OgcFilterTimeComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
29349
30190
  i0.ɵɵsetComponentScope(OgcFilterableFormComponent, [i1$1.NgForOf, i1$1.NgIf, i5$1.ListItemDirective, OgcFilterFormComponent,
29350
30191
  OgcFilterSelectionComponent], []);
29351
- i0.ɵɵsetComponentScope(OgcFilterableItemComponent, [i1$1.NgClass, i1$1.NgIf, i1$1.NgStyle, i2$2.NgControlStatus, i2$2.NgModel, i2.MatIcon, i3.MatButton, i12$1.MatCheckbox, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i11.MatDivider, i4.MatTooltip, LayerLegendComponent, i5$1.CollapseDirective, OgcFilterableFormComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
30192
+ i0.ɵɵsetComponentScope(OgcFilterableItemComponent, [i1$1.NgClass, i1$1.NgIf, i1$1.NgStyle, i2$2.NgControlStatus, i2$2.NgModel, i2.MatIcon, i3.MatButton, i12.MatCheckbox, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i11.MatDivider, i4.MatTooltip, LayerLegendComponent, i5$1.CollapseDirective, OgcFilterableFormComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
29352
30193
  i0.ɵɵsetComponentScope(OgcFilterableListComponent, [i1$1.NgForOf, i1$1.NgIf, i5$1.ListItemDirective, i5$1.ListComponent, OgcFilterableItemComponent], [i7.TranslatePipe, FilterableDataSourcePipe]);
29353
30194
  i0.ɵɵsetComponentScope(SpatialFilterTypeComponent, [i1$1.NgForOf, i9.MatOption, i2.MatIcon, i20.MatTabGroup, i20.MatTab, i18.MatButtonToggleGroup, i18.MatButtonToggle, i13.MatFormField, i13.MatLabel, i15.MatSelect, i4.MatTooltip, SpatialFilterListComponent], [i7.TranslatePipe]);
29354
- i0.ɵɵsetComponentScope(SpatialFilterItemComponent, [i1$1.NgForOf, i1$1.NgIf, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NumberValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.NgForm, i2$2.FormControlDirective, i9.MatOption, i2.MatIcon, i3.MatButton, i17.MatRadioGroup, i17.MatRadioButton, i21.MatTable, i21.MatHeaderCellDef, i21.MatHeaderRowDef, i21.MatColumnDef, i21.MatRowDef, i21.MatHeaderCell, i21.MatHeaderRow, i21.MatRow, i22.MatNestedTreeNode, i22.MatTreeNodeDef, i22.MatTreeNodeToggle, i22.MatTree, i22.MatTreeNode, i22.MatTreeNodeOutlet, i12$1.MatCheckbox, i23.MatSlideToggle, i13.MatFormField, i13.MatLabel, i14.MatInput, i15.MatSelect, i4.MatTooltip, i5$1.EntityTableComponent, GeometryFormFieldInputComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
30195
+ i0.ɵɵsetComponentScope(SpatialFilterItemComponent, [i1$1.NgForOf, i1$1.NgIf, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NumberValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.NgForm, i2$2.FormControlDirective, i9.MatOption, i2.MatIcon, i3.MatButton, i17.MatRadioGroup, i17.MatRadioButton, i21.MatTable, i21.MatHeaderCellDef, i21.MatHeaderRowDef, i21.MatColumnDef, i21.MatRowDef, i21.MatHeaderCell, i21.MatHeaderRow, i21.MatRow, i22.MatNestedTreeNode, i22.MatTreeNodeDef, i22.MatTreeNodeToggle, i22.MatTree, i22.MatTreeNode, i22.MatTreeNodeOutlet, i12.MatCheckbox, i23.MatSlideToggle, i13.MatFormField, i13.MatLabel, i14.MatInput, i15.MatSelect, i4.MatTooltip, i5$1.EntityTableComponent, GeometryFormFieldInputComponent], [i1$1.AsyncPipe, i7.TranslatePipe]);
29355
30196
  i0.ɵɵsetComponentScope(OgcFilterTimeComponent, [i1$1.NgForOf, i1$1.NgIf, i2$2.NgControlStatus, i2$2.NgModel, i2$2.FormControlDirective, i9.MatOption, i2.MatIcon, i3.MatButton, i23.MatSlideToggle, i13.MatFormField, i13.MatLabel, i13.MatSuffix, i14.MatInput, i15.MatSelect, i4.MatTooltip, i25.MatDatepicker, i25.MatDatepickerInput, i25.MatDatepickerToggle, OgcFilterTimeSliderComponent], [i7.TranslatePipe]);
29356
30197
 
29357
30198
  function ExportButtonComponent_button_0_Template(rf, ctx) { if (rf & 1) {
@@ -29403,7 +30244,7 @@ ExportButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Expor
29403
30244
  } }, dependencies: [i2.MatIcon, i4.MatTooltip, i1$1.NgIf, i3.MatButton, i7.TranslatePipe], changeDetection: 0 });
29404
30245
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ExportButtonComponent, [{
29405
30246
  type: Component,
29406
- args: [{ selector: 'igo-export-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"layerIsExportable()\"\n mat-icon-button\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.download.action' | translate\"\n [color]=\"color\">\n <!-- (click)=\"openDownload(layer)\"> -->\n <mat-icon svgIcon=\"file-export\"></mat-icon>\n</button>\n\n" }]
30247
+ args: [{ selector: 'igo-export-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\n *ngIf=\"layerIsExportable()\"\r\n mat-icon-button\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.download.action' | translate\"\r\n [color]=\"color\">\r\n <!-- (click)=\"openDownload(layer)\"> -->\r\n <mat-icon svgIcon=\"file-export\"></mat-icon>\r\n</button>\r\n\r\n" }]
29407
30248
  }], function () { return []; }, { layer: [{
29408
30249
  type: Input
29409
30250
  }], color: [{
@@ -29616,7 +30457,7 @@ class ExportService {
29616
30457
  outputName = `${title}.csv`;
29617
30458
  }
29618
30459
  outputName = outputName.replace(' ', '_');
29619
- outputName = outputName.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
30460
+ outputName = outputName.normalize('NFD').replace(/[\u0300-\u036f]/g, '').replace(/’/g, "'");
29620
30461
  outputNameField.setAttribute('type', 'hidden');
29621
30462
  outputNameField.setAttribute('name', 'outputName');
29622
30463
  outputNameField.setAttribute('value', outputName);
@@ -29936,21 +30777,34 @@ class ImportService {
29936
30777
  constructor(http, config) {
29937
30778
  this.http = http;
29938
30779
  this.config = config;
29939
- this.ogreUrl = this.config.getConfig('importExport.url');
29940
- const configFileSizeMb = this.config.getConfig('importExport.clientSideFileSizeMaxMb');
30780
+ const importConfig = this.config.getConfig('importExport');
30781
+ this.ogreUrl = importConfig.url;
30782
+ const configFileSizeMb = importConfig.clientSideFileSizeMaxMb;
29941
30783
  this.clientSideFileSizeMax = (configFileSizeMb ? configFileSizeMb : 30) * Math.pow(1024, 2);
30784
+ if (importConfig.formats) {
30785
+ ImportService.allowedExtensions = importConfig.formats
30786
+ .map(format => ImportService.formatExtensionAssociation[format])
30787
+ .filter(e => e);
30788
+ if (ImportService.allowedExtensions.includes('geojson')) {
30789
+ ImportService.allowedExtensions.push('json');
30790
+ }
30791
+ }
29942
30792
  }
29943
30793
  import(file, projectionIn = 'EPSG:4326', projectionOut = 'EPSG:4326') {
29944
30794
  return this.importAsync(file, projectionIn, projectionOut);
29945
30795
  }
29946
30796
  getFileImporter(file) {
29947
30797
  const extension = getFileExtension(file);
30798
+ const allowedExtensions = ImportService.allowedExtensions;
30799
+ let zipMimeTypes = [];
30800
+ if (allowedExtensions.includes('zip')) {
30801
+ zipMimeTypes = ImportService.allowedZipMimeTypes;
30802
+ }
29948
30803
  const mimeType = file.type;
29949
30804
  const allowedMimeTypes = [
29950
30805
  ...ImportService.allowedMimeTypes,
29951
- ...ImportService.allowedZipMimeTypes
30806
+ ...zipMimeTypes
29952
30807
  ];
29953
- const allowedExtensions = ImportService.allowedExtensions;
29954
30808
  if (allowedMimeTypes.indexOf(mimeType) < 0 &&
29955
30809
  allowedExtensions.indexOf(extension) < 0) {
29956
30810
  return undefined;
@@ -30096,6 +30950,13 @@ class ImportService {
30096
30950
  return features;
30097
30951
  }
30098
30952
  }
30953
+ ImportService.formatExtensionAssociation = {
30954
+ GeoJSON: 'geojson',
30955
+ GML: 'gml',
30956
+ GPX: 'gpx',
30957
+ KML: 'kml',
30958
+ Shapefile: 'zip'
30959
+ };
30099
30960
  ImportService.allowedMimeTypes = [
30100
30961
  'application/gml+xml',
30101
30962
  'application/vnd.google-earth.kml+xml',
@@ -30107,7 +30968,7 @@ ImportService.allowedZipMimeTypes = [
30107
30968
  'application/x-zip-compressed',
30108
30969
  'application/x-zip'
30109
30970
  ];
30110
- ImportService.allowedExtensions = ['geojson', 'kml', 'gpx', 'json', 'gml'];
30971
+ ImportService.allowedExtensions = ['geojson', 'kml', 'gpx', 'json', 'gml', 'zip'];
30111
30972
  ImportService.ɵfac = function ImportService_Factory(t) { return new (t || ImportService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.ConfigService)); };
30112
30973
  ImportService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ImportService, factory: ImportService.ɵfac, providedIn: 'root' });
30113
30974
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ImportService, [{
@@ -31330,7 +32191,7 @@ ImportExportComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Impor
31330
32191
  } }, dependencies: [i4.MatTooltip, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i3.MatButton, i18.MatButtonToggleGroup, i18.MatButtonToggle, i13.MatFormField, i13.MatLabel, i15.MatSelect, i15.MatSelectTrigger, i9.MatOption, i14.MatInput, i23.MatSlideToggle, i5$1.SpinnerComponent, i5$1.CustomHtmlComponent, i1$1.AsyncPipe, i7.TranslatePipe, i5$1.KeyValuePipe], styles: ["mat-option.igo-export-layer-mat-option[_ngcontent-%COMP%]{height:5em;line-height:1em}.import-export-toggle[_ngcontent-%COMP%]{padding:10px;text-align:center}.import-export-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%]{width:100%}.import-export-toggle[_ngcontent-%COMP%] mat-button-toggle-group[_ngcontent-%COMP%] mat-button-toggle[_ngcontent-%COMP%]{width:50%}h4[_ngcontent-%COMP%]{padding:0 5px}.igo-form[_ngcontent-%COMP%]{padding:15px 5px}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center;padding-top:10px}igo-spinner[_ngcontent-%COMP%]{position:absolute;padding-left:10px}.export-options[_ngcontent-%COMP%], .export-combine-layers[_ngcontent-%COMP%], .export-separator[_ngcontent-%COMP%]{overflow-x:hidden}.export-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%], .export-combine-layers[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%], .export-separator[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.export-options[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content, .export-combine-layers[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content, .export-separator[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.export-select-trigger[_ngcontent-%COMP%]{opacity:.75;font-size:.75em}"] });
31331
32192
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ImportExportComponent, [{
31332
32193
  type: Component,
31333
- args: [{ selector: 'igo-import-export', template: "<div class=\"import-export-toggle mat-typography\">\n <mat-button-toggle-group\n [value]=\"selectedMode\"\n (change)=\"onImportExportChange($event)\">\n <mat-button-toggle [value]=\"'import'\">\n {{'igo.geo.importExportForm.importTabTitle' | translate}}\n </mat-button-toggle>\n <mat-button-toggle [value]=\"'export'\">\n {{'igo.geo.importExportForm.exportTabTitle' | translate}}\n </mat-button-toggle>\n </mat-button-toggle-group>\n</div>\n\n<form class=\"igo-form\" [formGroup]=\"importForm\" *ngIf=\"selectedMode === 'import'\">\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{'igo.geo.importExportForm.importProjPlaceholder' | translate}}</mat-label>\n <mat-select\n [(value)]=\"inputProj\">\n <mat-option\n *ngFor=\"let projection of (projections$ | async)\"\n [value]=\"projection\"\n (click)=\"$event.stopPropagation()\">\n <p mat-line *ngIf=\"projection.translateKey\">{{('igo.geo.importExportForm.projections.' + projection.translateKey) | translate: projection}}</p>\n <p mat-line *ngIf=\"!projection.translateKey\">{{projection.alias}}</p>\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"importForm.invalid ? ('igo.geo.importExportForm.projections.choose' | translate) : ('igo.geo.importExportForm.importButton' | translate)\"\n class=\"igo-form-button-group\">\n <button\n [disabled]=\"importForm.invalid || (loading$ | async)\"\n mat-raised-button\n type=\"button\"\n (click)=\"fileInput.click()\">\n {{'igo.geo.importExportForm.importButton' | translate}}\n </button>\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n <input\n hidden\n #fileInput\n type=\"file\"\n [style.display]=\"'none'\"\n (click)=\"fileInput.value = null\"\n (change)=\"importFiles($event.target.files)\">\n </div>\n</form>\n<section class=\"mat-typography\" *ngIf=\"selectedMode === 'import'\">\n <div *ngIf=\"importHtmlClarifications === ''\">\n <h4>{{'igo.geo.importExportForm.importClarifications' | translate}}</h4>\n <ul>\n <li>{{'igo.geo.importExportForm.importSizeMax' | translate: {size: fileSizeMb} }}</li>\n <li>{{'igo.geo.importExportForm.importFormatAuthorized' | translate}}</li>\n <li>{{'igo.geo.importExportForm.importShpZip' | translate}}</li>\n </ul>\n </div>\n <igo-custom-html *ngIf=\"importHtmlClarifications !== ''\" class=\"mat-typography\"\n [html]=\"importHtmlClarifications\">\n </igo-custom-html>\n</section>\n\n<section class=\"mat-typography\" *ngIf=\"(exportableLayers$ | async).length === 0 && selectedMode === 'export'\">\n <h4>{{'igo.geo.importExportForm.exportNoLayersExportable' | translate}}</h4>\n</section>\n\n<form class=\"igo-form\" [formGroup]=\"form\" *ngIf=\"(exportableLayers$ | async).length > 0 && selectedMode === 'export'\">\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{'igo.geo.importExportForm.exportLayerPlaceholder' | translate}}</mat-label>\n <mat-select\n [(value)]=\"layers\" multiple>\n <mat-select-trigger>\n {{layers.length ? getLayerTitleById(layers[0]) : ''}}\n <span *ngIf=\"layers.length > 1\" class=\"export-select-trigger\">\n (+{{layers.length - 1}} {{(layers?.length === 2 ? 'igo.geo.importExportForm.other' : 'igo.geo.importExportForm.others') | translate }})\n </span>\n </mat-select-trigger>\n <mat-option\n *ngFor=\"let layer of (exportableLayers$ | async)\"\n [ngClass]=\"{'igo-export-layer-mat-option': layerHasSelectedFeatures(layer)}\"\n [value]=\"layer.id\"\n (click)=\"$event.stopPropagation()\">\n <p mat-line>{{layer.title}}</p>\n <p mat-line>\n <mat-slide-toggle *ngIf=\"layerHasSelectedFeatures(layer)\"\n [labelPosition]=\"'after'\"\n (click)=\"onlySelectedClick($event,layer.id)\"\n (checked)=\"inLayersIdToExportSelectionOnly(layer)\"\n (change)=\"onlySelected($event,layer.id)\">\n <small>{{'igo.geo.importExportForm.exportSelectedFeature' | translate}}</small>\n </mat-slide-toggle>\n </p>\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-label>{{'igo.geo.importExportForm.exportFormatPlaceholder' | translate}}</mat-label>\n <mat-select\n formControlName=\"format\">\n <ng-container *ngIf=\"(formats$ | async).length !== 0\">\n <mat-option *ngFor=\"let format of (formats$ | async) | keyvalue\" [value]=\"format.key\">\n {{'igo.geo.export.format.' + format.value | translate}}\n </mat-option>\n </ng-container>\n <mat-option *ngIf=\"(formats$ | async).length === 0\" disabled=\"true\">\n {{'igo.geo.export.noFormat.title' | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" *ngIf=\"forceNaming && form.value.format !== 'URL'\">\n <mat-form-field>\n <input matInput formControlName=\"name\" placeholder=\"{{'igo.geo.importExportForm.exportFileNamePlaceholder' | translate}}\">\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" *ngIf=\"form.value.format === 'CSVcomma' || form.value.format === 'CSVsemicolon'\">\n <mat-form-field>\n <mat-label>{{'igo.geo.importExportForm.encodingPlaceholder' | translate}}</mat-label>\n <mat-select\n formControlName=\"encoding\">\n <ng-container *ngIf=\"(encodings$ | async).length !== 0\">\n <mat-option *ngFor=\"let encoding of (encodings$ | async) | keyvalue\" [value]=\"encoding.key\">\n {{'igo.geo.export.encoding.' + encoding.value | translate}}\n </mat-option>\n </ng-container>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"export-combine-layers mat-typography\" *ngIf=\"layers.length > 1 && (form.value.format === 'CSVcomma' || form.value.format === 'CSVsemicolon')\">\n <mat-slide-toggle\n formControlName=\"combineLayers\"\n [labelPosition]=\"'before'\">\n {{'igo.geo.importExportForm.exportCombineResults' | translate}}\n </mat-slide-toggle>\n </div>\n\n <div class=\"export-separator mat-typography\" *ngIf=\"layers.length > 1 && (form.value.format === 'CSVcomma' || form.value.format === 'CSVsemicolon') && form.value.combineLayers\">\n <mat-slide-toggle\n formControlName=\"separator\"\n [labelPosition]=\"'before'\">\n {{'igo.geo.importExportForm.exportSeparator' | translate}}\n </mat-slide-toggle>\n </div>\n\n <div class=\"export-options mat-typography\" *ngIf=\"form.value.format !== 'URL'\">\n <mat-slide-toggle\n formControlName=\"featureInMapExtent\"\n [labelPosition]=\"'before'\">\n {{'igo.geo.importExportForm.exportFeatureInExtent' | translate}}\n </mat-slide-toggle>\n </div>\n\n <div class=\"igo-form-button-group\">\n <button\n mat-raised-button\n type=\"button\"\n [disabled]=\"!form.valid || (loading$ | async)\"\n (click)=\"handleExportFormSubmit(form.value)\">\n {{form.value.format !== 'URL' ? ('igo.geo.importExportForm.exportButton' | translate): (form.value.layers.length > 1 ? ('igo.geo.importExportForm.exportButtonLinks' | translate): ('igo.geo.importExportForm.exportButtonLink' | translate))}}\n </button>\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\n </div>\n\n <igo-custom-html *ngIf=\"exportHtmlClarifications !== ''\" class=\"mat-typography\"\n [html]=\"exportHtmlClarifications\">\n </igo-custom-html>\n\n</form>\n", styles: ["mat-option.igo-export-layer-mat-option{height:5em;line-height:1em}.import-export-toggle{padding:10px;text-align:center}.import-export-toggle mat-button-toggle-group{width:100%}.import-export-toggle mat-button-toggle-group mat-button-toggle{width:50%}h4{padding:0 5px}.igo-form{padding:15px 5px}.igo-input-container mat-form-field{width:100%}.igo-form-button-group{text-align:center;padding-top:10px}igo-spinner{position:absolute;padding-left:10px}.export-options,.export-combine-layers,.export-separator{overflow-x:hidden}.export-options mat-slide-toggle,.export-combine-layers mat-slide-toggle,.export-separator mat-slide-toggle{width:100%;margin:10px}.export-options mat-slide-toggle ::ng-deep .mat-slide-toggle-content,.export-combine-layers mat-slide-toggle ::ng-deep .mat-slide-toggle-content,.export-separator mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.export-select-trigger{opacity:.75;font-size:.75em}\n"] }]
32194
+ args: [{ selector: 'igo-import-export', template: "<div class=\"import-export-toggle mat-typography\">\r\n <mat-button-toggle-group\r\n [value]=\"selectedMode\"\r\n (change)=\"onImportExportChange($event)\">\r\n <mat-button-toggle [value]=\"'import'\">\r\n {{'igo.geo.importExportForm.importTabTitle' | translate}}\r\n </mat-button-toggle>\r\n <mat-button-toggle [value]=\"'export'\">\r\n {{'igo.geo.importExportForm.exportTabTitle' | translate}}\r\n </mat-button-toggle>\r\n </mat-button-toggle-group>\r\n</div>\r\n\r\n<form class=\"igo-form\" [formGroup]=\"importForm\" *ngIf=\"selectedMode === 'import'\">\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <mat-label>{{'igo.geo.importExportForm.importProjPlaceholder' | translate}}</mat-label>\r\n <mat-select\r\n [(value)]=\"inputProj\">\r\n <mat-option\r\n *ngFor=\"let projection of (projections$ | async)\"\r\n [value]=\"projection\"\r\n (click)=\"$event.stopPropagation()\">\r\n <p mat-line *ngIf=\"projection.translateKey\">{{('igo.geo.importExportForm.projections.' + projection.translateKey) | translate: projection}}</p>\r\n <p mat-line *ngIf=\"!projection.translateKey\">{{projection.alias}}</p>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"importForm.invalid ? ('igo.geo.importExportForm.projections.choose' | translate) : ('igo.geo.importExportForm.importButton' | translate)\"\r\n class=\"igo-form-button-group\">\r\n <button\r\n [disabled]=\"importForm.invalid || (loading$ | async)\"\r\n mat-raised-button\r\n type=\"button\"\r\n (click)=\"fileInput.click()\">\r\n {{'igo.geo.importExportForm.importButton' | translate}}\r\n </button>\r\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\r\n <input\r\n hidden\r\n #fileInput\r\n type=\"file\"\r\n [style.display]=\"'none'\"\r\n (click)=\"fileInput.value = null\"\r\n (change)=\"importFiles($event.target.files)\">\r\n </div>\r\n</form>\r\n<section class=\"mat-typography\" *ngIf=\"selectedMode === 'import'\">\r\n <div *ngIf=\"importHtmlClarifications === ''\">\r\n <h4>{{'igo.geo.importExportForm.importClarifications' | translate}}</h4>\r\n <ul>\r\n <li>{{'igo.geo.importExportForm.importSizeMax' | translate: {size: fileSizeMb} }}</li>\r\n <li>{{'igo.geo.importExportForm.importFormatAuthorized' | translate}}</li>\r\n <li>{{'igo.geo.importExportForm.importShpZip' | translate}}</li>\r\n </ul>\r\n </div>\r\n <igo-custom-html *ngIf=\"importHtmlClarifications !== ''\" class=\"mat-typography\"\r\n [html]=\"importHtmlClarifications\">\r\n </igo-custom-html>\r\n</section>\r\n\r\n<section class=\"mat-typography\" *ngIf=\"(exportableLayers$ | async).length === 0 && selectedMode === 'export'\">\r\n <h4>{{'igo.geo.importExportForm.exportNoLayersExportable' | translate}}</h4>\r\n</section>\r\n\r\n<form class=\"igo-form\" [formGroup]=\"form\" *ngIf=\"(exportableLayers$ | async).length > 0 && selectedMode === 'export'\">\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <mat-label>{{'igo.geo.importExportForm.exportLayerPlaceholder' | translate}}</mat-label>\r\n <mat-select\r\n [(value)]=\"layers\" multiple>\r\n <mat-select-trigger>\r\n {{layers.length ? getLayerTitleById(layers[0]) : ''}}\r\n <span *ngIf=\"layers.length > 1\" class=\"export-select-trigger\">\r\n (+{{layers.length - 1}} {{(layers?.length === 2 ? 'igo.geo.importExportForm.other' : 'igo.geo.importExportForm.others') | translate }})\r\n </span>\r\n </mat-select-trigger>\r\n <mat-option\r\n *ngFor=\"let layer of (exportableLayers$ | async)\"\r\n [ngClass]=\"{'igo-export-layer-mat-option': layerHasSelectedFeatures(layer)}\"\r\n [value]=\"layer.id\"\r\n (click)=\"$event.stopPropagation()\">\r\n <p mat-line>{{layer.title}}</p>\r\n <p mat-line>\r\n <mat-slide-toggle *ngIf=\"layerHasSelectedFeatures(layer)\"\r\n [labelPosition]=\"'after'\"\r\n (click)=\"onlySelectedClick($event,layer.id)\"\r\n (checked)=\"inLayersIdToExportSelectionOnly(layer)\"\r\n (change)=\"onlySelected($event,layer.id)\">\r\n <small>{{'igo.geo.importExportForm.exportSelectedFeature' | translate}}</small>\r\n </mat-slide-toggle>\r\n </p>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <mat-label>{{'igo.geo.importExportForm.exportFormatPlaceholder' | translate}}</mat-label>\r\n <mat-select\r\n formControlName=\"format\">\r\n <ng-container *ngIf=\"(formats$ | async).length !== 0\">\r\n <mat-option *ngFor=\"let format of (formats$ | async) | keyvalue\" [value]=\"format.key\">\r\n {{'igo.geo.export.format.' + format.value | translate}}\r\n </mat-option>\r\n </ng-container>\r\n <mat-option *ngIf=\"(formats$ | async).length === 0\" disabled=\"true\">\r\n {{'igo.geo.export.noFormat.title' | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\" *ngIf=\"forceNaming && form.value.format !== 'URL'\">\r\n <mat-form-field>\r\n <input matInput formControlName=\"name\" placeholder=\"{{'igo.geo.importExportForm.exportFileNamePlaceholder' | translate}}\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\" *ngIf=\"form.value.format === 'CSVcomma' || form.value.format === 'CSVsemicolon'\">\r\n <mat-form-field>\r\n <mat-label>{{'igo.geo.importExportForm.encodingPlaceholder' | translate}}</mat-label>\r\n <mat-select\r\n formControlName=\"encoding\">\r\n <ng-container *ngIf=\"(encodings$ | async).length !== 0\">\r\n <mat-option *ngFor=\"let encoding of (encodings$ | async) | keyvalue\" [value]=\"encoding.key\">\r\n {{'igo.geo.export.encoding.' + encoding.value | translate}}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"export-combine-layers mat-typography\" *ngIf=\"layers.length > 1 && (form.value.format === 'CSVcomma' || form.value.format === 'CSVsemicolon')\">\r\n <mat-slide-toggle\r\n formControlName=\"combineLayers\"\r\n [labelPosition]=\"'before'\">\r\n {{'igo.geo.importExportForm.exportCombineResults' | translate}}\r\n </mat-slide-toggle>\r\n </div>\r\n\r\n <div class=\"export-separator mat-typography\" *ngIf=\"layers.length > 1 && (form.value.format === 'CSVcomma' || form.value.format === 'CSVsemicolon') && form.value.combineLayers\">\r\n <mat-slide-toggle\r\n formControlName=\"separator\"\r\n [labelPosition]=\"'before'\">\r\n {{'igo.geo.importExportForm.exportSeparator' | translate}}\r\n </mat-slide-toggle>\r\n </div>\r\n\r\n <div class=\"export-options mat-typography\" *ngIf=\"form.value.format !== 'URL'\">\r\n <mat-slide-toggle\r\n formControlName=\"featureInMapExtent\"\r\n [labelPosition]=\"'before'\">\r\n {{'igo.geo.importExportForm.exportFeatureInExtent' | translate}}\r\n </mat-slide-toggle>\r\n </div>\r\n\r\n <div class=\"igo-form-button-group\">\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n [disabled]=\"!form.valid || (loading$ | async)\"\r\n (click)=\"handleExportFormSubmit(form.value)\">\r\n {{form.value.format !== 'URL' ? ('igo.geo.importExportForm.exportButton' | translate): (form.value.layers.length > 1 ? ('igo.geo.importExportForm.exportButtonLinks' | translate): ('igo.geo.importExportForm.exportButtonLink' | translate))}}\r\n </button>\r\n <igo-spinner [shown]=\"loading$ | async\"></igo-spinner>\r\n </div>\r\n\r\n <igo-custom-html *ngIf=\"exportHtmlClarifications !== ''\" class=\"mat-typography\"\r\n [html]=\"exportHtmlClarifications\">\r\n </igo-custom-html>\r\n\r\n</form>\r\n", styles: ["mat-option.igo-export-layer-mat-option{height:5em;line-height:1em}.import-export-toggle{padding:10px;text-align:center}.import-export-toggle mat-button-toggle-group{width:100%}.import-export-toggle mat-button-toggle-group mat-button-toggle{width:50%}h4{padding:0 5px}.igo-form{padding:15px 5px}.igo-input-container mat-form-field{width:100%}.igo-form-button-group{text-align:center;padding-top:10px}igo-spinner{position:absolute;padding-left:10px}.export-options,.export-combine-layers,.export-separator{overflow-x:hidden}.export-options mat-slide-toggle,.export-combine-layers mat-slide-toggle,.export-separator mat-slide-toggle{width:100%;margin:10px}.export-options mat-slide-toggle ::ng-deep .mat-slide-toggle-content,.export-combine-layers mat-slide-toggle ::ng-deep .mat-slide-toggle-content,.export-separator mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.export-select-trigger{opacity:.75;font-size:.75em}\n"] }]
31334
32195
  }], function () { return [{ type: ImportService }, { type: ExportService }, { type: i2$1.LanguageService }, { type: i2$1.MessageService }, { type: StyleListService }, { type: StyleService }, { type: i2$2.UntypedFormBuilder }, { type: i2$1.ConfigService }, { type: i0.ChangeDetectorRef }, { type: i2$1.StorageService }, { type: DownloadService }]; }, { selectFirstProj: [{
31335
32196
  type: Input
31336
32197
  }], map: [{
@@ -31798,7 +32659,7 @@ MeasurerItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Measu
31798
32659
  } }, dependencies: [i1$1.NgForOf, i13.MatFormField, i13.MatLabel, i14.MatInput, i15.MatSelect, i9.MatOption, i1$1.AsyncPipe, i7.TranslatePipe, MeasureFormatPipe], styles: ["[_nghost-%COMP%]{display:flex;width:100%;padding:5px 10px}.measure-field[_ngcontent-%COMP%]{pointer-events:none;display:flex;flex-flow:column nowrap;width:100%}.unit-field[_ngcontent-%COMP%]{width:50px;margin-left:10px;margin-top:10px}"], changeDetection: 0 });
31799
32660
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MeasurerItemComponent, [{
31800
32661
  type: Component,
31801
- args: [{ selector: 'igo-measurer-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field\n class=\"measure-field\"\n appearance=\"outline\"\n floatLabel=\"always\">\n <mat-label>{{placeholder}}</mat-label>\n <input\n matInput\n [readonly]=\"true\"\n [value]=\"((measure$ | async) || 0) | measureFormat: measureUnit\">\n</mat-form-field>\n<mat-form-field class=\"unit-field\">\n <mat-select\n [value]=\"measureUnit\"\n [disabled]=\"auto\"\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\n {{('igo.geo.measure.' + measureUnit) | translate}}\n </mat-option>\n </mat-select>\n</mat-form-field>\n", styles: [":host{display:flex;width:100%;padding:5px 10px}.measure-field{pointer-events:none;display:flex;flex-flow:column nowrap;width:100%}.unit-field{width:50px;margin-left:10px;margin-top:10px}\n"] }]
32662
+ args: [{ selector: 'igo-measurer-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field\r\n class=\"measure-field\"\r\n appearance=\"outline\"\r\n floatLabel=\"always\">\r\n <mat-label>{{placeholder}}</mat-label>\r\n <input\r\n matInput\r\n [readonly]=\"true\"\r\n [value]=\"((measure$ | async) || 0) | measureFormat: measureUnit\">\r\n</mat-form-field>\r\n<mat-form-field class=\"unit-field\">\r\n <mat-select\r\n [value]=\"measureUnit\"\r\n [disabled]=\"auto\"\r\n (selectionChange)=\"onMeasureUnitChange($event.value)\">\r\n <mat-option *ngFor=\"let measureUnit of measureUnits\" [value]=\"measureUnit\">\r\n {{('igo.geo.measure.' + measureUnit) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n</mat-form-field>\r\n", styles: [":host{display:flex;width:100%;padding:5px 10px}.measure-field{pointer-events:none;display:flex;flex-flow:column nowrap;width:100%}.unit-field{width:50px;margin-left:10px;margin-top:10px}\n"] }]
31802
32663
  }], function () { return []; }, { measureType: [{
31803
32664
  type: Input
31804
32665
  }], measureUnit: [{
@@ -31976,6 +32837,64 @@ IgoOverlayModule.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
31976
32837
  }], null, null); })();
31977
32838
  (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(IgoOverlayModule, { declarations: [OverlayDirective], exports: [OverlayDirective] }); })();
31978
32839
 
32840
+ /*
32841
+ * The MIT License (MIT)
32842
+ *
32843
+ * Copyright (c) 2016-2017 Dan "Ducky" Little
32844
+ *
32845
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
32846
+ * of this software and associated documentation files (the "Software"), to deal
32847
+ * in the Software without restriction, including without limitation the rights
32848
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
32849
+ * copies of the Software, and to permit persons to whom the Software is
32850
+ * furnished to do so, subject to the following conditions:
32851
+ *
32852
+ * The above copyright notice and this permission notice shall be included in all
32853
+ * copies or substantial portions of the Software.
32854
+ *
32855
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
32856
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
32857
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32858
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
32859
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
32860
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32861
+ * SOFTWARE.
32862
+ */
32863
+ function jsGeoPdfPlugin(jsPDFAPI) {
32864
+ const setGeoArea = function (pdfExt, geoExt) {
32865
+ const bbox = pdfExt.join(' ');
32866
+ // the ordering may seem odd here but PDF
32867
+ // flips the Y axis upside down and this accounts for that
32868
+ // change.
32869
+ const minx = geoExt[0];
32870
+ const maxx = geoExt[2];
32871
+ const maxy = geoExt[1];
32872
+ const miny = geoExt[3];
32873
+ const bounds = [miny, minx, maxy, minx, maxy, maxx, miny, maxx].join(' ');
32874
+ const bbox_obj = this.internal.newAdditionalObject();
32875
+ const bounds_obj = this.internal.newAdditionalObject();
32876
+ const proj_obj = this.internal.newAdditionalObject();
32877
+ proj_obj.content = '<< /EPSG 3857 /Type /PROJCS /WKT (PROJCS["WGS_1984_Web_Mercator_Auxiliary_Sphere"' +
32878
+ ',+GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0]' +
32879
+ ',UNIT["Degree",0.017453292519943295]],PROJECTION["Mercator_Auxiliary_Sphere"],PARAMETER["False_Easting",0.0]' +
32880
+ ',PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0]' +
32881
+ ',PARAMETER["Auxiliary_Sphere_Type",0.0],UNIT["Meter",1.0]]) >>';
32882
+ bounds_obj.content = '<< /Bounds [ 0 1 0 0 1 0 1 1 ] /GCS ' +
32883
+ proj_obj.objId + ' 0 R /GPTS [ ' + bounds + ' ] /LPTS [ 0 1 0 0 1 0 1 1 ] /Subtype /GEO /Type /Measure >>';
32884
+ bbox_obj.content = '<< /BBox [ ' + bbox + ' ] /Measure ' + bounds_obj.objId + ' 0 R /Name (Layer) /Type /Viewport >>';
32885
+ const title_obj = this.internal.newAdditionalObject();
32886
+ const date = new Date().toLocaleDateString('en-CA');
32887
+ title_obj.content = '<< /Name IGO2 /Type OCG /Date ' + date + ' >>';
32888
+ return bbox_obj.objId;
32889
+ };
32890
+ jsPDFAPI.setGeoArea = function (pdfExt, geoExt) {
32891
+ this.internal.events.subscribe('putPage', function () {
32892
+ const bbox_id = setGeoArea.call(this, pdfExt, geoExt);
32893
+ this.internal.write('/VP [ ' + bbox_id + ' 0 R ]');
32894
+ });
32895
+ };
32896
+ }
32897
+
31979
32898
  class PrintService {
31980
32899
  constructor(http, messageService, activityService, languageService, configService) {
31981
32900
  this.http = http;
@@ -31983,6 +32902,15 @@ class PrintService {
31983
32902
  this.activityService = activityService;
31984
32903
  this.languageService = languageService;
31985
32904
  this.configService = configService;
32905
+ this.TEXTPDFFONT = {
32906
+ titleFont: 'Times',
32907
+ titleFontStyle: 'bold',
32908
+ subtitleFont: 'Times',
32909
+ subtitleFontStyle: 'bold',
32910
+ commentFont: 'courier',
32911
+ commentFontStyle: 'normal',
32912
+ commentFontSize: 16
32913
+ };
31986
32914
  }
31987
32915
  print(map, options) {
31988
32916
  const status$ = new Subject();
@@ -31991,9 +32919,11 @@ class PrintService {
31991
32919
  const orientation = options.orientation;
31992
32920
  const legendPostion = options.legendPosition;
31993
32921
  this.activityId = this.activityService.register();
31994
- const doc = new jspdf({
32922
+ jsGeoPdfPlugin(jsPDF.API);
32923
+ const doc = new jsPDF({
31995
32924
  orientation,
31996
- format: paperFormat.toLowerCase()
32925
+ format: paperFormat.toLowerCase(),
32926
+ unit: 'mm' // default
31997
32927
  });
31998
32928
  const dimensions = [
31999
32929
  doc.internal.pageSize.width,
@@ -32003,17 +32933,21 @@ class PrintService {
32003
32933
  const width = dimensions[0] - margins[3] - margins[1];
32004
32934
  const height = dimensions[1] - margins[0] - margins[2];
32005
32935
  const size = [width, height];
32006
- let titleSizeResults = [0, 0];
32936
+ let titleSizes;
32937
+ let subtitleSizes;
32938
+ // PDF title
32007
32939
  if (options.title !== undefined) {
32008
- titleSizeResults = this.getTitleSize(options.title, width, height, doc); // return : size(pt) and left margin (mm)
32009
- this.addTitle(doc, options.title, titleSizeResults[0], margins[3] + titleSizeResults[1], titleSizeResults[0] * (25.4 / 72));
32940
+ const fontSizeInPt = Math.round(2 * (height + 145) * 0.05) / 2; //calculate the fontSize title from the page height.
32941
+ titleSizes = this.getTextPdfObjectSizeAndMarg(options.title, margins, this.TEXTPDFFONT.titleFont, fontSizeInPt, this.TEXTPDFFONT.titleFontStyle, doc);
32942
+ this.addTextInPdfDoc(doc, options.title, this.TEXTPDFFONT.titleFont, this.TEXTPDFFONT.titleFontStyle, titleSizes.fontSize, titleSizes.marginLeft + margins[3], margins[0]);
32943
+ margins[0] = titleSizes.height + margins[0]; // cumulative margin top for next elem to place in pdf doc
32010
32944
  }
32945
+ // PDF subtitle
32011
32946
  if (options.subtitle !== undefined) {
32012
- let subtitleSizeResult = 0;
32013
- const titleH = titleSizeResults[0];
32014
- subtitleSizeResult = this.getSubTitleSize(options.subtitle, width, height, doc); // return : size(pt) and left margin (mm)
32015
- this.addSubTitle(doc, options.subtitle, titleH * 0.7, margins[3] + subtitleSizeResult, titleH * 1.7 * (25.4 / 72));
32016
- margins[0] = margins[0] + titleSizeResults[0] * 0.7 * (25.4 / 72);
32947
+ subtitleSizes = this.getTextPdfObjectSizeAndMarg(options.subtitle, margins, this.TEXTPDFFONT.subtitleFont, titleSizes.fontSize * 0.7, // 70% size of title
32948
+ this.TEXTPDFFONT.subtitleFontStyle, doc);
32949
+ this.addTextInPdfDoc(doc, options.subtitle, this.TEXTPDFFONT.subtitleFont, this.TEXTPDFFONT.subtitleFontStyle, subtitleSizes.fontSize, subtitleSizes.marginLeft + margins[3], margins[0]);
32950
+ margins[0] += 5; // cumulative marg top for next elem to place in pdf doc. 5 is a fix it could be adjust
32017
32951
  }
32018
32952
  if (options.showProjection === true || options.showScale === true) {
32019
32953
  this.addProjScale(doc, map, resolution, options.showProjection, options.showScale);
@@ -32025,6 +32959,10 @@ class PrintService {
32025
32959
  if (status === SubjectStatus.Done) {
32026
32960
  await this.addScale(doc, map, margins);
32027
32961
  await this.handleMeasureLayer(doc, map, margins);
32962
+ const width = this.imgSizeAdded[0];
32963
+ const height = this.imgSizeAdded[1];
32964
+ const res = 1;
32965
+ this.addGeoRef(doc, map, width, height, res, margins);
32028
32966
  if (options.legendPosition !== 'none') {
32029
32967
  if (['topleft', 'topright', 'bottomleft', 'bottomright'].indexOf(options.legendPosition) > -1) {
32030
32968
  await this.addLegendSamePage(doc, map, margins, resolution, options.legendPosition);
@@ -32044,6 +32982,20 @@ class PrintService {
32044
32982
  });
32045
32983
  return status$;
32046
32984
  }
32985
+ // ref GeoMoose https://github.com/geomoose/gm3/tree/main/src/gm3/components/print
32986
+ addGeoRef(doc, map, width, height, resolution, margins) {
32987
+ const unit = 'mm';
32988
+ const docHeight = doc.internal.pageSize.getHeight();
32989
+ // x,y = margin left-bottom corner for img in pdf doc
32990
+ const x = margins[3];
32991
+ const y = docHeight - margins[0] - height;
32992
+ let pdf_extents = [x, y, x + width, y + height];
32993
+ for (let i = 0; i < pdf_extents.length; i++) {
32994
+ pdf_extents[i] = this.pdf_units2points(pdf_extents[i], unit);
32995
+ }
32996
+ const mapExtent = map.viewController.getExtent('EPSG:3857');
32997
+ doc.setGeoArea(pdf_extents, mapExtent);
32998
+ }
32047
32999
  /**
32048
33000
  * Add measure overlay on the map on the document when the measure layer is present
32049
33001
  * @param doc - Pdf document where measure tooltip will be added
@@ -32163,66 +33115,46 @@ class PrintService {
32163
33115
  }
32164
33116
  return status$;
32165
33117
  }
32166
- getTitleSize(title, pageWidth, pageHeight, doc) {
33118
+ getTextPdfObjectSizeAndMarg(text, margins, font, fontSizeInPt, fontStyle, doc) {
32167
33119
  const pdfResolution = 96;
32168
- const titleSize = Math.round(2 * (pageHeight + 145) * 0.05) / 2;
32169
- doc.setFont('Times', 'bold');
32170
- const width = doc.getTextWidth(title);
32171
- const titleWidth = doc.getStringUnitWidth(title) * titleSize / doc.internal.scaleFactor;
32172
- const titleTailleMinimale = Math.round(2 * (pageHeight + 150) * 0.037) / 2;
32173
- let titleFontSize = 0;
32174
- let titleMarginLeft;
32175
- if (titleWidth >= (pageWidth)) {
32176
- titleMarginLeft = 0;
32177
- titleFontSize = Math.round(((pageWidth / title.length) * pdfResolution) / 25.4);
32178
- // If the formula to find the font size gives below the defined minimum size
32179
- if (titleFontSize < titleTailleMinimale) {
32180
- titleFontSize = titleTailleMinimale;
32181
- }
33120
+ const docWidth = doc.internal.pageSize.getWidth();
33121
+ const pageWidth = docWidth - margins[1] - margins[3];
33122
+ // important to set it first, the textDimension change when font change!
33123
+ doc.setFont(font, fontStyle);
33124
+ doc.setFontSize(fontSizeInPt);
33125
+ let textDimensions = doc.getTextDimensions(text);
33126
+ let textMarginLeft;
33127
+ if (textDimensions.w > pageWidth) {
33128
+ // if the text is to long, reduce fontSize 70% and the overflow with be cut in print...
33129
+ textMarginLeft = 0;
33130
+ fontSizeInPt = fontSizeInPt * 0.7;
33131
+ doc.setFontSize(fontSizeInPt);
33132
+ textDimensions = doc.getTextDimensions(text);
32182
33133
  }
32183
33134
  else {
32184
- titleMarginLeft = (pageWidth - titleWidth) / 2;
32185
- titleFontSize = titleSize;
33135
+ textMarginLeft = (pageWidth - textDimensions.w) / 2;
32186
33136
  }
32187
- return [titleFontSize, titleMarginLeft];
32188
- }
32189
- getSubTitleSize(subtitle, pageWidth, pageHeight, doc) {
32190
- const subtitleSize = 0.7 * Math.round(2 * (pageHeight + 145) * 0.05) / 2; // 70% of the title's font size
32191
- doc.setFont('Times', 'bold');
32192
- const subtitleWidth = doc.getStringUnitWidth(subtitle) * subtitleSize / doc.internal.scaleFactor;
32193
- let subtitleMarginLeft;
32194
- if (subtitleWidth >= (pageWidth)) {
32195
- subtitleMarginLeft = 0;
32196
- }
32197
- else {
32198
- subtitleMarginLeft = (pageWidth - subtitleWidth) / 2;
32199
- }
32200
- return subtitleMarginLeft;
32201
- }
32202
- addTitle(doc, title, titleFontSize, titleMarginLeft, titleMarginTop) {
32203
- doc.setFont('Times', 'bold');
32204
- doc.setFontSize(titleFontSize);
32205
- doc.text(title, titleMarginLeft, titleMarginTop);
32206
- }
32207
- addSubTitle(doc, subtitle, subtitleFontSize, subtitleMarginLeft, subtitleMarginTop) {
32208
- doc.setFont('Times', 'bold');
32209
- doc.setFontSize(subtitleFontSize);
32210
- doc.text(subtitle, subtitleMarginLeft, subtitleMarginTop);
33137
+ return {
33138
+ 'fontSize': fontSizeInPt,
33139
+ 'marginLeft': textMarginLeft,
33140
+ 'height': textDimensions.h
33141
+ };
32211
33142
  }
32212
33143
  /**
32213
33144
  * Add comment to the document
32214
33145
  * * @param doc - pdf document
32215
33146
  * * @param comment - Comment to add in the document
32216
- * * @param size - Size of the document
32217
33147
  */
32218
33148
  addComment(doc, comment) {
32219
- const commentSize = 16;
32220
- const commentMarginLeft = 20;
32221
- const marginBottom = 5;
32222
- const heightPixels = doc.internal.pageSize.height - marginBottom;
32223
- doc.setFont('courier');
32224
- doc.setFontSize(commentSize);
32225
- doc.text(comment, commentMarginLeft, heightPixels);
33149
+ const commentMarginLeft = 20; //margin left and bottom is fix
33150
+ const commentMarginBottom = 5;
33151
+ const marginTop = doc.internal.pageSize.height - commentMarginBottom;
33152
+ this.addTextInPdfDoc(doc, comment, this.TEXTPDFFONT.commentFont, this.TEXTPDFFONT.commentFontStyle, this.TEXTPDFFONT.commentFontSize, commentMarginLeft, marginTop);
33153
+ }
33154
+ addTextInPdfDoc(doc, textToAdd, textFont, textFontStyle, textFontSize, textMarginLeft, textMarginTop) {
33155
+ doc.setFont(textFont, textFontStyle);
33156
+ doc.setFontSize(textFontSize);
33157
+ doc.text(textToAdd, textMarginLeft, textMarginTop);
32226
33158
  }
32227
33159
  /**
32228
33160
  * Add projection and/or scale to the document
@@ -32394,9 +33326,14 @@ class PrintService {
32394
33326
  image = canvas.toDataURL('image/png');
32395
33327
  }
32396
33328
  if (image !== undefined) {
33329
+ if (image.length < 20) { // img is corrupt todo: fix addScale in mobile make a corrupt img
33330
+ console.log('Warning: An image cannot be print in pdf file');
33331
+ return;
33332
+ }
32397
33333
  const imageSize = this.getImageSizeToFitPdf(doc, canvas, margins);
32398
33334
  doc.addImage(image, 'PNG', margins[3], margins[0], imageSize[0], imageSize[1]);
32399
33335
  doc.rect(margins[3], margins[0], imageSize[0], imageSize[1]);
33336
+ this.imgSizeAdded = imageSize; // keep img size for georef later
32400
33337
  }
32401
33338
  }
32402
33339
  // TODO fix printing with image resolution
@@ -32630,7 +33567,7 @@ class PrintService {
32630
33567
  * @param doc - Document to save
32631
33568
  */
32632
33569
  async saveDoc(doc) {
32633
- await doc.save('map.pdf', { returnPromise: true });
33570
+ await doc.save('map_georef.pdf', { returnPromise: true });
32634
33571
  }
32635
33572
  /**
32636
33573
  * Calculate the best Image size to fit in pdf
@@ -32642,8 +33579,8 @@ class PrintService {
32642
33579
  // Define variable to calculate best size to fit in one page
32643
33580
  const pageHeight = doc.internal.pageSize.getHeight() - (margins[0] + margins[2]);
32644
33581
  const pageWidth = doc.internal.pageSize.getWidth() - (margins[1] + margins[3]);
32645
- const canHeight = canvas.height;
32646
- const canWidth = canvas.width;
33582
+ const canHeight = this.pdf_units2points(canvas.height, 'mm');
33583
+ const canWidth = this.pdf_units2points(canvas.width, 'mm');
32647
33584
  const heightRatio = canHeight / pageHeight;
32648
33585
  const widthRatio = canWidth / pageWidth;
32649
33586
  const maxRatio = heightRatio > widthRatio ? heightRatio : widthRatio;
@@ -32759,6 +33696,41 @@ class PrintService {
32759
33696
  delete that.zipFile;
32760
33697
  });
32761
33698
  }
33699
+ pdf_units2points(n, unit) {
33700
+ let k = 1;
33701
+ // this code is borrowed from jsPDF
33702
+ // as it does not expose a public API
33703
+ // for converting units to points.
33704
+ switch (unit) {
33705
+ case 'pt':
33706
+ k = 1;
33707
+ break;
33708
+ case 'mm':
33709
+ k = 72 / 25.4;
33710
+ break;
33711
+ case 'cm':
33712
+ k = 72 / 2.54;
33713
+ break;
33714
+ case 'in':
33715
+ k = 72;
33716
+ break;
33717
+ case 'px':
33718
+ k = 96 / 72;
33719
+ break;
33720
+ case 'pc':
33721
+ k = 12;
33722
+ break;
33723
+ case 'em':
33724
+ k = 12;
33725
+ break;
33726
+ case 'ex':
33727
+ k = 6;
33728
+ break;
33729
+ default:
33730
+ throw new Error('Invalid unit: ' + unit);
33731
+ }
33732
+ return n * k;
33733
+ }
32762
33734
  }
32763
33735
  PrintService.ɵfac = function PrintService_Factory(t) { return new (t || PrintService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.MessageService), i0.ɵɵinject(i2$1.ActivityService), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.ConfigService)); };
32764
33736
  PrintService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PrintService, factory: PrintService.ɵfac, providedIn: 'root' });
@@ -33156,7 +34128,7 @@ PrintFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrintFor
33156
34128
  } }, dependencies: [i1$1.NgForOf, i2$2.ɵNgNoValidate, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgControlStatusGroup, i2$2.FormGroupDirective, i2$2.FormControlName, i3.MatButton, i13.MatFormField, i15.MatSelect, i9.MatOption, i14.MatInput, i23.MatSlideToggle, i1$1.AsyncPipe, i7.TranslatePipe, i5$1.KeyValuePipe], styles: ["mat-form-field[_ngcontent-%COMP%]{width:100%}.print-slide-toggle-container[_ngcontent-%COMP%]{overflow-x:hidden}.print-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{width:100%;margin:10px}.print-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%] .mat-slide-toggle-content{width:calc(100% - 60px)}.print-option[_ngcontent-%COMP%]{display:block;margin-right:10px;margin-bottom:15px}.print-button-top-padding[_ngcontent-%COMP%]{padding-top:25px}.igo-form[_ngcontent-%COMP%]{padding:10px 5px 5px}.igo-form-button-group[_ngcontent-%COMP%]{text-align:center}"] });
33157
34129
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrintFormComponent, [{
33158
34130
  type: Component,
33159
- args: [{ selector: 'igo-print-form', template: "<form class=\"igo-form\" [formGroup]=\"form\">\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"title\"\n placeholder=\"{{'igo.geo.printForm.title' | translate}}\">\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"subtitle\"\n placeholder=\"{{'igo.geo.printForm.subtitle' | translate}}\">\n </mat-form-field>\n </div>\n <div class=\"igo-input-container\">\n <mat-form-field>\n <input\n matInput\n formControlName=\"comment\"\n placeholder=\"{{'igo.geo.printForm.comment' | translate}}\">\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <div class=\"print-slide-toggle-container mat-typography\">\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showProjection\"\n [labelPosition]=\"'before'\">\n {{'igo.geo.printForm.showProjection' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"showScale\"\n [labelPosition]=\"'before'\">\n {{'igo.geo.printForm.showScale' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle\n class=\"print-option\"\n formControlName=\"doZipFile\"\n [labelPosition]=\"'before'\"\n [style.display]=\"isPrintService ? 'none' : ''\">\n {{'igo.geo.printForm.doZipFile' | translate}}\n </mat-slide-toggle>\n </div>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-select\n formControlName=\"legendPosition\"\n placeholder=\"{{'igo.geo.printForm.legendPosition' | translate}}\">\n <mat-option *ngFor=\"let legendPosition of legendPositions | keyvalue \" [value]=\"legendPosition.key\">\n {{'igo.geo.printForm.legendPositions.' + legendPosition.value | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\">\n <mat-form-field>\n <mat-select (selectionChange)=\"toggleImageSaveProp()\"\n formControlName=\"outputFormat\"\n placeholder=\"{{'igo.geo.printForm.outputFormat' | translate}}\">\n <mat-option *ngFor=\"let outputFormat of outputFormats | keyvalue \" [value]=\"outputFormat.key\">\n {{outputFormat.value}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'block' : 'none'\">\n <mat-form-field>\n <mat-select\n formControlName=\"paperFormat\"\n placeholder=\"{{'igo.geo.printForm.paperFormat' | translate}}\">\n <mat-option *ngFor=\"let paperFormat of paperFormats | keyvalue \" [value]=\"paperFormat.key\">\n {{('igo.geo.printForm.paperFormats.' + paperFormat.value) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'none' : 'block'\">\n <mat-form-field>\n <mat-select\n formControlName=\"imageFormat\"\n placeholder=\"{{'igo.geo.printForm.imageFormat' | translate}}\">\n <mat-option *ngFor=\"let imageFormat of imageFormats | keyvalue \" [value]=\"imageFormat.key\">\n {{imageFormat.value}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" style=\"display: none;\">\n <mat-form-field>\n <mat-select\n formControlName=\"resolution\"\n placeholder=\"{{'igo.geo.printForm.resolution' | translate}}\">\n <mat-option *ngFor=\"let resolution of resolutions | keyvalue \" [value]=\"resolution.key\">\n {{resolution.value + ' PPI'}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'block' : 'none'\">\n <mat-form-field>\n <mat-select\n formControlName=\"orientation\"\n placeholder=\"{{'igo.geo.printForm.orientation' | translate}}\">\n <mat-option *ngFor=\"let orientation of orientations | keyvalue \" [value]=\"orientation.key\">\n {{('igo.geo.printForm.' + orientation.value) | translate}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"igo-form-button-group print-button-top-padding\">\n <button\n mat-raised-button\n type=\"button\"\n [disabled]=\"!form.valid || (disabled$ | async)\"\n (click)=\"handleFormSubmit(form.value, form.valid)\">\n {{'igo.geo.printForm.saveBtn' | translate}}\n </button>\n </div>\n\n</form>\n", styles: ["mat-form-field{width:100%}.print-slide-toggle-container{overflow-x:hidden}.print-slide-toggle-container mat-slide-toggle{width:100%;margin:10px}.print-slide-toggle-container mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.print-option{display:block;margin-right:10px;margin-bottom:15px}.print-button-top-padding{padding-top:25px}.igo-form{padding:10px 5px 5px}.igo-form-button-group{text-align:center}\n"] }]
34131
+ args: [{ selector: 'igo-print-form', template: "<form class=\"igo-form\" [formGroup]=\"form\">\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"title\"\r\n placeholder=\"{{'igo.geo.printForm.title' | translate}}\">\r\n </mat-form-field>\r\n </div>\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"subtitle\"\r\n placeholder=\"{{'igo.geo.printForm.subtitle' | translate}}\">\r\n </mat-form-field>\r\n </div>\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <input\r\n matInput\r\n formControlName=\"comment\"\r\n placeholder=\"{{'igo.geo.printForm.comment' | translate}}\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\">\r\n <div class=\"print-slide-toggle-container mat-typography\">\r\n <mat-slide-toggle\r\n class=\"print-option\"\r\n formControlName=\"showProjection\"\r\n [labelPosition]=\"'before'\">\r\n {{'igo.geo.printForm.showProjection' | translate}}\r\n </mat-slide-toggle>\r\n <mat-slide-toggle\r\n class=\"print-option\"\r\n formControlName=\"showScale\"\r\n [labelPosition]=\"'before'\">\r\n {{'igo.geo.printForm.showScale' | translate}}\r\n </mat-slide-toggle>\r\n <mat-slide-toggle\r\n class=\"print-option\"\r\n formControlName=\"doZipFile\"\r\n [labelPosition]=\"'before'\"\r\n [style.display]=\"isPrintService ? 'none' : ''\">\r\n {{'igo.geo.printForm.doZipFile' | translate}}\r\n </mat-slide-toggle>\r\n </div>\r\n </div>\r\n\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <mat-select\r\n formControlName=\"legendPosition\"\r\n placeholder=\"{{'igo.geo.printForm.legendPosition' | translate}}\">\r\n <mat-option *ngFor=\"let legendPosition of legendPositions | keyvalue \" [value]=\"legendPosition.key\">\r\n {{'igo.geo.printForm.legendPositions.' + legendPosition.value | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\">\r\n <mat-form-field>\r\n <mat-select (selectionChange)=\"toggleImageSaveProp()\"\r\n formControlName=\"outputFormat\"\r\n placeholder=\"{{'igo.geo.printForm.outputFormat' | translate}}\">\r\n <mat-option *ngFor=\"let outputFormat of outputFormats | keyvalue \" [value]=\"outputFormat.key\">\r\n {{outputFormat.value}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'block' : 'none'\">\r\n <mat-form-field>\r\n <mat-select\r\n formControlName=\"paperFormat\"\r\n placeholder=\"{{'igo.geo.printForm.paperFormat' | translate}}\">\r\n <mat-option *ngFor=\"let paperFormat of paperFormats | keyvalue \" [value]=\"paperFormat.key\">\r\n {{('igo.geo.printForm.paperFormats.' + paperFormat.value) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'none' : 'block'\">\r\n <mat-form-field>\r\n <mat-select\r\n formControlName=\"imageFormat\"\r\n placeholder=\"{{'igo.geo.printForm.imageFormat' | translate}}\">\r\n <mat-option *ngFor=\"let imageFormat of imageFormats | keyvalue \" [value]=\"imageFormat.key\">\r\n {{imageFormat.value}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\" style=\"display: none;\">\r\n <mat-form-field>\r\n <mat-select\r\n formControlName=\"resolution\"\r\n placeholder=\"{{'igo.geo.printForm.resolution' | translate}}\">\r\n <mat-option *ngFor=\"let resolution of resolutions | keyvalue \" [value]=\"resolution.key\">\r\n {{resolution.value + ' PPI'}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-input-container\" [style.display]=\"isPrintService ? 'block' : 'none'\">\r\n <mat-form-field>\r\n <mat-select\r\n formControlName=\"orientation\"\r\n placeholder=\"{{'igo.geo.printForm.orientation' | translate}}\">\r\n <mat-option *ngFor=\"let orientation of orientations | keyvalue \" [value]=\"orientation.key\">\r\n {{('igo.geo.printForm.' + orientation.value) | translate}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"igo-form-button-group print-button-top-padding\">\r\n <button\r\n mat-raised-button\r\n type=\"button\"\r\n [disabled]=\"!form.valid || (disabled$ | async)\"\r\n (click)=\"handleFormSubmit(form.value, form.valid)\">\r\n {{'igo.geo.printForm.saveBtn' | translate}}\r\n </button>\r\n </div>\r\n\r\n</form>\r\n", styles: ["mat-form-field{width:100%}.print-slide-toggle-container{overflow-x:hidden}.print-slide-toggle-container mat-slide-toggle{width:100%;margin:10px}.print-slide-toggle-container mat-slide-toggle ::ng-deep .mat-slide-toggle-content{width:calc(100% - 60px)}.print-option{display:block;margin-right:10px;margin-bottom:15px}.print-button-top-padding{padding-top:25px}.igo-form{padding:10px 5px 5px}.igo-form-button-group{text-align:center}\n"] }]
33160
34132
  }], function () { return [{ type: i2$2.UntypedFormBuilder }]; }, { disabled$: [{
33161
34133
  type: Input
33162
34134
  }], imageFormat: [{
@@ -33289,7 +34261,7 @@ PrintComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PrintCompone
33289
34261
  } }, dependencies: [PrintFormComponent], encapsulation: 2 });
33290
34262
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PrintComponent, [{
33291
34263
  type: Component,
33292
- args: [{ selector: 'igo-print', template: "<igo-print-form\n [outputFormat]=\"outputFormat\"\n [paperFormat]=\"paperFormat\"\n [orientation]=\"orientation\"\n [imageFormat]=\"imageFormat\"\n [resolution]=\"resolution\"\n [legendPosition]=\"legendPosition\"\n [disabled$]=\"disabled$\"\n (submit)=\"handleFormSubmit($event)\">\n</igo-print-form>\n" }]
34264
+ args: [{ selector: 'igo-print', template: "<igo-print-form\r\n [outputFormat]=\"outputFormat\"\r\n [paperFormat]=\"paperFormat\"\r\n [orientation]=\"orientation\"\r\n [imageFormat]=\"imageFormat\"\r\n [resolution]=\"resolution\"\r\n [legendPosition]=\"legendPosition\"\r\n [disabled$]=\"disabled$\"\r\n (submit)=\"handleFormSubmit($event)\">\r\n</igo-print-form>\r\n" }]
33293
34265
  }], function () { return [{ type: PrintService }]; }, { map: [{
33294
34266
  type: Input
33295
34267
  }], outputFormat: [{
@@ -34191,7 +35163,7 @@ DirectionsInputsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: D
34191
35163
  } }, dependencies: [i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i3$1.CdkDropList, i3$1.CdkDrag, i3$1.CdkDragHandle, i2$2.DefaultValueAccessor, i2$2.NgControlStatus, i2$2.NgModel, i2.MatIcon, i3.MatButton, i13.MatFormField, i13.MatSuffix, i14.MatInput, i9.MatOption, i9.MatOptgroup, i4.MatTooltip, i11$1.MatAutocomplete, i11$1.MatAutocompleteTrigger, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-input-container[_ngcontent-%COMP%]{width:100%}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.igo-input-container.reduce[_ngcontent-%COMP%]{width:70%}.igo-input-container.reduce[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}.stops-list[_ngcontent-%COMP%]{max-width:100%;min-height:60px;display:block;background:white;border-radius:4px;overflow:hidden;padding:20px 10px}.swipe-vertical[_ngcontent-%COMP%]{cursor:move}.stop-box[_ngcontent-%COMP%]{height:60px;padding:20px 10px;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;background:white}.cdk-drag-preview[_ngcontent-%COMP%]{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder[_ngcontent-%COMP%]{opacity:0}.cdk-drag-animating[_ngcontent-%COMP%]{transition:transform .25s cubic-bezier(0,0,.2,1)}.stops-list.cdk-drop-list-dragging[_ngcontent-%COMP%] .stop-box[_ngcontent-%COMP%]:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}"] });
34192
35164
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DirectionsInputsComponent, [{
34193
35165
  type: Component,
34194
- args: [{ selector: 'igo-directions-inputs', template: "<div cdkDropList class=\"stops-list\" (cdkDropListDropped)=\"drop($event)\">\n <div touchleave \n (touchenter)=\"onStopEnter(stop)\"\n (touchleave)=\"onStopLeave()\"\n (mouseover)=\"onStopEnter(stop)\"\n (mouseleave)=\"onStopLeave()\"\n (cdkDragStarted)=\"stopIsDragged=true\"\n (cdkDragEnded)=\"stopIsDragged=false\"\n cdkDragLockAxis=\"y\" class=\"stop-box mat-typography\" *ngFor=\"let stop of stopsStore.view.all$() | async; let i = index;\" cdkDrag>\n <div [ngClass]=\"getNgClass(stop)\">\n <mat-form-field>\n <input id=\"{{stop.id}}\" type=\"text\"\n [placeholder]=\"getPlaceholder(stop)\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"stop.text\"\n aria-label=\"Number\"\n matInput\n (focus)=\"onInputFocus(stop)\"\n [(ngModel)]=\"stop.text\"\n (keyup)=\"setStopText($event,stop)\"\n (keydown.enter)=\"$event.preventDefault()\"\n [matAutocomplete]=\"auto\">\n <button \n mat-button \n *ngIf=\"(stop.text || stop.coordinates) && stopWithHover && stop.id===stopWithHover.id\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.directionsForm.clearStop' | translate\"\n matSuffix mat-icon-button color=\"warn\" aria-label=\"Clear\" (click)=\"clearStop(stop)\">\n <mat-icon svgIcon=\"close\"></mat-icon>\n </button>\n \n <mat-autocomplete [displayWith]=\"getOptionText\" #auto=\"matAutocomplete\" (optionSelected)=\"chooseProposal($event,stop)\">\n <mat-optgroup *ngFor=\"let source of stop.searchProposals\" [label]=\"source.source.title\" [disabled]=\"source.source.enabled === false\">\n <mat-option *ngFor=\"let result of source.results\" [value]=\"result\" \n matTooltipShowDelay=\"500\" [matTooltip]=\"result.meta ? result.meta.title : ''\">\n {{ result.meta ? result.meta.title : '' }}\n </mat-option>\n </mat-optgroup>\n </mat-autocomplete>\n </mat-form-field>\n </div>\n\n\n\n\n <div class=\"igo-form-button-group\" *ngIf=\"!stopIsDragged && stopWithHover && stop.id === stopWithHover.id\">\n <button class=\"swipe-vertical\" cdkDragHandle mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.directionsForm.moveStop' | translate\" color=\"primary\">\n <mat-icon svgIcon=\"gesture-swipe-vertical\"></mat-icon>\n </button>\n\n <button *ngIf=\"(stopsStore.count$ | async)> 2\" mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.directionsForm.removeStop' | translate\" color=\"warn\" (click)=\"removeStop(stop)\">\n <mat-icon svgIcon=\"delete\"></mat-icon>\n </button>\n <button *ngIf=\"(stopsStore.count$ | async)<= 2\" disabled=\"true\" mat-icon-button tooltip-position=\"below\"\n matTooltipShowDelay=\"500\" [matTooltip]=\"'igo.geo.directionsForm.removeStop' | translate\" color=\"warn\">\n <mat-icon svgIcon=\"blank\"></mat-icon>\n </button>\n </div>\n </div>\n</div>", styles: [".igo-input-container{width:100%}.igo-input-container mat-form-field{width:100%}.igo-input-container.reduce{width:70%}.igo-input-container.reduce mat-form-field{width:100%}.stops-list{max-width:100%;min-height:60px;display:block;background:white;border-radius:4px;overflow:hidden;padding:20px 10px}.swipe-vertical{cursor:move}.stop-box{height:60px;padding:20px 10px;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;background:white}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.stops-list.cdk-drop-list-dragging .stop-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
35166
+ args: [{ selector: 'igo-directions-inputs', template: "<div cdkDropList class=\"stops-list\" (cdkDropListDropped)=\"drop($event)\">\r\n <div touchleave \r\n (touchenter)=\"onStopEnter(stop)\"\r\n (touchleave)=\"onStopLeave()\"\r\n (mouseover)=\"onStopEnter(stop)\"\r\n (mouseleave)=\"onStopLeave()\"\r\n (cdkDragStarted)=\"stopIsDragged=true\"\r\n (cdkDragEnded)=\"stopIsDragged=false\"\r\n cdkDragLockAxis=\"y\" class=\"stop-box mat-typography\" *ngFor=\"let stop of stopsStore.view.all$() | async; let i = index;\" cdkDrag>\r\n <div [ngClass]=\"getNgClass(stop)\">\r\n <mat-form-field>\r\n <input id=\"{{stop.id}}\" type=\"text\"\r\n [placeholder]=\"getPlaceholder(stop)\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"stop.text\"\r\n aria-label=\"Number\"\r\n matInput\r\n (focus)=\"onInputFocus(stop)\"\r\n [(ngModel)]=\"stop.text\"\r\n (keyup)=\"setStopText($event,stop)\"\r\n (keydown.enter)=\"$event.preventDefault()\"\r\n [matAutocomplete]=\"auto\">\r\n <button \r\n mat-button \r\n *ngIf=\"(stop.text || stop.coordinates) && stopWithHover && stop.id===stopWithHover.id\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.directionsForm.clearStop' | translate\"\r\n matSuffix mat-icon-button color=\"warn\" aria-label=\"Clear\" (click)=\"clearStop(stop)\">\r\n <mat-icon svgIcon=\"close\"></mat-icon>\r\n </button>\r\n \r\n <mat-autocomplete [displayWith]=\"getOptionText\" #auto=\"matAutocomplete\" (optionSelected)=\"chooseProposal($event,stop)\">\r\n <mat-optgroup *ngFor=\"let source of stop.searchProposals\" [label]=\"source.source.title\" [disabled]=\"source.source.enabled === false\">\r\n <mat-option *ngFor=\"let result of source.results\" [value]=\"result\" \r\n matTooltipShowDelay=\"500\" [matTooltip]=\"result.meta ? result.meta.title : ''\">\r\n {{ result.meta ? result.meta.title : '' }}\r\n </mat-option>\r\n </mat-optgroup>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </div>\r\n\r\n\r\n\r\n\r\n <div class=\"igo-form-button-group\" *ngIf=\"!stopIsDragged && stopWithHover && stop.id === stopWithHover.id\">\r\n <button class=\"swipe-vertical\" cdkDragHandle mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.directionsForm.moveStop' | translate\" color=\"primary\">\r\n <mat-icon svgIcon=\"gesture-swipe-vertical\"></mat-icon>\r\n </button>\r\n\r\n <button *ngIf=\"(stopsStore.count$ | async)> 2\" mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.directionsForm.removeStop' | translate\" color=\"warn\" (click)=\"removeStop(stop)\">\r\n <mat-icon svgIcon=\"delete\"></mat-icon>\r\n </button>\r\n <button *ngIf=\"(stopsStore.count$ | async)<= 2\" disabled=\"true\" mat-icon-button tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\" [matTooltip]=\"'igo.geo.directionsForm.removeStop' | translate\" color=\"warn\">\r\n <mat-icon svgIcon=\"blank\"></mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n</div>", styles: [".igo-input-container{width:100%}.igo-input-container mat-form-field{width:100%}.igo-input-container.reduce{width:70%}.igo-input-container.reduce mat-form-field{width:100%}.stops-list{max-width:100%;min-height:60px;display:block;background:white;border-radius:4px;overflow:hidden;padding:20px 10px}.swipe-vertical{cursor:move}.stop-box{height:60px;padding:20px 10px;color:#000000de;display:flex;flex-direction:row;align-items:center;justify-content:space-between;box-sizing:border-box;background:white}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.stops-list.cdk-drop-list-dragging .stop-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
34195
35167
  }], function () { return [{ type: i2$1.LanguageService }]; }, { stopsStore: [{
34196
35168
  type: Input
34197
35169
  }], stopsFeatureStore: [{
@@ -34681,7 +35653,7 @@ DirectionsButtonsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
34681
35653
  } }, dependencies: [i1$1.NgIf, i2.MatIcon, i3.MatButton, i4.MatTooltip, i1$1.AsyncPipe, i7.TranslatePipe] });
34682
35654
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DirectionsButtonsComponent, [{
34683
35655
  type: Component,
34684
- args: [{ selector: 'igo-directions-buttons', template: "<div class=\"igo-form-button-group\">\n <button mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.directionsForm.addStop' | translate\" color=\"primary\" (click)=\"addStop()\">\n <mat-icon svgIcon=\"map-marker-plus\"></mat-icon>\n </button>\n <button mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n *ngIf=\"(routesFeatureStore.count$ | async)>=1 || (stopsStore.count$ | async)>=1\"\n [matTooltip]=\"'igo.geo.directionsForm.resetDirectionsBtn' | translate\" color=\"warn\" (click)=\"resetStops()\">\n <mat-icon svgIcon=\"file-restore\"></mat-icon>\n </button>\n <button mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n *ngIf=\"(routesFeatureStore.count$ | async)>=1\" (click)=\"zoomRoute()\"\n [matTooltip]=\"'igo.geo.directionsForm.zoomRoute' | translate\" color=\"primary\">\n <mat-icon svgIcon=\"magnify-plus-outline\"></mat-icon>\n </button>\n <button mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n *ngIf=\"(routesFeatureStore.count$ | async)>=1\" (click)=\"copyDirectionsToClipboard()\"\n [matTooltip]=\"'igo.geo.directionsForm.copy' | translate\" color=\"primary\">\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\n </button>\n <button mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\n *ngIf=\"(routesFeatureStore.count$ | async)>=1\" (click)=\"copyLinkToClipboard()\" \n [matTooltip]=\"'igo.geo.directionsForm.link' | translate\" color=\"primary\">\n <mat-icon svgIcon=\"link\"></mat-icon>\n </button>\n</div>" }]
35656
+ args: [{ selector: 'igo-directions-buttons', template: "<div class=\"igo-form-button-group\">\r\n <button mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.directionsForm.addStop' | translate\" color=\"primary\" (click)=\"addStop()\">\r\n <mat-icon svgIcon=\"map-marker-plus\"></mat-icon>\r\n </button>\r\n <button mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\r\n *ngIf=\"(routesFeatureStore.count$ | async)>=1 || (stopsStore.count$ | async)>=1\"\r\n [matTooltip]=\"'igo.geo.directionsForm.resetDirectionsBtn' | translate\" color=\"warn\" (click)=\"resetStops()\">\r\n <mat-icon svgIcon=\"file-restore\"></mat-icon>\r\n </button>\r\n <button mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\r\n *ngIf=\"(routesFeatureStore.count$ | async)>=1\" (click)=\"zoomRoute()\"\r\n [matTooltip]=\"'igo.geo.directionsForm.zoomRoute' | translate\" color=\"primary\">\r\n <mat-icon svgIcon=\"magnify-plus-outline\"></mat-icon>\r\n </button>\r\n <button mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\r\n *ngIf=\"(routesFeatureStore.count$ | async)>=1\" (click)=\"copyDirectionsToClipboard()\"\r\n [matTooltip]=\"'igo.geo.directionsForm.copy' | translate\" color=\"primary\">\r\n <mat-icon svgIcon=\"content-copy\"></mat-icon>\r\n </button>\r\n <button mat-icon-button tooltip-position=\"below\" matTooltipShowDelay=\"500\"\r\n *ngIf=\"(routesFeatureStore.count$ | async)>=1\" (click)=\"copyLinkToClipboard()\" \r\n [matTooltip]=\"'igo.geo.directionsForm.link' | translate\" color=\"primary\">\r\n <mat-icon svgIcon=\"link\"></mat-icon>\r\n </button>\r\n</div>" }]
34685
35657
  }], function () { return [{ type: i2$1.LanguageService }, { type: i2$1.MessageService }, { type: i2$1.RouteService, decorators: [{
34686
35658
  type: Optional
34687
35659
  }] }]; }, { contextUri: [{
@@ -34864,7 +35836,7 @@ DirectionsResultsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
34864
35836
  } }, dependencies: [i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i2$2.NgControlStatus, i2$2.NgModel, i2.MatIcon, i5.MatList, i5.MatListItem, i9.MatLine, i5.MatListIconCssMatStyler, i5.MatListSubheaderCssMatStyler, i11.MatDivider, i13.MatFormField, i9.MatOption, i15.MatSelect, i7.TranslatePipe], styles: [".igo-input-container[_ngcontent-%COMP%]{width:100%;padding:20px 10px}.igo-input-container[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:70%}.igo-route-title[_ngcontent-%COMP%]{font-weight:700}.igo-steps[_ngcontent-%COMP%]{cursor:pointer}.mat-line[_ngcontent-%COMP%]{word-wrap:break-word!important;white-space:pre-wrap!important}.mat-line.right[_ngcontent-%COMP%]{text-align:right}.rotate-90[_ngcontent-%COMP%]{transform:rotate(90deg)}.rotate-45[_ngcontent-%COMP%]{transform:rotate(45deg)}.rotate-270[_ngcontent-%COMP%]{transform:rotate(270deg)}.rotate-250[_ngcontent-%COMP%]{transform:rotate(250deg)}.rotate-290[_ngcontent-%COMP%]{transform:rotate(290deg)}.icon-flipped[_ngcontent-%COMP%]{transform:scaleY(-1)}"] });
34865
35837
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DirectionsResultsComponent, [{
34866
35838
  type: Component,
34867
- args: [{ selector: 'igo-directions-results', template: "<div class=\"igo-input-container\" *ngIf=\"directions && activeDirection\">\n <mat-form-field *ngIf=\"directions && directions.length > 1\">\n <mat-select placeholder=\"{{'igo.geo.directionsForm.drivingOptions' | translate}}\"\n (selectionChange)=\"changeRoute()\" [(ngModel)]=\"activeDirection\">\n <mat-option *ngFor=\"let direction of directions; let cnt = index;\" [value]=\"direction\">\n Option {{cnt + 1}} : {{formatDistance(direction.distance)}}\n ({{formatDuration(direction.duration)}})\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-divider *ngIf=\"directions && directions.length === 0\"></mat-divider>\n\n <mat-list (mouseleave)=\"onStepsListBlur()\">\n <h2 mat-header class=\"igo-route-title mat-typography\">{{activeDirection.title}}</h2>\n <h2 mat-subheader>{{formatDistance(activeDirection.distance)}}, {{formatDuration(activeDirection.duration)}}</h2>\n <mat-list-item class=\"igo-steps\" \n (mouseenter)=\"showSegment(step)\" \n (click)=\"showSegment(step,true)\" \n *ngFor=\"let step of activeDirection.steps; let cnt = index;\" igoListItem>\n <mat-icon [ngClass]=\"formatStep(step,cnt).cssClass\" mat-list-icon svgIcon=\"{{formatStep(step,cnt).image}}\">\n </mat-icon>\n\n <h4 mat-line>{{cnt +1}}. {{formatStep(step,cnt).instruction}}</h4>\n <h4 mat-line class=\"right\">{{formatDistance(step.distance)}}</h4>\n </mat-list-item>\n\n <mat-divider></mat-divider>\n\n </mat-list>\n\n</div>", styles: [".igo-input-container{width:100%;padding:20px 10px}.igo-input-container mat-form-field{width:70%}.igo-route-title{font-weight:700}.igo-steps{cursor:pointer}.mat-line{word-wrap:break-word!important;white-space:pre-wrap!important}.mat-line.right{text-align:right}.rotate-90{transform:rotate(90deg)}.rotate-45{transform:rotate(45deg)}.rotate-270{transform:rotate(270deg)}.rotate-250{transform:rotate(250deg)}.rotate-290{transform:rotate(290deg)}.icon-flipped{transform:scaleY(-1)}\n"] }]
35839
+ args: [{ selector: 'igo-directions-results', template: "<div class=\"igo-input-container\" *ngIf=\"directions && activeDirection\">\r\n <mat-form-field *ngIf=\"directions && directions.length > 1\">\r\n <mat-select placeholder=\"{{'igo.geo.directionsForm.drivingOptions' | translate}}\"\r\n (selectionChange)=\"changeRoute()\" [(ngModel)]=\"activeDirection\">\r\n <mat-option *ngFor=\"let direction of directions; let cnt = index;\" [value]=\"direction\">\r\n Option {{cnt + 1}} : {{formatDistance(direction.distance)}}\r\n ({{formatDuration(direction.duration)}})\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-divider *ngIf=\"directions && directions.length === 0\"></mat-divider>\r\n\r\n <mat-list (mouseleave)=\"onStepsListBlur()\">\r\n <h2 mat-header class=\"igo-route-title mat-typography\">{{activeDirection.title}}</h2>\r\n <h2 mat-subheader>{{formatDistance(activeDirection.distance)}}, {{formatDuration(activeDirection.duration)}}</h2>\r\n <mat-list-item class=\"igo-steps\" \r\n (mouseenter)=\"showSegment(step)\" \r\n (click)=\"showSegment(step,true)\" \r\n *ngFor=\"let step of activeDirection.steps; let cnt = index;\" igoListItem>\r\n <mat-icon [ngClass]=\"formatStep(step,cnt).cssClass\" mat-list-icon svgIcon=\"{{formatStep(step,cnt).image}}\">\r\n </mat-icon>\r\n\r\n <h4 mat-line>{{cnt +1}}. {{formatStep(step,cnt).instruction}}</h4>\r\n <h4 mat-line class=\"right\">{{formatDistance(step.distance)}}</h4>\r\n </mat-list-item>\r\n\r\n <mat-divider></mat-divider>\r\n\r\n </mat-list>\r\n\r\n</div>", styles: [".igo-input-container{width:100%;padding:20px 10px}.igo-input-container mat-form-field{width:70%}.igo-route-title{font-weight:700}.igo-steps{cursor:pointer}.mat-line{word-wrap:break-word!important;white-space:pre-wrap!important}.mat-line.right{text-align:right}.rotate-90{transform:rotate(90deg)}.rotate-45{transform:rotate(45deg)}.rotate-270{transform:rotate(270deg)}.rotate-250{transform:rotate(250deg)}.rotate-290{transform:rotate(290deg)}.icon-flipped{transform:scaleY(-1)}\n"] }]
34868
35840
  }], function () { return [{ type: i2$1.LanguageService }, { type: i0.ChangeDetectorRef }]; }, { routesFeatureStore: [{
34869
35841
  type: Input
34870
35842
  }], stepFeatureStore: [{
@@ -35141,7 +36113,7 @@ DirectionsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Directi
35141
36113
  } }, dependencies: [DirectionsInputsComponent, DirectionsButtonsComponent, DirectionsResultsComponent] });
35142
36114
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DirectionsComponent, [{
35143
36115
  type: Component,
35144
- args: [{ selector: 'igo-directions', template: "<igo-directions-buttons [contextUri]=\"contextUri\" [zoomToActiveRoute$]=\"zoomToActiveRoute$\" [routesFeatureStore]=\"routesFeatureStore\" [stopsStore]=\"stopsStore\"></igo-directions-buttons>\n\n<igo-directions-inputs (stopInputHasFocus)=\"onStopInputHasFocusChange($event)\" [coordRoundedDecimals]=\"coordRoundedDecimals\" [projection]=\"projection\" [stopsFeatureStore]=\"stopsFeatureStore\" [stopsStore]=\"stopsStore\" [debounce]=\"debounce\" [length]=\"length\"></igo-directions-inputs>\n<br>\n<igo-directions-results [stepFeatureStore]=\"stepFeatureStore\" [routesFeatureStore]=\"routesFeatureStore\"></igo-directions-results>" }]
36116
+ args: [{ selector: 'igo-directions', template: "<igo-directions-buttons [contextUri]=\"contextUri\" [zoomToActiveRoute$]=\"zoomToActiveRoute$\" [routesFeatureStore]=\"routesFeatureStore\" [stopsStore]=\"stopsStore\"></igo-directions-buttons>\r\n\r\n<igo-directions-inputs (stopInputHasFocus)=\"onStopInputHasFocusChange($event)\" [coordRoundedDecimals]=\"coordRoundedDecimals\" [projection]=\"projection\" [stopsFeatureStore]=\"stopsFeatureStore\" [stopsStore]=\"stopsStore\" [debounce]=\"debounce\" [length]=\"length\"></igo-directions-inputs>\r\n<br>\r\n<igo-directions-results [stepFeatureStore]=\"stepFeatureStore\" [routesFeatureStore]=\"routesFeatureStore\"></igo-directions-results>" }]
35145
36117
  }], function () { return [{ type: i0.ChangeDetectorRef }, { type: i2$1.LanguageService }, { type: DirectionsService }, { type: SearchService }, { type: QueryService }]; }, { contextUri: [{
35146
36118
  type: Input
35147
36119
  }], stopsStore: [{
@@ -36673,7 +37645,7 @@ SearchSelectorComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sea
36673
37645
  } }, dependencies: [i1$1.NgForOf, i4.MatTooltip, i2.MatIcon, i3.MatButton, i7$2.MatMenu, i7$2.MatMenuTrigger, i17.MatRadioGroup, i17.MatRadioButton, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".igo-search-selector-button[_ngcontent-%COMP%] div.mat-button-ripple-round{border-radius:0}.igo-search-selector-radio-group[_ngcontent-%COMP%]{display:inline-flex;flex-direction:column}.igo-search-selector-radio-group[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{margin:5px}"], changeDetection: 0 });
36674
37646
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchSelectorComponent, [{
36675
37647
  type: Component,
36676
- args: [{ selector: 'igo-search-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"igo-search-selector\">\n <button\n mat-icon-button\n class=\"igo-search-selector-button\"\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.search.menu.tooltip' | translate\"\n [matMenuTriggerFor]=\"searchSelectorMenu\">\n <mat-icon svgIcon=\"menu-down\"></mat-icon>\n </button>\n\n <mat-menu\n #searchSelectorMenu=\"matMenu\"\n class=\"no-border-radius\"\n xPosition=\"before\"\n yPosition=\"above\">\n <mat-radio-group\n class=\"igo-search-selector-radio-group\"\n [value]=\"searchType$ | async\"\n (change)=\"onSearchTypeChange($event.value)\">\n <mat-radio-button *ngFor=\"let searchType of searchTypes\" [value]=\"searchType\">\n {{getSearchTypeTitle(searchType) | translate}}\n </mat-radio-button>\n </mat-radio-group>\n </mat-menu>\n\n</div>\n", styles: [".igo-search-selector-button ::ng-deep div.mat-button-ripple-round{border-radius:0}.igo-search-selector-radio-group{display:inline-flex;flex-direction:column}.igo-search-selector-radio-group mat-radio-button{margin:5px}\n"] }]
37648
+ args: [{ selector: 'igo-search-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"igo-search-selector\">\r\n <button\r\n mat-icon-button\r\n class=\"igo-search-selector-button\"\r\n color=\"primary\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.search.menu.tooltip' | translate\"\r\n [matMenuTriggerFor]=\"searchSelectorMenu\">\r\n <mat-icon svgIcon=\"menu-down\"></mat-icon>\r\n </button>\r\n\r\n <mat-menu\r\n #searchSelectorMenu=\"matMenu\"\r\n class=\"no-border-radius\"\r\n xPosition=\"before\"\r\n yPosition=\"above\">\r\n <mat-radio-group\r\n class=\"igo-search-selector-radio-group\"\r\n [value]=\"searchType$ | async\"\r\n (change)=\"onSearchTypeChange($event.value)\">\r\n <mat-radio-button *ngFor=\"let searchType of searchTypes\" [value]=\"searchType\">\r\n {{getSearchTypeTitle(searchType) | translate}}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n </mat-menu>\r\n\r\n</div>\r\n", styles: [".igo-search-selector-button ::ng-deep div.mat-button-ripple-round{border-radius:0}.igo-search-selector-radio-group{display:inline-flex;flex-direction:column}.igo-search-selector-radio-group mat-radio-button{margin:5px}\n"] }]
36677
37649
  }], function () { return [{ type: SearchSourceService }]; }, { searchTypes: [{
36678
37650
  type: Input
36679
37651
  }], searchType: [{
@@ -37110,10 +38082,10 @@ SearchSettingsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sea
37110
38082
  i0.ɵɵproperty("ngForOf", ctx.getSearchSources());
37111
38083
  i0.ɵɵadvance(1);
37112
38084
  i0.ɵɵproperty("ngIf", ctx.hasPointerReverseSearchSource && !ctx.isTouchScreen);
37113
- } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i1$1.NgSwitch, i1$1.NgSwitchCase, i4.MatTooltip, i2.MatIcon, i3.MatButton, i7$2.MatMenu, i7$2.MatMenuItem, i7$2.MatMenuTrigger, i17.MatRadioGroup, i17.MatRadioButton, i12$1.MatCheckbox, i11.MatDivider, i23.MatSlideToggle, i7.TranslatePipe], styles: [".checkAllButton[_ngcontent-%COMP%]{text-align:center;padding:0 5px}.igo-search-settings-button[_ngcontent-%COMP%] div.mat-button-ripple-round{border-radius:0}.igo-search-settings-radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column}.igo-search-settings-radio-group[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{margin:5px}.igo-search-settings-checkbox[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{display:flex}.igo-search-settings-search-source[_ngcontent-%COMP%]{display:flex;width:100%}.igo-search-settings-search-source[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{display:flex;margin-left:5px;margin-right:5px}.pointer-summary-option[_ngcontent-%COMP%]{display:block;margin-right:10px;margin-bottom:15px}.pointer-summary-slide-toggle-container[_ngcontent-%COMP%]{overflow-x:hidden}.pointer-summary-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{margin:10px}"], changeDetection: 0 });
38085
+ } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i1$1.NgSwitch, i1$1.NgSwitchCase, i4.MatTooltip, i2.MatIcon, i3.MatButton, i7$2.MatMenu, i7$2.MatMenuItem, i7$2.MatMenuTrigger, i17.MatRadioGroup, i17.MatRadioButton, i12.MatCheckbox, i11.MatDivider, i23.MatSlideToggle, i7.TranslatePipe], styles: [".checkAllButton[_ngcontent-%COMP%]{text-align:center;padding:0 5px}.igo-search-settings-button[_ngcontent-%COMP%] div.mat-button-ripple-round{border-radius:0}.igo-search-settings-radio-group[_ngcontent-%COMP%]{display:flex;flex-direction:column}.igo-search-settings-radio-group[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{margin:5px}.igo-search-settings-checkbox[_ngcontent-%COMP%] mat-radio-button[_ngcontent-%COMP%]{display:flex}.igo-search-settings-search-source[_ngcontent-%COMP%]{display:flex;width:100%}.igo-search-settings-search-source[_ngcontent-%COMP%] mat-checkbox[_ngcontent-%COMP%]{display:flex;margin-left:5px;margin-right:5px}.pointer-summary-option[_ngcontent-%COMP%]{display:block;margin-right:10px;margin-bottom:15px}.pointer-summary-slide-toggle-container[_ngcontent-%COMP%]{overflow-x:hidden}.pointer-summary-slide-toggle-container[_ngcontent-%COMP%] mat-slide-toggle[_ngcontent-%COMP%]{margin:10px}"], changeDetection: 0 });
37114
38086
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchSettingsComponent, [{
37115
38087
  type: Component,
37116
- args: [{ selector: 'igo-search-settings', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"igo-search-settings\">\n\n <button\n mat-icon-button\n class=\"igo-search-settings-button\"\n color=\"primary\"\n tooltip-position=\"below\"\n matTooltipShowDelay=\"500\"\n [matTooltip]=\"'igo.geo.search.menu.tooltip' | translate\"\n [matMenuTriggerFor]=\"searchSettingsMenu\">\n <mat-icon svgIcon=\"chevron-down\"></mat-icon>\n </button>\n <mat-menu\n #searchSettingsMenu=\"matMenu\"\n class=\"no-border-radius\">\n <div class=\"checkAllButton\" *ngIf=\"getSearchSources().length>4\">\n <button mat-raised-button\n (click)=\"checkUncheckAllSources($event)\">{{!searchSourcesAllEnabled ? ('igo.geo.search.searchSources.unselectAll' | translate): ('igo.geo.search.searchSources.selectAll' | translate)}}</button>\n </div>\n <ng-container *ngFor=\"let source of getSearchSources()\">\n <span class=\"igo-search-settings-search-source\">\n <mat-checkbox\n class=\"igo-search-settings-checkbox\"\n [checked]=\"source.enabled\"\n [value]=\"source\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onCheckSearchSource($event, source)\">\n </mat-checkbox>\n <button *ngIf=\"source.settings.length\u00A0>\u00A00\"\n [matMenuTriggerFor]=\"sub_menu\"\n mat-menu-item>{{source.title}}\n </button>\n <button\n mat-menu-item\n *ngIf=\"source.settings.length\u00A0===\u00A00\">\n {{source.title}}\n </button>\n </span>\n <mat-menu #sub_menu=\"matMenu\">\n <ng-container *ngFor=\"let setting of source.settings\">\n <button\n mat-menu-item\n [matMenuTriggerFor]=\"test_sub_menu\">\n {{'igo.geo.search.searchSources.settings.'+ setting.title | translate}}\n </button>\n <mat-menu #test_sub_menu=\"matMenu\"\n [ngSwitch]=\"setting.type\"\n yPosition=\"above\">\n <span *ngSwitchCase=\"'radiobutton'\">\n <mat-radio-group\n class=\"igo-search-settings-radio-group\"\n [value]=\"setting\">\n <mat-radio-button *ngFor=\"let settingValue of setting.values\"\n class=\"mat-typography\"\n [value]=\"settingValue\"\n [matTooltip]=\"getAvailableHashtagsValues(settingValue)\"\n [checked]=\"settingValue.enabled\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"settingsValueCheckedRadioButton($event, source, setting, settingValue)\">\n {{settingValue.title | translate}}\n </mat-radio-button>\n </mat-radio-group>\n </span>\n <span *ngSwitchCase=\"'checkbox'\">\n <div class=\"checkAllButton\" *ngIf=\"setting.values.length\u00A0>\u00A03\">\n <button mat-raised-button\n (click)=\"checkUncheckAll($event, source, setting)\">{{setting.allEnabled || setting.allEnabled === undefined ? ('igo.geo.search.searchSources.settings.unselectAll' | translate): ('igo.geo.search.searchSources.settings.selectAll' | translate)}}</button>\n </div>\n <mat-checkbox *ngFor=\"let settingValue of getAvailableValues(setting)\"\n class=\"mat-menu-item\"\n [style.display]=\"displayBlock\"\n [checked]=\"settingValue.enabled\"\n [value]=\"setting\"\n [matTooltip]=\"getAvailableHashtagsValues(settingValue)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"settingsValueCheckedCheckbox($event, source, setting, settingValue)\">\n {{settingValue.title | translate}}\n </mat-checkbox>\n </span>\n </mat-menu>\n </ng-container>\n </mat-menu>\n </ng-container>\n <span *ngIf=\"hasPointerReverseSearchSource && !isTouchScreen\">\n <mat-divider></mat-divider>\n <span class=\"pointer-summary-slide-toggle-container mat-typography\">\n <mat-slide-toggle class=\"pointer-summary-option\" (change)=\"changePointerReverseSearch($event)\" tooltip-position=\"below\"\n matTooltipShowDelay=\"500\" [matTooltip]=\"'igo.geo.search.pointerSearchSummary.tooltip' | translate\"\n (click)=\"$event.stopPropagation()\" [checked]=\"pointerSummaryEnabled\" [labelPosition]=\"'after'\">\n {{'igo.geo.search.pointerSearchSummary.title' | translate}}\n </mat-slide-toggle>\n <mat-slide-toggle class=\"pointer-summary-option\" (change)=\"changeSearchResultsGeometry($event)\" tooltip-position=\"below\"\n matTooltipShowDelay=\"500\" [matTooltip]=\"'igo.geo.search.searchResultsGeometry.tooltip' | translate\"\n (click)=\"$event.stopPropagation()\" [checked]=\"searchResultsGeometryEnabled\" [labelPosition]=\"'after'\">\n {{'igo.geo.search.searchResultsGeometry.title' | translate}}\n </mat-slide-toggle>\n </span>\n </span>\n </mat-menu>\n</div>\n", styles: [".checkAllButton{text-align:center;padding:0 5px}.igo-search-settings-button ::ng-deep div.mat-button-ripple-round{border-radius:0}.igo-search-settings-radio-group{display:flex;flex-direction:column}.igo-search-settings-radio-group mat-radio-button{margin:5px}.igo-search-settings-checkbox mat-radio-button{display:flex}.igo-search-settings-search-source{display:flex;width:100%}.igo-search-settings-search-source mat-checkbox{display:flex;margin-left:5px;margin-right:5px}.pointer-summary-option{display:block;margin-right:10px;margin-bottom:15px}.pointer-summary-slide-toggle-container{overflow-x:hidden}.pointer-summary-slide-toggle-container mat-slide-toggle{margin:10px}\n"] }]
38088
+ args: [{ selector: 'igo-search-settings', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"igo-search-settings\">\r\n\r\n <button\r\n mat-icon-button\r\n class=\"igo-search-settings-button\"\r\n color=\"primary\"\r\n tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\"\r\n [matTooltip]=\"'igo.geo.search.menu.tooltip' | translate\"\r\n [matMenuTriggerFor]=\"searchSettingsMenu\">\r\n <mat-icon svgIcon=\"chevron-down\"></mat-icon>\r\n </button>\r\n <mat-menu\r\n #searchSettingsMenu=\"matMenu\"\r\n class=\"no-border-radius\">\r\n <div class=\"checkAllButton\" *ngIf=\"getSearchSources().length>4\">\r\n <button mat-raised-button\r\n (click)=\"checkUncheckAllSources($event)\">{{!searchSourcesAllEnabled ? ('igo.geo.search.searchSources.unselectAll' | translate): ('igo.geo.search.searchSources.selectAll' | translate)}}</button>\r\n </div>\r\n <ng-container *ngFor=\"let source of getSearchSources()\">\r\n <span class=\"igo-search-settings-search-source\">\r\n <mat-checkbox\r\n class=\"igo-search-settings-checkbox\"\r\n [checked]=\"source.enabled\"\r\n [value]=\"source\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"onCheckSearchSource($event, source)\">\r\n </mat-checkbox>\r\n <button *ngIf=\"source.settings.length\u00A0>\u00A00\"\r\n [matMenuTriggerFor]=\"sub_menu\"\r\n mat-menu-item>{{source.title}}\r\n </button>\r\n <button\r\n mat-menu-item\r\n *ngIf=\"source.settings.length\u00A0===\u00A00\">\r\n {{source.title}}\r\n </button>\r\n </span>\r\n <mat-menu #sub_menu=\"matMenu\">\r\n <ng-container *ngFor=\"let setting of source.settings\">\r\n <button\r\n mat-menu-item\r\n [matMenuTriggerFor]=\"test_sub_menu\">\r\n {{'igo.geo.search.searchSources.settings.'+ setting.title | translate}}\r\n </button>\r\n <mat-menu #test_sub_menu=\"matMenu\"\r\n [ngSwitch]=\"setting.type\"\r\n yPosition=\"above\">\r\n <span *ngSwitchCase=\"'radiobutton'\">\r\n <mat-radio-group\r\n class=\"igo-search-settings-radio-group\"\r\n [value]=\"setting\">\r\n <mat-radio-button *ngFor=\"let settingValue of setting.values\"\r\n class=\"mat-typography\"\r\n [value]=\"settingValue\"\r\n [matTooltip]=\"getAvailableHashtagsValues(settingValue)\"\r\n [checked]=\"settingValue.enabled\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"settingsValueCheckedRadioButton($event, source, setting, settingValue)\">\r\n {{settingValue.title | translate}}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n </span>\r\n <span *ngSwitchCase=\"'checkbox'\">\r\n <div class=\"checkAllButton\" *ngIf=\"setting.values.length\u00A0>\u00A03\">\r\n <button mat-raised-button\r\n (click)=\"checkUncheckAll($event, source, setting)\">{{setting.allEnabled || setting.allEnabled === undefined ? ('igo.geo.search.searchSources.settings.unselectAll' | translate): ('igo.geo.search.searchSources.settings.selectAll' | translate)}}</button>\r\n </div>\r\n <mat-checkbox *ngFor=\"let settingValue of getAvailableValues(setting)\"\r\n class=\"mat-menu-item\"\r\n [style.display]=\"displayBlock\"\r\n [checked]=\"settingValue.enabled\"\r\n [value]=\"setting\"\r\n [matTooltip]=\"getAvailableHashtagsValues(settingValue)\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"settingsValueCheckedCheckbox($event, source, setting, settingValue)\">\r\n {{settingValue.title | translate}}\r\n </mat-checkbox>\r\n </span>\r\n </mat-menu>\r\n </ng-container>\r\n </mat-menu>\r\n </ng-container>\r\n <span *ngIf=\"hasPointerReverseSearchSource && !isTouchScreen\">\r\n <mat-divider></mat-divider>\r\n <span class=\"pointer-summary-slide-toggle-container mat-typography\">\r\n <mat-slide-toggle class=\"pointer-summary-option\" (change)=\"changePointerReverseSearch($event)\" tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\" [matTooltip]=\"'igo.geo.search.pointerSearchSummary.tooltip' | translate\"\r\n (click)=\"$event.stopPropagation()\" [checked]=\"pointerSummaryEnabled\" [labelPosition]=\"'after'\">\r\n {{'igo.geo.search.pointerSearchSummary.title' | translate}}\r\n </mat-slide-toggle>\r\n <mat-slide-toggle class=\"pointer-summary-option\" (change)=\"changeSearchResultsGeometry($event)\" tooltip-position=\"below\"\r\n matTooltipShowDelay=\"500\" [matTooltip]=\"'igo.geo.search.searchResultsGeometry.tooltip' | translate\"\r\n (click)=\"$event.stopPropagation()\" [checked]=\"searchResultsGeometryEnabled\" [labelPosition]=\"'after'\">\r\n {{'igo.geo.search.searchResultsGeometry.title' | translate}}\r\n </mat-slide-toggle>\r\n </span>\r\n </span>\r\n </mat-menu>\r\n</div>\r\n", styles: [".checkAllButton{text-align:center;padding:0 5px}.igo-search-settings-button ::ng-deep div.mat-button-ripple-round{border-radius:0}.igo-search-settings-radio-group{display:flex;flex-direction:column}.igo-search-settings-radio-group mat-radio-button{margin:5px}.igo-search-settings-checkbox mat-radio-button{display:flex}.igo-search-settings-search-source{display:flex;width:100%}.igo-search-settings-search-source mat-checkbox{display:flex;margin-left:5px;margin-right:5px}.pointer-summary-option{display:block;margin-right:10px;margin-bottom:15px}.pointer-summary-slide-toggle-container{overflow-x:hidden}.pointer-summary-slide-toggle-container mat-slide-toggle{margin:10px}\n"] }]
37117
38089
  }], function () { return [{ type: SearchSourceService }, { type: i2$1.MediaService }, { type: i2$1.StorageService }]; }, { pointerSummaryEnabled: [{
37118
38090
  type: Input
37119
38091
  }], searchResultsGeometryEnabled: [{
@@ -37592,7 +38564,7 @@ SearchBarComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SearchBa
37592
38564
  } }, dependencies: [i1$1.NgClass, i1$1.NgIf, i4.MatTooltip, i2.MatIcon, i3.MatButton, i13.MatFormField, i13.MatLabel, i14.MatInput, SearchSelectorComponent, SearchSettingsComponent, i1$1.AsyncPipe, i7.TranslatePipe], styles: ["[_nghost-%COMP%] .mat-form-field{padding:0 5px}[_nghost-%COMP%] .mat-form-field-wrapper{margin-bottom:-1.5em}[_nghost-%COMP%] span.mat-form-field-label-wrapper{top:-20px}[_nghost-%COMP%] div.mat-form-field-infix{left:5px;right:5px;padding:0 0 12px!important}[_nghost-%COMP%] div.mat-form-field-underline{display:none}.igo-search-bar-container[_ngcontent-%COMP%]{position:relative;width:100%;display:inline-flex;overflow:hidden}.igo-search-bar-container[_ngcontent-%COMP%] > mat-form-field[_ngcontent-%COMP%]{width:calc(100% - 80px)}.igo-search-bar-container.empty[_ngcontent-%COMP%] > mat-form-field[_ngcontent-%COMP%]{width:calc(100% - 40px)}.search-bar-buttons[_ngcontent-%COMP%]{position:relative;right:0px;display:inline-flex;top:0}.search-bar-buttons[_ngcontent-%COMP%] > button[_ngcontent-%COMP%]:nth-child(2):before{content:\"\";left:0px;top:5px;border-right:1px solid #ddd;height:28px}igo-search-selector[_ngcontent-%COMP%]{background-color:#fff;top:0;border-radius:0}igo-search-settings[_ngcontent-%COMP%]{background-color:#fff;top:0;border-radius:0}"], changeDetection: 0 });
37593
38565
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchBarComponent, [{
37594
38566
  type: Component,
37595
- args: [{ selector: 'igo-search-bar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"igo-search-bar-container\" [ngClass]=\"{empty: empty$ | async}\">\n <mat-form-field [floatLabel]=\"floatLabel\" [appearance]=\"appearance\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input\n #input\n matInput\n autocomplete=\"off\"\n [ngClass]=\"{'hasSearchIcon': searchIcon}\"\n [disabled]=\"disabled$ | async\"\n [placeholder]=\"placeholder ? placeholder : (placeholder$ | async) ? (placeholder$.value | translate) : undefined\"\n [value]=\"term$ | async\"\n (keyup)=\"onKeyup($event)\"\n (touchend)=\"onKeyup($event)\">\n </mat-form-field>\n\n <div class=\"search-bar-buttons\">\n <button\n mat-icon-button\n [color]=\"color\"\n *ngIf=\"searchIcon !== undefined\">\n <mat-icon svgIcon=\"{{searchIcon}}\"></mat-icon>\n </button>\n\n <button\n *ngIf=\"(empty$ | async)===false\"\n mat-icon-button\n [color]=\"color\"\n (click)=\"onClearButtonClick()\"\n [matTooltip]=\"'igo.geo.search.clearSearch' | translate\">\n <mat-icon svgIcon=\"close\"></mat-icon>\n </button>\n\n <igo-search-selector\n *ngIf=\"searchSelector\"\n [searchTypes]=\"searchTypes\"\n [searchType]=\"searchType$ | async\"\n (searchTypeChange)=\"onSearchTypeChange($event)\">\n </igo-search-selector>\n\n <igo-search-settings\n *ngIf=\"searchSettings\"\n [pointerSummaryEnabled]=\"pointerSummaryEnabled\"\n (pointerSummaryStatus)=\"pointerSummaryStatus.emit($event)\"\n [searchResultsGeometryEnabled]=\"searchResultsGeometryEnabled\"\n (searchResultsGeometryStatus)=\"searchResultsGeometryStatus.emit($event)\"\n (searchSourceChange)=\"onSearchSettingsChange()\">\n </igo-search-settings>\n </div>\n</div>\n", styles: [":host ::ng-deep .mat-form-field{padding:0 5px}:host ::ng-deep .mat-form-field-wrapper{margin-bottom:-1.5em}:host ::ng-deep span.mat-form-field-label-wrapper{top:-20px}:host ::ng-deep div.mat-form-field-infix{left:5px;right:5px;padding:0 0 12px!important}:host ::ng-deep div.mat-form-field-underline{display:none}.igo-search-bar-container{position:relative;width:100%;display:inline-flex;overflow:hidden}.igo-search-bar-container>mat-form-field{width:calc(100% - 80px)}.igo-search-bar-container.empty>mat-form-field{width:calc(100% - 40px)}.search-bar-buttons{position:relative;right:0px;display:inline-flex;top:0}.search-bar-buttons>button:nth-child(2):before{content:\"\";left:0px;top:5px;border-right:1px solid #ddd;height:28px}igo-search-selector{background-color:#fff;top:0;border-radius:0}igo-search-settings{background-color:#fff;top:0;border-radius:0}\n"] }]
38567
+ args: [{ selector: 'igo-search-bar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"igo-search-bar-container\" [ngClass]=\"{empty: empty$ | async}\">\r\n <mat-form-field [floatLabel]=\"floatLabel\" [appearance]=\"appearance\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <input\r\n #input\r\n matInput\r\n autocomplete=\"off\"\r\n [ngClass]=\"{'hasSearchIcon': searchIcon}\"\r\n [disabled]=\"disabled$ | async\"\r\n [placeholder]=\"placeholder ? placeholder : (placeholder$ | async) ? (placeholder$.value | translate) : undefined\"\r\n [value]=\"term$ | async\"\r\n (keyup)=\"onKeyup($event)\"\r\n (touchend)=\"onKeyup($event)\">\r\n </mat-form-field>\r\n\r\n <div class=\"search-bar-buttons\">\r\n <button\r\n mat-icon-button\r\n [color]=\"color\"\r\n *ngIf=\"searchIcon !== undefined\">\r\n <mat-icon svgIcon=\"{{searchIcon}}\"></mat-icon>\r\n </button>\r\n\r\n <button\r\n *ngIf=\"(empty$ | async)===false\"\r\n mat-icon-button\r\n [color]=\"color\"\r\n (click)=\"onClearButtonClick()\"\r\n [matTooltip]=\"'igo.geo.search.clearSearch' | translate\">\r\n <mat-icon svgIcon=\"close\"></mat-icon>\r\n </button>\r\n\r\n <igo-search-selector\r\n *ngIf=\"searchSelector\"\r\n [searchTypes]=\"searchTypes\"\r\n [searchType]=\"searchType$ | async\"\r\n (searchTypeChange)=\"onSearchTypeChange($event)\">\r\n </igo-search-selector>\r\n\r\n <igo-search-settings\r\n *ngIf=\"searchSettings\"\r\n [pointerSummaryEnabled]=\"pointerSummaryEnabled\"\r\n (pointerSummaryStatus)=\"pointerSummaryStatus.emit($event)\"\r\n [searchResultsGeometryEnabled]=\"searchResultsGeometryEnabled\"\r\n (searchResultsGeometryStatus)=\"searchResultsGeometryStatus.emit($event)\"\r\n (searchSourceChange)=\"onSearchSettingsChange()\">\r\n </igo-search-settings>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep .mat-form-field{padding:0 5px}:host ::ng-deep .mat-form-field-wrapper{margin-bottom:-1.5em}:host ::ng-deep span.mat-form-field-label-wrapper{top:-20px}:host ::ng-deep div.mat-form-field-infix{left:5px;right:5px;padding:0 0 12px!important}:host ::ng-deep div.mat-form-field-underline{display:none}.igo-search-bar-container{position:relative;width:100%;display:inline-flex;overflow:hidden}.igo-search-bar-container>mat-form-field{width:calc(100% - 80px)}.igo-search-bar-container.empty>mat-form-field{width:calc(100% - 40px)}.search-bar-buttons{position:relative;right:0px;display:inline-flex;top:0}.search-bar-buttons>button:nth-child(2):before{content:\"\";left:0px;top:5px;border-right:1px solid #ddd;height:28px}igo-search-selector{background-color:#fff;top:0;border-radius:0}igo-search-settings{background-color:#fff;top:0;border-radius:0}\n"] }]
37596
38568
  }], function () { return [{ type: i2$1.LanguageService }, { type: SearchService }, { type: SearchSourceService }]; }, { searchTypes: [{
37597
38569
  type: Input
37598
38570
  }], searchType: [{
@@ -37839,7 +38811,7 @@ SearchResultsItemComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
37839
38811
  } }, dependencies: [i1$1.NgIf, i4.MatTooltip, i2.MatIcon, i5.MatListItem, i5.MatListAvatarCssMatStyler, i9.MatLine, i3.MatButton, i5$1.StopPropagationDirective], styles: ["[_nghost-%COMP%] small{color:#8c8c8c} .search-result-tooltip{white-space:pre-line}"], changeDetection: 0 });
37840
38812
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchResultsItemComponent, [{
37841
38813
  type: Component,
37842
- args: [{ selector: 'igo-search-results-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\n <mat-icon *ngIf=\"icon\" mat-list-avatar svgIcon=\"{{showIcons ? icon : 'blank'}}\"></mat-icon>\n\n <h4 matLine *ngIf=\"titleHtml\" [innerHtml]=\"titleHtml\" matTooltipShowDelay=\"500\" [matTooltip]=\"tooltipHtml\" matTooltipClass=\"search-result-tooltip\"></h4>\n <h4 matLine *ngIf=\"!titleHtml\" matTooltipShowDelay=\"500\" [matTooltip]=\"title\">{{title}}</h4>\n\n <button *ngIf=\"withZoomButton\"\n igoStopPropagation\n mat-icon-button\n (click)=\"onZoomHandler()\">\n <mat-icon svgIcon=\"magnify\"></mat-icon>\n </button>\n\n <ng-content\n select=[igoSearchItemToolbar]>\n </ng-content>\n\n</mat-list-item>\n", styles: [":host ::ng-deep small{color:#8c8c8c}::ng-deep .search-result-tooltip{white-space:pre-line}\n"] }]
38814
+ args: [{ selector: 'igo-search-results-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-list-item>\r\n <mat-icon *ngIf=\"icon\" mat-list-avatar svgIcon=\"{{showIcons ? icon : 'blank'}}\"></mat-icon>\r\n\r\n <h4 matLine *ngIf=\"titleHtml\" [innerHtml]=\"titleHtml\" matTooltipShowDelay=\"500\" [matTooltip]=\"tooltipHtml\" matTooltipClass=\"search-result-tooltip\"></h4>\r\n <h4 matLine *ngIf=\"!titleHtml\" matTooltipShowDelay=\"500\" [matTooltip]=\"title\">{{title}}</h4>\r\n\r\n <button *ngIf=\"withZoomButton\"\r\n igoStopPropagation\r\n mat-icon-button\r\n (click)=\"onZoomHandler()\">\r\n <mat-icon svgIcon=\"magnify\"></mat-icon>\r\n </button>\r\n\r\n <ng-content\r\n select=[igoSearchItemToolbar]>\r\n </ng-content>\r\n\r\n</mat-list-item>\r\n", styles: [":host ::ng-deep small{color:#8c8c8c}::ng-deep .search-result-tooltip{white-space:pre-line}\n"] }]
37843
38815
  }], function () { return []; }, { result: [{
37844
38816
  type: Input
37845
38817
  }], map: [{
@@ -38139,7 +39111,7 @@ SearchResultsComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Sear
38139
39111
  } }, dependencies: [i1$1.NgForOf, i1$1.NgIf, i1$1.NgTemplateOutlet, i5$1.CollapsibleComponent, i5$1.ListItemDirective, i5$1.ListComponent, SearchResultsItemComponent, i1$1.AsyncPipe, i7.TranslatePipe], styles: [".moreResults[_ngcontent-%COMP%]{cursor:pointer;color:#00f;float:right;margin-right:10px;margin-top:5px}igo-list[_ngcontent-%COMP%] mat-list{height:100%}"], changeDetection: 0 });
38140
39112
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchResultsComponent, [{
38141
39113
  type: Component,
38142
- args: [{ selector: 'igo-search-results', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-list [navigation]=\"true\">\n <ng-template\n #groupTemplate\n ngFor let-group\n [ngForOf]=\"results$ | async\">\n\n <igo-collapsible [class]=\"group.source.getId()\"\n *ngIf=\"mode === searchResultMode.Grouped; else flatTemplate\"\n [title]=\"computeGroupTitle(group)\"\n [collapsed]=\"collapsed[group.source.title]\"\n (toggle)=\"collapsed[group.source.title] = $event\">\n <ng-container *ngTemplateOutlet=\"storeItemTemplate; context: {results: group.results}\"></ng-container>\n </igo-collapsible>\n\n <ng-template #flatTemplate>\n <ng-container *ngTemplateOutlet=\"storeItemTemplate; context: {results: group.results}\"></ng-container>\n </ng-template>\n\n <ng-template #storeItemTemplate let-results=\"results\">\n <ng-template ngFor let-result [ngForOf]=\"results\">\n <igo-search-results-item\n igoListItem\n color=\"accent\"\n [map]=\"map\"\n [result]=\"result\"\n [showIcons]=\"showIcons\"\n [withZoomButton]=\"withZoomButton\"\n [focused]=\"store.state.get(result).focused\"\n [selected]=\"store.state.get(result).selected\"\n (focus)=\"resultFocus.emit(result)\"\n (unfocus)=\"resultUnfocus.emit(result)\"\n (select)=\"onResultSelect(result)\"\n (mouseenter)=\"resultFocus.emit(result)\"\n (mouseleave)=\"resultUnfocus.emit(result)\">\n\n <ng-container igoSearchItemToolbar\n [ngTemplateOutlet]=\"templateSearchToolbar\"\n [ngTemplateOutletContext]=\"{result: result}\">\n </ng-container>\n\n </igo-search-results-item>\n </ng-template>\n <span class=\"moreResults mat-typography\" *ngIf=\"isMoreResults(group)\" (click)=\"displayMoreResults(group)\">\n <u>{{ 'igo.geo.search.displayMoreResults' | translate }}</u>\n </span>\n </ng-template>\n\n </ng-template>\n\n</igo-list>\n", styles: [".moreResults{cursor:pointer;color:#00f;float:right;margin-right:10px;margin-top:5px}igo-list ::ng-deep mat-list{height:100%}\n"] }]
39114
+ args: [{ selector: 'igo-search-results', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-list [navigation]=\"true\">\r\n <ng-template\r\n #groupTemplate\r\n ngFor let-group\r\n [ngForOf]=\"results$ | async\">\r\n\r\n <igo-collapsible [class]=\"group.source.getId()\"\r\n *ngIf=\"mode === searchResultMode.Grouped; else flatTemplate\"\r\n [title]=\"computeGroupTitle(group)\"\r\n [collapsed]=\"collapsed[group.source.title]\"\r\n (toggle)=\"collapsed[group.source.title] = $event\">\r\n <ng-container *ngTemplateOutlet=\"storeItemTemplate; context: {results: group.results}\"></ng-container>\r\n </igo-collapsible>\r\n\r\n <ng-template #flatTemplate>\r\n <ng-container *ngTemplateOutlet=\"storeItemTemplate; context: {results: group.results}\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template #storeItemTemplate let-results=\"results\">\r\n <ng-template ngFor let-result [ngForOf]=\"results\">\r\n <igo-search-results-item\r\n igoListItem\r\n color=\"accent\"\r\n [map]=\"map\"\r\n [result]=\"result\"\r\n [showIcons]=\"showIcons\"\r\n [withZoomButton]=\"withZoomButton\"\r\n [focused]=\"store.state.get(result).focused\"\r\n [selected]=\"store.state.get(result).selected\"\r\n (focus)=\"resultFocus.emit(result)\"\r\n (unfocus)=\"resultUnfocus.emit(result)\"\r\n (select)=\"onResultSelect(result)\"\r\n (mouseenter)=\"resultFocus.emit(result)\"\r\n (mouseleave)=\"resultUnfocus.emit(result)\">\r\n\r\n <ng-container igoSearchItemToolbar\r\n [ngTemplateOutlet]=\"templateSearchToolbar\"\r\n [ngTemplateOutletContext]=\"{result: result}\">\r\n </ng-container>\r\n\r\n </igo-search-results-item>\r\n </ng-template>\r\n <span class=\"moreResults mat-typography\" *ngIf=\"isMoreResults(group)\" (click)=\"displayMoreResults(group)\">\r\n <u>{{ 'igo.geo.search.displayMoreResults' | translate }}</u>\r\n </span>\r\n </ng-template>\r\n\r\n </ng-template>\r\n\r\n</igo-list>\r\n", styles: [".moreResults{cursor:pointer;color:#00f;float:right;margin-right:10px;margin-top:5px}igo-list ::ng-deep mat-list{height:100%}\n"] }]
38143
39115
  }], function () { return [{ type: i0.ChangeDetectorRef }, { type: SearchService }]; }, { map: [{
38144
39116
  type: Input
38145
39117
  }], store: [{
@@ -38343,7 +39315,7 @@ SearchResultAddButtonComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ ty
38343
39315
  } }, dependencies: [i1$1.NgIf, i7$1.MatBadge, i4.MatTooltip, i2.MatIcon, i3.MatButton, i5$1.StopPropagationDirective, i5$1.IgoBadgeIconDirective, i1$1.AsyncPipe, i7.TranslatePipe], changeDetection: 0 });
38344
39316
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchResultAddButtonComponent, [{
38345
39317
  type: Component,
38346
- args: [{ selector: 'igo-search-add-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\nigoStopPropagation\n(mouseenter)=\"onMouseEvent($event)\" (mouseleave)=\"onMouseEvent($event)\"\n*ngIf=\"layer.meta.dataType === 'Layer'\"\nmat-icon-button\ntooltip-position=\"below\"\nmatTooltipShowDelay=\"500\"\n[matTooltip]=\"(tooltip$ | async) | translate\"\n[color]=\"(isPreview$ | async) ? '' : added ? 'warn' : ''\"\n(click)=\"onToggleClick($event)\">\n<mat-icon\n matBadge=\"icon\"\n igoMatBadgeIcon=\"eye-off\"\n igoMatBadgeInverseColor=\"true\"\n [matBadgeHidden]=\"(inRange$ | async)\"\n matBadgeDisabled=\"true\"\n matBadgeSize=\"small\"\n matBadgePosition=\"after\"\n [svgIcon]=\"(isPreview$ | async) ? 'plus' : added ? 'delete' : 'plus'\">\n</mat-icon>\n</button>\n" }]
39318
+ args: [{ selector: 'igo-search-add-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\r\nigoStopPropagation\r\n(mouseenter)=\"onMouseEvent($event)\" (mouseleave)=\"onMouseEvent($event)\"\r\n*ngIf=\"layer.meta.dataType === 'Layer'\"\r\nmat-icon-button\r\ntooltip-position=\"below\"\r\nmatTooltipShowDelay=\"500\"\r\n[matTooltip]=\"(tooltip$ | async) | translate\"\r\n[color]=\"(isPreview$ | async) ? '' : added ? 'warn' : ''\"\r\n(click)=\"onToggleClick($event)\">\r\n<mat-icon\r\n matBadge=\"icon\"\r\n igoMatBadgeIcon=\"eye-off\"\r\n igoMatBadgeInverseColor=\"true\"\r\n [matBadgeHidden]=\"(inRange$ | async)\"\r\n matBadgeDisabled=\"true\"\r\n matBadgeSize=\"small\"\r\n matBadgePosition=\"after\"\r\n [svgIcon]=\"(isPreview$ | async) ? 'plus' : added ? 'delete' : 'plus'\">\r\n</mat-icon>\r\n</button>\r\n" }]
38347
39319
  }], function () { return [{ type: LayerService }]; }, { layer: [{
38348
39320
  type: Input
38349
39321
  }], added: [{
@@ -38864,7 +39836,7 @@ ToastComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ToastCompone
38864
39836
  } }, dependencies: [i1$1.NgIf, i2.MatIcon, i3.MatButton, i5$1.PanelComponent, i5$1.FlexibleComponent, FeatureDetailsComponent], styles: ["[_nghost-%COMP%]{position:absolute;bottom:0px;width:100%;max-height:calc(100% - 50px);background-color:#fff}igo-feature-details[_ngcontent-%COMP%] table{width:100%}"] });
38865
39837
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ToastComponent, [{
38866
39838
  type: Component,
38867
- args: [{ selector: 'igo-toast', template: "<igo-flexible #flex\n collapsedMobile=\"51px\"\n expandedMobile=\"300px\"\n [state]=\"state\"\n (swipeup)=\"swipe($event.type)\"\n (swipedown)=\"swipe($event.type)\">\n\n <igo-panel [title]=\"title\">\n <button\n mat-icon-button\n panelLeftButton\n (click)=\"toggle()\">\n <mat-icon [svgIcon]=\"['collapsed', 'initial'].indexOf(flex.state) >= 0 ? 'arrow_upward' : 'arrow_downward'\"></mat-icon>\n </button>\n\n <button mat-icon-button panelRightButton class=\"igo-icon-button\" (click)=\"zoomToFeatureExtent()\" *ngIf=\"feature.geometry\">\n <mat-icon svgIcon=\"zoom-in\"></mat-icon>\n </button>\n\n <igo-feature-details [feature]=\"feature\"></igo-feature-details>\n </igo-panel>\n\n</igo-flexible>\n", styles: [":host{position:absolute;bottom:0px;width:100%;max-height:calc(100% - 50px);background-color:#fff}igo-feature-details ::ng-deep table{width:100%}\n"] }]
39839
+ args: [{ selector: 'igo-toast', template: "<igo-flexible #flex\r\n collapsedMobile=\"51px\"\r\n expandedMobile=\"300px\"\r\n [state]=\"state\"\r\n (swipeup)=\"swipe($event.type)\"\r\n (swipedown)=\"swipe($event.type)\">\r\n\r\n <igo-panel [title]=\"title\">\r\n <button\r\n mat-icon-button\r\n panelLeftButton\r\n (click)=\"toggle()\">\r\n <mat-icon [svgIcon]=\"['collapsed', 'initial'].indexOf(flex.state) >= 0 ? 'arrow_upward' : 'arrow_downward'\"></mat-icon>\r\n </button>\r\n\r\n <button mat-icon-button panelRightButton class=\"igo-icon-button\" (click)=\"zoomToFeatureExtent()\" *ngIf=\"feature.geometry\">\r\n <mat-icon svgIcon=\"zoom-in\"></mat-icon>\r\n </button>\r\n\r\n <igo-feature-details [feature]=\"feature\"></igo-feature-details>\r\n </igo-panel>\r\n\r\n</igo-flexible>\r\n", styles: [":host{position:absolute;bottom:0px;width:100%;max-height:calc(100% - 50px);background-color:#fff}igo-feature-details ::ng-deep table{width:100%}\n"] }]
38868
39840
  }], function () { return []; }, { expanded: [{
38869
39841
  type: Input
38870
39842
  }], map: [{
@@ -38945,7 +39917,7 @@ OgcFilterComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OgcFilte
38945
39917
  } }, dependencies: [OgcFilterableItemComponent], changeDetection: 0 });
38946
39918
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OgcFilterComponent, [{
38947
39919
  type: Component,
38948
- args: [{ selector: 'igo-ogc-filter', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-ogc-filterable-item\n igoListItem\n [layer]=\"layer\"\n [header]=\"false\" \n [map]=\"map\" >\n</igo-ogc-filterable-item>" }]
39920
+ args: [{ selector: 'igo-ogc-filter', changeDetection: ChangeDetectionStrategy.OnPush, template: "<igo-ogc-filterable-item\r\n igoListItem\r\n [layer]=\"layer\"\r\n [header]=\"false\" \r\n [map]=\"map\" >\r\n</igo-ogc-filterable-item>" }]
38949
39921
  }], function () { return [{ type: i0.ChangeDetectorRef }]; }, { layer: [{
38950
39922
  type: Input
38951
39923
  }], map: [{
@@ -39452,7 +40424,7 @@ ConfirmationPopupComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type:
39452
40424
  } }, dependencies: [i3.MatButton, i1.MatDialogContent, i1.MatDialogActions], styles: ["div.mat-dialog-actions[_ngcontent-%COMP%]{justify-content:center}"] });
39453
40425
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ConfirmationPopupComponent, [{
39454
40426
  type: Component,
39455
- args: [{ selector: 'igo-confirmation-popup-component', template: "<div mat-dialog-content>\n <p class=\"mat-typography\">{{data.type === 'add' ?\n languageService.translate.instant('igo.geo.workspace.addConfirmation') :\n languageService.translate.instant('igo.geo.workspace.deleteConfirmation')}}</p>\n</div>\n<div mat-dialog-actions>\n <button\n mat-raised-button\n color=\"primary\"\n (click)=\"confirmedAction()\">Ok\n </button>\n <button\n mat-raised-button\n (click)=\"cancelAction()\">{{languageService.translate.instant('igo.geo.workspace.cancel')}}\n </button>\n</div>", styles: ["div.mat-dialog-actions{justify-content:center}\n"] }]
40427
+ args: [{ selector: 'igo-confirmation-popup-component', template: "<div mat-dialog-content>\r\n <p class=\"mat-typography\">{{data.type === 'add' ?\r\n languageService.translate.instant('igo.geo.workspace.addConfirmation') :\r\n languageService.translate.instant('igo.geo.workspace.deleteConfirmation')}}</p>\r\n</div>\r\n<div mat-dialog-actions>\r\n <button\r\n mat-raised-button\r\n color=\"primary\"\r\n (click)=\"confirmedAction()\">Ok\r\n </button>\r\n <button\r\n mat-raised-button\r\n (click)=\"cancelAction()\">{{languageService.translate.instant('igo.geo.workspace.cancel')}}\r\n </button>\r\n</div>", styles: ["div.mat-dialog-actions{justify-content:center}\n"] }]
39456
40428
  }], function () { return [{ type: i1.MatDialogRef }, { type: i2$1.LanguageService }, { type: undefined, decorators: [{
39457
40429
  type: Inject,
39458
40430
  args: [MAT_DIALOG_DATA]
@@ -41103,138 +42075,6 @@ function provideOsrmDirectionsSource() {
41103
42075
  };
41104
42076
  }
41105
42077
 
41106
- /**
41107
- * Cadastre search source
41108
- */
41109
- class CadastreSearchSource extends SearchSource {
41110
- constructor(http, languageService, storageService, options) {
41111
- super(options, storageService);
41112
- this.http = http;
41113
- this.languageService = languageService;
41114
- }
41115
- getId() {
41116
- return CadastreSearchSource.id;
41117
- }
41118
- getType() {
41119
- return CadastreSearchSource.type;
41120
- }
41121
- /*
41122
- * Source : https://wiki.openstreetmap.org/wiki/Key:amenity
41123
- */
41124
- getDefaultOptions() {
41125
- return {
41126
- title: 'Cadastre (Québec)',
41127
- searchUrl: 'https://carto.cptaq.gouv.qc.ca/php/find_lot_v1.php?'
41128
- };
41129
- }
41130
- /**
41131
- * Search a place by name
41132
- * @param term Place name
41133
- * @returns Observable of <SearchResult<Feature>[]
41134
- */
41135
- search(term, options) {
41136
- term = term.endsWith(',') ? term.slice(0, -1) : term;
41137
- term = term.startsWith(',') ? term.substr(1) : term;
41138
- term = term.replace(/ /g, '');
41139
- const params = this.computeSearchRequestParams(term, options || {});
41140
- if (!params.get('numero') || !params.get('numero').match(/^[0-9,]+$/g)) {
41141
- return of([]);
41142
- }
41143
- return this.http
41144
- .get(this.searchUrl, { params, responseType: 'text' })
41145
- .pipe(map((response) => this.extractResults(response, term)));
41146
- }
41147
- computeSearchRequestParams(term, options) {
41148
- return new HttpParams({
41149
- fromObject: Object.assign({
41150
- numero: term,
41151
- epsg: '4326'
41152
- }, this.params, options.params || {})
41153
- });
41154
- }
41155
- extractResults(response, term) {
41156
- return response
41157
- .split('<br />')
41158
- .filter((lot) => lot.length > 0)
41159
- .map((lot) => this.dataToResult(lot, term));
41160
- }
41161
- dataToResult(data, term) {
41162
- const lot = data.split(';');
41163
- const numero = lot[0];
41164
- const wkt = lot[7];
41165
- const geometry = this.computeGeometry(wkt);
41166
- const properties = {
41167
- NoLot: numero,
41168
- Route: '<span class="routing"> <u>' + this.languageService.translate.instant('igo.geo.seeRouting') + '</u> </span>'
41169
- };
41170
- const id = [this.getId(), 'cadastre', numero].join('.');
41171
- return {
41172
- source: this,
41173
- meta: {
41174
- dataType: FEATURE,
41175
- id,
41176
- title: numero,
41177
- score: computeTermSimilarity(term.trim(), numero),
41178
- icon: 'map-marker'
41179
- },
41180
- data: {
41181
- type: FEATURE,
41182
- projection: 'EPSG:4326',
41183
- geometry,
41184
- properties,
41185
- meta: {
41186
- id,
41187
- title: numero
41188
- }
41189
- }
41190
- };
41191
- }
41192
- computeGeometry(wkt) {
41193
- const feature = new olWKT().readFeature(wkt, {
41194
- dataProjection: 'EPSG:4326',
41195
- featureProjection: 'EPSG:4326'
41196
- });
41197
- return {
41198
- type: feature.getGeometry().getType(),
41199
- coordinates: feature.getGeometry().getCoordinates()
41200
- };
41201
- }
41202
- }
41203
- CadastreSearchSource.id = 'cadastre';
41204
- CadastreSearchSource.type = FEATURE;
41205
- CadastreSearchSource.ɵfac = function CadastreSearchSource_Factory(t) { return new (t || CadastreSearchSource)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(i2$1.LanguageService), i0.ɵɵinject(i2$1.StorageService), i0.ɵɵinject('options')); };
41206
- CadastreSearchSource.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CadastreSearchSource, factory: CadastreSearchSource.ɵfac });
41207
- __decorate([
41208
- Cacheable({
41209
- maxCacheCount: 20
41210
- })
41211
- ], CadastreSearchSource.prototype, "search", null);
41212
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CadastreSearchSource, [{
41213
- type: Injectable
41214
- }], function () { return [{ type: i1$2.HttpClient }, { type: i2$1.LanguageService }, { type: i2$1.StorageService }, { type: undefined, decorators: [{
41215
- type: Inject,
41216
- args: ['options']
41217
- }] }]; }, { search: [] }); })();
41218
-
41219
- /**
41220
- * Cadastre search source factory
41221
- * @ignore
41222
- */
41223
- function cadastreSearchSourceFactory(http, languageService, storageService, config) {
41224
- return new CadastreSearchSource(http, languageService, storageService, config.getConfig(`searchSources.${CadastreSearchSource.id}`));
41225
- }
41226
- /**
41227
- * Function that returns a provider for the Cadastre search source
41228
- */
41229
- function provideCadastreSearchSource() {
41230
- return {
41231
- provide: SearchSource,
41232
- useFactory: cadastreSearchSourceFactory,
41233
- multi: true,
41234
- deps: [HttpClient, LanguageService, StorageService, ConfigService]
41235
- };
41236
- }
41237
-
41238
42078
  /**
41239
42079
  * Nominatim search source
41240
42080
  */
@@ -41274,7 +42114,7 @@ class NominatimSearchSource extends SearchSource {
41274
42114
  },
41275
42115
  {
41276
42116
  title: 'igo.geo.search.nominatim.type.entertainment',
41277
- value: 'arts_centre,brothel,casino,cinema,community_center_fountain,gambling,nightclub,planetarium \
42117
+ value: 'arts_centre,brothel,casino,cinema,community_center_fountain,gambling,nightclub,planetarium \
41278
42118
  ,public_bookcase,social_centre,stripclub,studio,swingerclub,theatre,internet_cafe',
41279
42119
  enabled: false
41280
42120
  },
@@ -41994,7 +42834,7 @@ class ConfigFileToGeoDBService {
41994
42834
  }
41995
42835
  if (currentDate >= geoData.triggerDate) {
41996
42836
  if (geoData.action === 'update') {
41997
- const insertEvent = `${geoData.source || 'automatedDataUpdate'} (${geoData.triggerDate})`;
42837
+ const insertEvent = `${geoData.source || InsertSourceInsertDBEnum.System} (${geoData.triggerDate})`;
41998
42838
  geoData.urls.map((url) => {
41999
42839
  datas$.push(this.geoDBService.getByID(url).pipe(concatMap((res) => {
42000
42840
  if (res?.insertEvent !== insertEvent) {
@@ -42003,8 +42843,31 @@ class ConfigFileToGeoDBService {
42003
42843
  .info('igo.geo.indexedDb.data-download-start', undefined, { disableTimeOut: true, progressBar: false, closeButton: true, tapToDismiss: false });
42004
42844
  firstDownload = false;
42005
42845
  }
42006
- return this.http.get(url)
42007
- .pipe(concatMap(r => this.geoDBService.update(url, url, r, 'system', insertEvent)));
42846
+ let responseType = 'json';
42847
+ const isZip = this.isZip(url);
42848
+ if (isZip) {
42849
+ responseType = 'arraybuffer';
42850
+ }
42851
+ return this.http.get(url, { responseType }).pipe(concatMap(r => {
42852
+ if (isZip) {
42853
+ const observables$ = [this.geoDBService.update(url, url, {}, InsertSourceInsertDBEnum.System, insertEvent)];
42854
+ JSZip.loadAsync(r)
42855
+ .then((zipped) => {
42856
+ zipped.forEach((relativePath) => {
42857
+ if (relativePath.toLocaleLowerCase().endsWith('.geojson')) {
42858
+ zipped.file(relativePath).async("base64").then((r) => {
42859
+ const geojson = JSON.parse(atob(r));
42860
+ const subUrl = geoData.zippedBaseUrl || '';
42861
+ const zippedUrl = subUrl + (subUrl.endsWith('/') ? '' : '/') + relativePath;
42862
+ observables$.push(this.geoDBService.update(zippedUrl, url, geojson, InsertSourceInsertDBEnum.System, insertEvent));
42863
+ });
42864
+ }
42865
+ });
42866
+ });
42867
+ return zip(observables$);
42868
+ }
42869
+ return this.geoDBService.update(url, url, r, InsertSourceInsertDBEnum.System, insertEvent);
42870
+ }));
42008
42871
  }
42009
42872
  else {
42010
42873
  return of(false);
@@ -42030,6 +42893,10 @@ class ConfigFileToGeoDBService {
42030
42893
  }
42031
42894
  });
42032
42895
  }
42896
+ isZip(value) {
42897
+ const regex = /(zip)$/;
42898
+ return typeof value === 'string' && regex.test(value.toLowerCase());
42899
+ }
42033
42900
  }
42034
42901
  ConfigFileToGeoDBService.ɵfac = function ConfigFileToGeoDBService_Factory(t) { return new (t || ConfigFileToGeoDBService)(i0.ɵɵinject(i1$2.HttpClient), i0.ɵɵinject(GeoDBService), i0.ɵɵinject(i2$1.MessageService)); };
42035
42902
  ConfigFileToGeoDBService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ConfigFileToGeoDBService, factory: ConfigFileToGeoDBService.ɵfac, providedIn: 'root' });
@@ -42048,5 +42915,5 @@ ConfigFileToGeoDBService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token:
42048
42915
  * Generated bundle index. Do not edit.
42049
42916
  */
42050
42917
 
42051
- export { AddCatalogDialogComponent, ArcGISRestDataSource, BaseLayersSwitcherComponent, CadastreSearchSource, CapabilitiesService, CartoDataSource, Catalog, CatalogBrowserComponent, CatalogFactory, CatalogItemType, CatalogLibaryComponent, CatalogService, ClusterDataSource, CompositeCatalog, ConfigFileToGeoDBService, ConfirmationPopupComponent, CoordinatesReverseSearchSource, CoordinatesReverseSearchSourceFactory, CoordinatesSearchResultFormatter, DataService, DataSource, DataSourceService, DirectionRelativePositionType, DirectionType, DirectionsButtonsComponent, DirectionsComponent, DirectionsFormat, DirectionsInputsComponent, DirectionsResultsComponent, DirectionsService, DirectionsSource, DownloadButtonComponent, DownloadService, DrawComponent, DrawControl, DrawIconService, DrawStyleService, DropGeoFileDirective, EditionWorkspace, EditionWorkspaceService, EncodingFormat, EsriStyleGenerator, ExportButtonComponent, ExportError, ExportFormat, ExportInvalidFileError, ExportNothingToExportError, ExportService, FEATURE, FeatureDataSource, FeatureDetailsComponent, FeatureDetailsDirective, FeatureFormComponent, FeatureMotion, FeatureStore, FeatureStoreInMapExtentStrategy, FeatureStoreInMapResolutionStrategy, FeatureStoreLoadingLayerStrategy, FeatureStoreLoadingStrategy, FeatureStoreSelectionStrategy, FeatureWorkspace, FeatureWorkspaceService, FilterableDataSourcePipe, FontType, GeoDBService, GeoNetworkService, GeolocateButtonComponent, GeometryFormFieldComponent, GeometryFormFieldInputComponent, GeometrySliceError, GeometrySliceLineStringError, GeometrySliceMultiPolygonError, GeometrySliceTooManyIntersectionError, GeometryType, GoogleLinks, HomeExtentButtonComponent, HoverFeatureDirective, IChercheReverseSearchSource, IChercheSearchResultFormatter, IChercheSearchSource, ILayerSearchResultFormatter, ILayerSearchSource, IgoCatalogBrowserModule, IgoCatalogLibraryModule, IgoCatalogModule, IgoConfirmationPopupModule, IgoDataSourceModule, IgoDirectionsModule, IgoDownloadModule, IgoDrawModule, IgoDrawingToolModule, IgoFeatureDetailsModule, IgoFeatureFormModule, IgoFeatureModule, IgoFilterModule, IgoGeoModule, IgoGeoWorkspaceModule, IgoGeometryFormFieldModule, IgoGeometryModule, IgoHttpParameterCodec, IgoImportExportModule, IgoLayerModule, IgoMap, IgoMapModule, IgoMeasureModule, IgoMeasurerModule, IgoMetadataModule, IgoOgcFilterModule, IgoOverlayModule, IgoPrintModule, IgoQueryModule, IgoSearchBarModule, IgoSearchModule, IgoSearchResultsModule, IgoSearchSelectorModule, IgoSearchSettingsModule, IgoStyleListModule, IgoToastModule, IgoWktModule, IgoWorkspaceSelectorModule, IgoWorkspaceUpdatorModule, ImageArcGISRestDataSource, ImageLayer, ImageWatcher, ImportError, ImportExportComponent, ImportInvalidFileError, ImportNothingToImportError, ImportOgreServerError, ImportSRSError, ImportService, ImportSizeError, ImportUnreadableFileError, InfoSectionComponent, InsertSourceInsertDBEnum, LAYER, Layer, LayerItemComponent, LayerLegendComponent, LayerLegendItemComponent, LayerLegendListBindingDirective, LayerLegendListComponent, LayerListBindingDirective, LayerListComponent, LayerListControlsEnum, LayerListDisplacement, LayerListSelectVisibleEnum, LayerListToolComponent, LayerListToolControlsEnum, LayerListToolService, LayerService, LinkedProperties, MEASURE_UNIT_AUTO, MVTDataSource, MapBrowserComponent, MapCenterComponent, MapController, MapGeolocationController, MapOfflineDirective, MapService, MapViewAction, MapViewController, MeasureAreaUnit, MeasureAreaUnitAbbreviation, MeasureFormatPipe, MeasureLengthUnit, MeasureLengthUnitAbbreviation, MeasureType, MeasurerComponent, MenuButtonComponent, MetadataAbstractComponent, MetadataButtonComponent, MetadataService, MiniBaseMapComponent, ModifyControl, NominatimSearchSource, OGCFilterService, OSMDataSource, OfflineButtonComponent, OgcFilterButtonComponent, OgcFilterComponent, OgcFilterFormComponent, OgcFilterOperator, OgcFilterOperatorType, OgcFilterSelectionComponent, OgcFilterTimeComponent, OgcFilterTimeSliderComponent, OgcFilterWidget, OgcFilterWriter, OgcFilterableFormComponent, OgcFilterableItemComponent, OgcFilterableListBindingDirective, OgcFilterableListComponent, OlDragSelectInteraction, OptionsApiService, OptionsService, OsmLinks, OsrmDirectionsSource, Overlay, OverlayAction, OverlayDirective, OverlayService, PointerPositionDirective, PrintComponent, PrintFormComponent, PrintLegendPosition, PrintOrientation, PrintOutputFormat, PrintPaperFormat, PrintResolution, PrintSaveImageFormat, PrintService, ProjectionService, ProposalType, QueryDirective, QueryFormat, QueryFormatMimeType, QueryHtmlTarget, QuerySearchSource, QueryService, ResponseType, RotationButtonComponent, RoutesFeatureStore, SEARCH_TYPES, STYLELIST_OPTIONS, SearchBarComponent, SearchPointerSummaryDirective, SearchResultAddButtonComponent, SearchResultMode, SearchResultsComponent, SearchResultsItemComponent, SearchSelectorComponent, SearchService, SearchSettingsComponent, SearchSource, SearchSourceService, SliceControl, SourceDirectionsType, SpatialFilterItemComponent, SpatialFilterItemType, SpatialFilterListComponent, SpatialFilterQueryType, SpatialFilterService, SpatialFilterType, SpatialFilterTypeComponent, StepFeatureStore, StopsFeatureStore, StopsStore, StoredQueriesReverseSearchSource, StoredQueriesSearchSource, StyleListService, StyleModalComponent, StyleService, SwipeControlComponent, TileArcGISRestDataSource, TileDebugDataSource, TileLayer, TileWatcher, TimeFilterButtonComponent, TimeFilterFormComponent, TimeFilterItemComponent, TimeFilterListBindingDirective, TimeFilterListComponent, TimeFilterService, TimeFilterStyle, TimeFilterType, ToastComponent, TooltipType, TrackFeatureButtonComponent, TypeCapabilities, TypeCatalog, VectorLayer, VectorTileLayer, VectorWatcher, WFSDataSource, WFSService, WMSDataSource, WMTSDataSource, WakeLockButtonComponent, WebSocketDataSource, WfsWorkspace, WfsWorkspaceService, WktService, WorkspaceSelectorDirective, WorkspaceUpdatorDirective, XYZDataSource, ZoomButtonComponent, addDirectionToRoutesFeatureStore, addLayerAndFeaturesStyledToMap, addLayerAndFeaturesToMap, addLinearRingToOlPolygon, addStopToStopsFeatureStore, addStopToStore, buildUrl, cadastreSearchSourceFactory, checkWfsParams, clearOlGeometryMidpoints, computeBestAreaUnit, computeBestLengthUnit, computeLayerTitleFromFile, computeMVTOptionsOnHover, computeOlFeatureExtent, computeOlFeaturesDiff, computeOlFeaturesExtent, computeProjectionsConstraints, computeRelativePosition, computeStopsPosition, computeTermSimilarity, convertDDToDMS, createDefaultTileGrid, createDrawHoleInteractionStyle, createDrawInteractionStyle, createInteractionStyle, createMeasureInteractionStyle, createMeasureLayerStyle, createOlTooltipAtPoint, createOlTooltipDrawAtPoint, createOverlayDefaultStyle, createOverlayLayer, createOverlayMarkerStyle, ctrlKeyDown, defaultCoordinatesSearchResultFormatterFactory, defaultEpsg, defaultFieldNameGeometry, defaultIChercheSearchResultFormatterFactory, defaultMaxFeatures, defaultWfsVersion, directionsStyle, entitiesToRowData, exportToCSV, featureFromOl, featureToOl, featureToSearchResult, featuresAreOutOfView, featuresAreTooDeepInView, findDiff, formatDistance, formatDuration, formatInstruction, formatMeasure, formatScale, formatWFSQueryString, generateArcgisRestIdFromSourceOptions, generateFeatureIdFromSourceOptions, generateId, generateIdFromSourceOptions, generateWMSIdFromSourceOptions, generateWMTSIdFromSourceOptions, generateWfsIdFromSourceOptions, generateXYZIdFromSourceOptions, getAllChildLayersByDeletion, getAllChildLayersByProperty, getCommonVectorSelectedStyle, getCommonVectorStyle, getDirectChildLayersByDeletion, getDirectChildLayersByProperty, getDirectParentLayerByDeletion, getDirectParentLayerByProperty, getFileExtension, getFormatFromOptions, getIgoLayerByLinkId, getLayersLegends, getLinkedLayersOptions, getMousePositionFromOlGeometryEvent, getOlTooltipAtCenter, getOlTooltipsAtMidpoints, getResolutionFromScale, getRootParentByDeletion, getRootParentByProperty, getRowsInMapExtent, getScaleFromResolution, getSelectedOnly, getTooltipsOfOlGeometry, gmlRegex, handleFileExportError, handleFileExportSuccess, handleFileImportError, handleFileImportSuccess, handleInvalidFileImportError, handleLayerPropertyChange, handleNothingToExportError, handleNothingToImportError, handleOgreServerImportError, handleSRSImportError, handleSizeFileImportError, handleUnreadbleFileImportError, hideOlFeature, hoverFeatureMarker, ichercheReverseSearchSourceFactory, ichercheSearchSourceFactory, ilayerSearchResultFormatterFactory, ilayerSearchSourceFactory, initLayerSyncFromRootParentLayers, initRoutesFeatureStore, initStepFeatureStore, initStopsFeatureStore, jsonRegex, layerFeatureIsQueryable, layerHasLinkDeletion, layerHasLinkWithProperty, layerIsQueryable, lonLatConversion, mapExtentStrategyActiveToolTip, measureOlGeometry, measureOlGeometryArea, measureOlGeometryLength, metersToFeet, metersToKilometers, metersToMiles, metersToUnit, moveToOlFeatures, mtmZoneFromLonLat, noElementSelected, nominatimSearchSourceFactory, ogcFilterWidgetFactory, olLayerFeatureIsQueryable, olLayerIsQueryable, optionsApiFactory, osrmDirectionsSourcesFactory, pointerPositionSummaryMarker, provideCadastreSearchSource, provideCoordinatesReverseSearchSource, provideDefaultCoordinatesSearchResultFormatter, provideDefaultIChercheSearchResultFormatter, provideIChercheReverseSearchSource, provideIChercheSearchSource, provideILayerSearchResultFormatter, provideILayerSearchSource, provideNominatimSearchSource, provideOgcFilterWidget, provideOptionsApi, provideOsrmDirectionsSource, provideSearchSourceService, provideStoredQueriesReverseSearchSource, provideStoredQueriesSearchSource, provideStyleListLoader, provideStyleListOptions, removeStopFromStore, renderFeatureFromOl, roundCoordTo, scaleExtent, searchSourceServiceFactory, setRowsInMapExtent, setSelectedOnly, sliceOlGeometry, sliceOlLineString, sliceOlPolygon, sourceCanReverseSearch, sourceCanReverseSearchAsSummary, sourceCanSearch, squareMetersToAcres, squareMetersToHectares, squareMetersToSquareFeet, squareMetersToSquareKilometers, squareMetersToSquareMiles, squareMetersToUnit, standardizeUrl, storedqueriesReverseSearchSourceFactory, storedqueriesSearchSourceFactory, stringToLonLat, styleListFactory, translateBearing, translateModifier, tryAddLoadingStrategy, tryAddSelectionStrategy, tryBindStoreLayer, updateOlGeometryCenter, updateOlGeometryMidpoints, updateOlTooltipAtCenter, updateOlTooltipDrawAtCenter, updateOlTooltipsAtMidpoints, updateOlTooltipsDrawAtMidpoints, updateStoreSorting, utmZoneFromLonLat, viewStatesAreEqual, zoneMtm, zoneUtm };
42918
+ export { AddCatalogDialogComponent, ArcGISRestDataSource, BaseLayersSwitcherComponent, CapabilitiesService, CartoDataSource, Catalog, CatalogBrowserComponent, CatalogFactory, CatalogItemType, CatalogLibaryComponent, CatalogService, ClusterDataSource, CompositeCatalog, ConfigFileToGeoDBService, ConfirmationPopupComponent, CoordinatesReverseSearchSource, CoordinatesReverseSearchSourceFactory, CoordinatesSearchResultFormatter, CoordinatesUnit, DDtoDMS, DataService, DataSource, DataSourceService, DirectionRelativePositionType, DirectionType, DirectionsButtonsComponent, DirectionsComponent, DirectionsFormat, DirectionsInputsComponent, DirectionsResultsComponent, DirectionsService, DirectionsSource, DownloadButtonComponent, DownloadService, DrawComponent, DrawControl, DrawIconService, DrawStyleService, DropGeoFileDirective, EditionWorkspace, EditionWorkspaceService, EncodingFormat, EsriStyleGenerator, ExportButtonComponent, ExportError, ExportFormat, ExportInvalidFileError, ExportNothingToExportError, ExportService, FEATURE, FeatureDataSource, FeatureDetailsComponent, FeatureDetailsDirective, FeatureFormComponent, FeatureMotion, FeatureStore, FeatureStoreInMapExtentStrategy, FeatureStoreInMapResolutionStrategy, FeatureStoreLoadingLayerStrategy, FeatureStoreLoadingStrategy, FeatureStoreSelectionStrategy, FeatureWorkspace, FeatureWorkspaceService, FilterableDataSourcePipe, FontType, GeoDBService, GeoNetworkService, GeolocateButtonComponent, GeometryFormFieldComponent, GeometryFormFieldInputComponent, GeometrySliceError, GeometrySliceLineStringError, GeometrySliceMultiPolygonError, GeometrySliceTooManyIntersectionError, GeometryType, GoogleLinks, HomeExtentButtonComponent, HoverFeatureDirective, IChercheReverseSearchSource, IChercheSearchResultFormatter, IChercheSearchSource, ILayerSearchResultFormatter, ILayerSearchSource, IgoCatalogBrowserModule, IgoCatalogLibraryModule, IgoCatalogModule, IgoConfirmationPopupModule, IgoDataSourceModule, IgoDirectionsModule, IgoDownloadModule, IgoDrawModule, IgoDrawingToolModule, IgoFeatureDetailsModule, IgoFeatureFormModule, IgoFeatureModule, IgoFilterModule, IgoGeoModule, IgoGeoWorkspaceModule, IgoGeometryFormFieldModule, IgoGeometryModule, IgoHttpParameterCodec, IgoImportExportModule, IgoLayerModule, IgoMap, IgoMapModule, IgoMeasureModule, IgoMeasurerModule, IgoMetadataModule, IgoOgcFilterModule, IgoOverlayModule, IgoPrintModule, IgoQueryModule, IgoSearchBarModule, IgoSearchModule, IgoSearchResultsModule, IgoSearchSelectorModule, IgoSearchSettingsModule, IgoStyleListModule, IgoToastModule, IgoWktModule, IgoWorkspaceSelectorModule, IgoWorkspaceUpdatorModule, ImageArcGISRestDataSource, ImageLayer, ImageWatcher, ImportError, ImportExportComponent, ImportInvalidFileError, ImportNothingToImportError, ImportOgreServerError, ImportSRSError, ImportService, ImportSizeError, ImportUnreadableFileError, InfoSectionComponent, InsertSourceInsertDBEnum, LAYER, LabelType, Layer, LayerItemComponent, LayerLegendComponent, LayerLegendItemComponent, LayerLegendListBindingDirective, LayerLegendListComponent, LayerListBindingDirective, LayerListComponent, LayerListControlsEnum, LayerListDisplacement, LayerListSelectVisibleEnum, LayerListToolComponent, LayerListToolControlsEnum, LayerListToolService, LayerService, LinkedProperties, MEASURE_UNIT_AUTO, MVTDataSource, MapBrowserComponent, MapCenterComponent, MapController, MapGeolocationController, MapOfflineDirective, MapService, MapViewAction, MapViewController, MeasureAreaUnit, MeasureAreaUnitAbbreviation, MeasureFormatPipe, MeasureLengthUnit, MeasureLengthUnitAbbreviation, MeasureType, MeasurerComponent, MenuButtonComponent, MetadataAbstractComponent, MetadataButtonComponent, MetadataService, MiniBaseMapComponent, ModifyControl, NominatimSearchSource, OGCFilterService, OSMDataSource, OfflineButtonComponent, OgcFilterButtonComponent, OgcFilterComponent, OgcFilterFormComponent, OgcFilterOperator, OgcFilterOperatorType, OgcFilterSelectionComponent, OgcFilterTimeComponent, OgcFilterTimeSliderComponent, OgcFilterWidget, OgcFilterWriter, OgcFilterableFormComponent, OgcFilterableItemComponent, OgcFilterableListBindingDirective, OgcFilterableListComponent, OlDragSelectInteraction, OptionsApiService, OptionsService, OsmLinks, OsrmDirectionsSource, Overlay, OverlayAction, OverlayDirective, OverlayService, PointerPositionDirective, PrintComponent, PrintFormComponent, PrintLegendPosition, PrintOrientation, PrintOutputFormat, PrintPaperFormat, PrintResolution, PrintSaveImageFormat, PrintService, ProjectionService, ProposalType, QueryDirective, QueryFormat, QueryFormatMimeType, QueryHtmlTarget, QuerySearchSource, QueryService, ResponseType, RotationButtonComponent, RoutesFeatureStore, SEARCH_TYPES, STYLELIST_OPTIONS, SearchBarComponent, SearchPointerSummaryDirective, SearchResultAddButtonComponent, SearchResultMode, SearchResultsComponent, SearchResultsItemComponent, SearchSelectorComponent, SearchService, SearchSettingsComponent, SearchSource, SearchSourceService, SliceControl, SourceDirectionsType, SpatialFilterItemComponent, SpatialFilterItemType, SpatialFilterListComponent, SpatialFilterQueryType, SpatialFilterService, SpatialFilterType, SpatialFilterTypeComponent, StepFeatureStore, StopsFeatureStore, StopsStore, StoredQueriesReverseSearchSource, StoredQueriesSearchSource, StyleListService, StyleModalComponent, StyleService, SwipeControlComponent, TileArcGISRestDataSource, TileDebugDataSource, TileLayer, TileWatcher, TimeFilterButtonComponent, TimeFilterFormComponent, TimeFilterItemComponent, TimeFilterListBindingDirective, TimeFilterListComponent, TimeFilterService, TimeFilterStyle, TimeFilterType, ToastComponent, TooltipType, TrackFeatureButtonComponent, TypeCapabilities, TypeCatalog, VectorLayer, VectorTileLayer, VectorWatcher, WFSDataSource, WFSService, WMSDataSource, WMTSDataSource, WakeLockButtonComponent, WebSocketDataSource, WfsWorkspace, WfsWorkspaceService, WktService, WorkspaceSelectorDirective, WorkspaceUpdatorDirective, XYZDataSource, ZoomButtonComponent, addDirectionToRoutesFeatureStore, addLayerAndFeaturesStyledToMap, addLayerAndFeaturesToMap, addLinearRingToOlPolygon, addStopToStopsFeatureStore, addStopToStore, buildUrl, checkWfsParams, clearOlGeometryMidpoints, computeBestAreaUnit, computeBestLengthUnit, computeLayerTitleFromFile, computeMVTOptionsOnHover, computeOlFeatureExtent, computeOlFeaturesDiff, computeOlFeaturesExtent, computeProjectionsConstraints, computeRelativePosition, computeStopsPosition, computeTermSimilarity, convertDDToDMS, createDefaultTileGrid, createDrawHoleInteractionStyle, createDrawInteractionStyle, createInteractionStyle, createMeasureInteractionStyle, createMeasureLayerStyle, createOlTooltipAtPoint, createOlTooltipDrawAtPoint, createOverlayDefaultStyle, createOverlayLayer, createOverlayMarkerStyle, ctrlKeyDown, defaultCoordinatesSearchResultFormatterFactory, defaultEpsg, defaultFieldNameGeometry, defaultIChercheSearchResultFormatterFactory, defaultMaxFeatures, defaultWfsVersion, directionsStyle, entitiesToRowData, exportToCSV, featureFromOl, featureToOl, featureToSearchResult, featuresAreOutOfView, featuresAreTooDeepInView, findDiff, formatDistance, formatDuration, formatInstruction, formatMeasure, formatScale, formatWFSQueryString, generateArcgisRestIdFromSourceOptions, generateFeatureIdFromSourceOptions, generateId, generateIdFromSourceOptions, generateWMSIdFromSourceOptions, generateWMTSIdFromSourceOptions, generateWfsIdFromSourceOptions, generateXYZIdFromSourceOptions, getAllChildLayersByDeletion, getAllChildLayersByProperty, getCommonVectorSelectedStyle, getCommonVectorStyle, getDirectChildLayersByDeletion, getDirectChildLayersByProperty, getDirectParentLayerByDeletion, getDirectParentLayerByProperty, getFileExtension, getFormatFromOptions, getIgoLayerByLinkId, getLayersLegends, getLinkedLayersOptions, getMousePositionFromOlGeometryEvent, getOlTooltipAtCenter, getOlTooltipsAtMidpoints, getResolutionFromScale, getRootParentByDeletion, getRootParentByProperty, getRowsInMapExtent, getScaleFromResolution, getSelectedOnly, getTooltipsOfOlGeometry, gmlRegex, handleFileExportError, handleFileExportSuccess, handleFileImportError, handleFileImportSuccess, handleInvalidFileImportError, handleLayerPropertyChange, handleNothingToExportError, handleNothingToImportError, handleOgreServerImportError, handleSRSImportError, handleSizeFileImportError, handleUnreadbleFileImportError, hideOlFeature, hoverFeatureMarker, ichercheReverseSearchSourceFactory, ichercheSearchSourceFactory, ilayerSearchResultFormatterFactory, ilayerSearchSourceFactory, initLayerSyncFromRootParentLayers, initRoutesFeatureStore, initStepFeatureStore, initStopsFeatureStore, jsonRegex, layerFeatureIsQueryable, layerHasLinkDeletion, layerHasLinkWithProperty, layerIsQueryable, lonLatConversion, mapExtentStrategyActiveToolTip, measureOlGeometry, measureOlGeometryArea, measureOlGeometryLength, metersToFeet, metersToKilometers, metersToMiles, metersToUnit, moveToOlFeatures, mtmZoneFromLonLat, noElementSelected, nominatimSearchSourceFactory, ogcFilterWidgetFactory, olLayerFeatureIsQueryable, olLayerIsQueryable, optionsApiFactory, osrmDirectionsSourcesFactory, pointerPositionSummaryMarker, provideCoordinatesReverseSearchSource, provideDefaultCoordinatesSearchResultFormatter, provideDefaultIChercheSearchResultFormatter, provideIChercheReverseSearchSource, provideIChercheSearchSource, provideILayerSearchResultFormatter, provideILayerSearchSource, provideNominatimSearchSource, provideOgcFilterWidget, provideOptionsApi, provideOsrmDirectionsSource, provideSearchSourceService, provideStoredQueriesReverseSearchSource, provideStoredQueriesSearchSource, provideStyleListLoader, provideStyleListOptions, removeStopFromStore, renderFeatureFromOl, roundCoordTo, roundCoordToString, scaleExtent, searchSourceServiceFactory, setRowsInMapExtent, setSelectedOnly, sliceOlGeometry, sliceOlLineString, sliceOlPolygon, sourceCanReverseSearch, sourceCanReverseSearchAsSummary, sourceCanSearch, squareMetersToAcres, squareMetersToHectares, squareMetersToSquareFeet, squareMetersToSquareKilometers, squareMetersToSquareMiles, squareMetersToUnit, standardizeUrl, storedqueriesReverseSearchSourceFactory, storedqueriesSearchSourceFactory, stringToLonLat, styleListFactory, translateBearing, translateModifier, tryAddLoadingStrategy, tryAddSelectionStrategy, tryBindStoreLayer, updateOlGeometryCenter, updateOlGeometryMidpoints, updateOlTooltipAtCenter, updateOlTooltipDrawAtCenter, updateOlTooltipsAtMidpoints, updateOlTooltipsDrawAtMidpoints, updateStoreSorting, utmZoneFromLonLat, viewStatesAreEqual, zoneMtm, zoneUtm };
42052
42919
  //# sourceMappingURL=igo2-geo.mjs.map