@igo2/geo 18.0.1-next.2 → 18.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. package/esm2022/igo2-geo.mjs +5 -0
  2. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +234 -0
  3. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +272 -0
  4. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +246 -0
  5. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +19 -0
  6. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +136 -0
  7. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +60 -0
  8. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +232 -0
  9. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +24 -0
  10. package/esm2022/lib/catalog/catalog-library/index.mjs +4 -0
  11. package/esm2022/lib/catalog/catalog.module.mjs +26 -0
  12. package/esm2022/lib/catalog/index.mjs +6 -0
  13. package/esm2022/lib/catalog/shared/catalog.abstract.mjs +32 -0
  14. package/esm2022/lib/catalog/shared/catalog.enum.mjs +16 -0
  15. package/esm2022/lib/catalog/shared/catalog.interface.mjs +2 -0
  16. package/esm2022/lib/catalog/shared/catalog.service.mjs +706 -0
  17. package/esm2022/lib/catalog/shared/catalogs.mjs +75 -0
  18. package/esm2022/lib/catalog/shared/index.mjs +5 -0
  19. package/esm2022/lib/datasource/index.mjs +3 -0
  20. package/esm2022/lib/datasource/shared/capabilities.interface.mjs +17 -0
  21. package/esm2022/lib/datasource/shared/capabilities.service.mjs +441 -0
  22. package/esm2022/lib/datasource/shared/datasource.service.mjs +258 -0
  23. package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +2 -0
  24. package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +2 -0
  25. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +2 -0
  26. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +222 -0
  27. package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +2 -0
  28. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +118 -0
  29. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +2 -0
  30. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +24 -0
  31. package/esm2022/lib/datasource/shared/datasources/data.service.mjs +3 -0
  32. package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +2 -0
  33. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +42 -0
  34. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +2 -0
  35. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +52 -0
  36. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +2 -0
  37. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +70 -0
  38. package/esm2022/lib/datasource/shared/datasources/index.mjs +36 -0
  39. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +2 -0
  40. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +33 -0
  41. package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +2 -0
  42. package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +14 -0
  43. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +2 -0
  44. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +60 -0
  45. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +2 -0
  46. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +17 -0
  47. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +2 -0
  48. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +56 -0
  49. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +2 -0
  50. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +137 -0
  51. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +170 -0
  52. package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +2 -0
  53. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +227 -0
  54. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +224 -0
  55. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +2 -0
  56. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +18 -0
  57. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +2 -0
  58. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +11 -0
  59. package/esm2022/lib/datasource/shared/index.mjs +6 -0
  60. package/esm2022/lib/datasource/shared/options/index.mjs +5 -0
  61. package/esm2022/lib/datasource/shared/options/options-api.interface.mjs +2 -0
  62. package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +15 -0
  63. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +85 -0
  64. package/esm2022/lib/datasource/shared/options/options.service.mjs +3 -0
  65. package/esm2022/lib/datasource/utils/index.mjs +2 -0
  66. package/esm2022/lib/datasource/utils/tilegrid.mjs +20 -0
  67. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +246 -0
  68. package/esm2022/lib/directions/directions-buttons/index.mjs +2 -0
  69. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +312 -0
  70. package/esm2022/lib/directions/directions-inputs/index.mjs +2 -0
  71. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +192 -0
  72. package/esm2022/lib/directions/directions-results/index.mjs +2 -0
  73. package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +5 -0
  74. package/esm2022/lib/directions/directions-sources/directions-source.mjs +3 -0
  75. package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +23 -0
  76. package/esm2022/lib/directions/directions-sources/index.mjs +5 -0
  77. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +159 -0
  78. package/esm2022/lib/directions/directions.component.mjs +437 -0
  79. package/esm2022/lib/directions/directions.module.mjs +46 -0
  80. package/esm2022/lib/directions/directions.provider.mjs +16 -0
  81. package/esm2022/lib/directions/index.mjs +8 -0
  82. package/esm2022/lib/directions/shared/directions-source.service.mjs +18 -0
  83. package/esm2022/lib/directions/shared/directions.enum.mjs +72 -0
  84. package/esm2022/lib/directions/shared/directions.interface.mjs +2 -0
  85. package/esm2022/lib/directions/shared/directions.service.mjs +239 -0
  86. package/esm2022/lib/directions/shared/directions.utils.mjs +522 -0
  87. package/esm2022/lib/directions/shared/index.mjs +6 -0
  88. package/esm2022/lib/directions/shared/store.mjs +21 -0
  89. package/esm2022/lib/download/download-button/download-button.component.mjs +48 -0
  90. package/esm2022/lib/download/download-button/index.mjs +2 -0
  91. package/esm2022/lib/download/download.module.mjs +24 -0
  92. package/esm2022/lib/download/index.mjs +3 -0
  93. package/esm2022/lib/download/shared/download.interface.mjs +2 -0
  94. package/esm2022/lib/download/shared/download.service.mjs +67 -0
  95. package/esm2022/lib/download/shared/index.mjs +3 -0
  96. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +42 -0
  97. package/esm2022/lib/draw/draw/draw-popup.component.mjs +421 -0
  98. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +28 -0
  99. package/esm2022/lib/draw/draw/draw.component.mjs +1136 -0
  100. package/esm2022/lib/draw/draw/draw.module.mjs +19 -0
  101. package/esm2022/lib/draw/drawingTool.module.mjs +18 -0
  102. package/esm2022/lib/draw/index.mjs +3 -0
  103. package/esm2022/lib/draw/shared/draw-icon.service.mjs +30 -0
  104. package/esm2022/lib/draw/shared/draw.enum.mjs +21 -0
  105. package/esm2022/lib/draw/shared/draw.interface.mjs +2 -0
  106. package/esm2022/lib/draw/shared/draw.utils.mjs +125 -0
  107. package/esm2022/lib/draw/shared/index.mjs +5 -0
  108. package/esm2022/lib/environment/environment.interface.mjs +2 -0
  109. package/esm2022/lib/environment/index.mjs +2 -0
  110. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +306 -0
  111. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +56 -0
  112. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +26 -0
  113. package/esm2022/lib/feature/feature-details/index.mjs +4 -0
  114. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +101 -0
  115. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +19 -0
  116. package/esm2022/lib/feature/feature.module.mjs +26 -0
  117. package/esm2022/lib/feature/index.mjs +5 -0
  118. package/esm2022/lib/feature/shared/feature-store.utils.mjs +28 -0
  119. package/esm2022/lib/feature/shared/feature.enums.mjs +9 -0
  120. package/esm2022/lib/feature/shared/feature.interfaces.mjs +2 -0
  121. package/esm2022/lib/feature/shared/feature.utils.mjs +332 -0
  122. package/esm2022/lib/feature/shared/index.mjs +8 -0
  123. package/esm2022/lib/feature/shared/store.mjs +143 -0
  124. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +216 -0
  125. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +119 -0
  126. package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +99 -0
  127. package/esm2022/lib/feature/shared/strategies/index.mjs +8 -0
  128. package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +103 -0
  129. package/esm2022/lib/feature/shared/strategies/loading.mjs +136 -0
  130. package/esm2022/lib/feature/shared/strategies/search.mjs +158 -0
  131. package/esm2022/lib/feature/shared/strategies/selection.mjs +385 -0
  132. package/esm2022/lib/feature/shared/strategies.utils.mjs +37 -0
  133. package/esm2022/lib/filter/filter.module.mjs +131 -0
  134. package/esm2022/lib/filter/index.mjs +17 -0
  135. package/esm2022/lib/filter/ogc-filter-button/index.mjs +2 -0
  136. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +141 -0
  137. package/esm2022/lib/filter/ogc-filter-form/index.mjs +2 -0
  138. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +325 -0
  139. package/esm2022/lib/filter/ogc-filter-selection/index.mjs +2 -0
  140. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +787 -0
  141. package/esm2022/lib/filter/ogc-filter-time/index.mjs +3 -0
  142. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +201 -0
  143. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +665 -0
  144. package/esm2022/lib/filter/ogc-filterable-form/index.mjs +2 -0
  145. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +66 -0
  146. package/esm2022/lib/filter/ogc-filterable-item/index.mjs +2 -0
  147. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +244 -0
  148. package/esm2022/lib/filter/ogc-filterable-list/index.mjs +3 -0
  149. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +39 -0
  150. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +32 -0
  151. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +63 -0
  152. package/esm2022/lib/filter/shared/index.mjs +12 -0
  153. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +72 -0
  154. package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +30 -0
  155. package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +2 -0
  156. package/esm2022/lib/filter/shared/ogc-filter.mjs +756 -0
  157. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +47 -0
  158. package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +23 -0
  159. package/esm2022/lib/filter/shared/spatial-filter.interface.mjs +2 -0
  160. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +282 -0
  161. package/esm2022/lib/filter/shared/time-filter.enum.mjs +13 -0
  162. package/esm2022/lib/filter/shared/time-filter.interface.mjs +2 -0
  163. package/esm2022/lib/filter/shared/time-filter.service.mjs +107 -0
  164. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/index.mjs +2 -0
  165. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +875 -0
  166. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/index.mjs +2 -0
  167. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +191 -0
  168. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/index.mjs +2 -0
  169. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +120 -0
  170. package/esm2022/lib/filter/time-filter-button/index.mjs +2 -0
  171. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +70 -0
  172. package/esm2022/lib/filter/time-filter-form/index.mjs +2 -0
  173. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +537 -0
  174. package/esm2022/lib/filter/time-filter-item/index.mjs +2 -0
  175. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +90 -0
  176. package/esm2022/lib/filter/time-filter-list/index.mjs +3 -0
  177. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +39 -0
  178. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +24 -0
  179. package/esm2022/lib/geo.module.mjs +63 -0
  180. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +559 -0
  181. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +170 -0
  182. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +24 -0
  183. package/esm2022/lib/geometry/geometry-form-field/index.mjs +4 -0
  184. package/esm2022/lib/geometry/geometry.module.mjs +18 -0
  185. package/esm2022/lib/geometry/index.mjs +3 -0
  186. package/esm2022/lib/geometry/shared/controls/draw.mjs +340 -0
  187. package/esm2022/lib/geometry/shared/controls/index.mjs +4 -0
  188. package/esm2022/lib/geometry/shared/controls/modify.mjs +538 -0
  189. package/esm2022/lib/geometry/shared/controls/slice.mjs +190 -0
  190. package/esm2022/lib/geometry/shared/geometry.errors.mjs +24 -0
  191. package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +2 -0
  192. package/esm2022/lib/geometry/shared/geometry.utils.mjs +113 -0
  193. package/esm2022/lib/geometry/shared/index.mjs +5 -0
  194. package/esm2022/lib/import-export/export-button/export-button.component.mjs +49 -0
  195. package/esm2022/lib/import-export/export-button/index.mjs +2 -0
  196. package/esm2022/lib/import-export/import-export/import-export.component.mjs +876 -0
  197. package/esm2022/lib/import-export/import-export/index.mjs +2 -0
  198. package/esm2022/lib/import-export/import-export.module.mjs +31 -0
  199. package/esm2022/lib/import-export/index.mjs +5 -0
  200. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +114 -0
  201. package/esm2022/lib/import-export/shared/export.errors.mjs +15 -0
  202. package/esm2022/lib/import-export/shared/export.interface.mjs +2 -0
  203. package/esm2022/lib/import-export/shared/export.service.mjs +378 -0
  204. package/esm2022/lib/import-export/shared/export.type.mjs +13 -0
  205. package/esm2022/lib/import-export/shared/export.utils.mjs +51 -0
  206. package/esm2022/lib/import-export/shared/import.errors.mjs +39 -0
  207. package/esm2022/lib/import-export/shared/import.interface.mjs +2 -0
  208. package/esm2022/lib/import-export/shared/import.service.mjs +221 -0
  209. package/esm2022/lib/import-export/shared/import.utils.mjs +203 -0
  210. package/esm2022/lib/import-export/shared/index.mjs +11 -0
  211. package/esm2022/lib/layer/index.mjs +16 -0
  212. package/esm2022/lib/layer/layer-group/index.mjs +2 -0
  213. package/esm2022/lib/layer/layer-group/layer-group.component.mjs +103 -0
  214. package/esm2022/lib/layer/layer-item/index.mjs +2 -0
  215. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +196 -0
  216. package/esm2022/lib/layer/layer-legend/index.mjs +2 -0
  217. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +287 -0
  218. package/esm2022/lib/layer/layer-legend-item/index.mjs +2 -0
  219. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +85 -0
  220. package/esm2022/lib/layer/layer-legend-list/index.mjs +3 -0
  221. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +54 -0
  222. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +104 -0
  223. package/esm2022/lib/layer/layer-list/index.mjs +2 -0
  224. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +232 -0
  225. package/esm2022/lib/layer/layer-list-tool/index.mjs +4 -0
  226. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +92 -0
  227. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +7 -0
  228. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +61 -0
  229. package/esm2022/lib/layer/layer-search/index.mjs +2 -0
  230. package/esm2022/lib/layer/layer-search/layer-search.component.mjs +65 -0
  231. package/esm2022/lib/layer/layer-unavailable/index.mjs +3 -0
  232. package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +26 -0
  233. package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +35 -0
  234. package/esm2022/lib/layer/layer-viewer/index.mjs +3 -0
  235. package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +226 -0
  236. package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +2 -0
  237. package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +2 -0
  238. package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +207 -0
  239. package/esm2022/lib/layer/layer-visibility-button/index.mjs +2 -0
  240. package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +83 -0
  241. package/esm2022/lib/layer/layer.module.mjs +107 -0
  242. package/esm2022/lib/layer/shared/clusterParam.mjs +2 -0
  243. package/esm2022/lib/layer/shared/index.mjs +6 -0
  244. package/esm2022/lib/layer/shared/layer-controller.mjs +316 -0
  245. package/esm2022/lib/layer/shared/layer-selection.mjs +38 -0
  246. package/esm2022/lib/layer/shared/layer.enums.mjs +2 -0
  247. package/esm2022/lib/layer/shared/layer.service.mjs +315 -0
  248. package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +2 -0
  249. package/esm2022/lib/layer/shared/layers/any-layer.mjs +2 -0
  250. package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +2 -0
  251. package/esm2022/lib/layer/shared/layers/image-layer.mjs +75 -0
  252. package/esm2022/lib/layer/shared/layers/index.mjs +18 -0
  253. package/esm2022/lib/layer/shared/layers/layer-base.mjs +199 -0
  254. package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +2 -0
  255. package/esm2022/lib/layer/shared/layers/layer-group.mjs +120 -0
  256. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +7 -0
  257. package/esm2022/lib/layer/shared/layers/layer.mjs +178 -0
  258. package/esm2022/lib/layer/shared/layers/legend.interface.mjs +2 -0
  259. package/esm2022/lib/layer/shared/layers/linked/index.mjs +4 -0
  260. package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +12 -0
  261. package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +242 -0
  262. package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +70 -0
  263. package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +2 -0
  264. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +55 -0
  265. package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +2 -0
  266. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +576 -0
  267. package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +2 -0
  268. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +112 -0
  269. package/esm2022/lib/layer/track-feature-button/index.mjs +2 -0
  270. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +54 -0
  271. package/esm2022/lib/layer/utils/image-watcher.mjs +62 -0
  272. package/esm2022/lib/layer/utils/index.mjs +6 -0
  273. package/esm2022/lib/layer/utils/layer.utils.mjs +57 -0
  274. package/esm2022/lib/layer/utils/outputLegend.mjs +32 -0
  275. package/esm2022/lib/layer/utils/tile-watcher.mjs +52 -0
  276. package/esm2022/lib/layer/utils/vector-watcher.mjs +50 -0
  277. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +20 -0
  278. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +87 -0
  279. package/esm2022/lib/map/baselayers-switcher/index.mjs +3 -0
  280. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +122 -0
  281. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +78 -0
  282. package/esm2022/lib/map/geolocate-button/index.mjs +2 -0
  283. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +73 -0
  284. package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +2 -0
  285. package/esm2022/lib/map/home-extent-button/index.mjs +3 -0
  286. package/esm2022/lib/map/index.mjs +14 -0
  287. package/esm2022/lib/map/info-section/index.mjs +2 -0
  288. package/esm2022/lib/map/info-section/info-section.component.mjs +15 -0
  289. package/esm2022/lib/map/map-browser/index.mjs +2 -0
  290. package/esm2022/lib/map/map-browser/map-browser.component.mjs +67 -0
  291. package/esm2022/lib/map/map-center/index.mjs +2 -0
  292. package/esm2022/lib/map/map-center/map-center.component.mjs +56 -0
  293. package/esm2022/lib/map/map.module.mjs +89 -0
  294. package/esm2022/lib/map/menu-button/index.mjs +2 -0
  295. package/esm2022/lib/map/menu-button/menu-button.component.mjs +57 -0
  296. package/esm2022/lib/map/offline-button/index.mjs +2 -0
  297. package/esm2022/lib/map/offline-button/offline-button.component.mjs +53 -0
  298. package/esm2022/lib/map/rotation-button/index.mjs +2 -0
  299. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +58 -0
  300. package/esm2022/lib/map/shared/controllers/controller.mjs +44 -0
  301. package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +8 -0
  302. package/esm2022/lib/map/shared/controllers/geolocation.mjs +431 -0
  303. package/esm2022/lib/map/shared/controllers/index.mjs +5 -0
  304. package/esm2022/lib/map/shared/controllers/view.mjs +361 -0
  305. package/esm2022/lib/map/shared/hover-feature.directive.mjs +481 -0
  306. package/esm2022/lib/map/shared/index.mjs +15 -0
  307. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +238 -0
  308. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +122 -0
  309. package/esm2022/lib/map/shared/map.abstract.mjs +24 -0
  310. package/esm2022/lib/map/shared/map.enums.mjs +6 -0
  311. package/esm2022/lib/map/shared/map.interface.mjs +2 -0
  312. package/esm2022/lib/map/shared/map.mjs +201 -0
  313. package/esm2022/lib/map/shared/map.service.mjs +29 -0
  314. package/esm2022/lib/map/shared/map.utils.mjs +455 -0
  315. package/esm2022/lib/map/shared/mapOffline.directive.mjs +114 -0
  316. package/esm2022/lib/map/shared/projection.interfaces.mjs +2 -0
  317. package/esm2022/lib/map/shared/projection.service.mjs +67 -0
  318. package/esm2022/lib/map/shared/projection.utils.mjs +122 -0
  319. package/esm2022/lib/map/swipe-control/index.mjs +2 -0
  320. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +211 -0
  321. package/esm2022/lib/map/utils/index.mjs +2 -0
  322. package/esm2022/lib/map/utils/layer-watcher.mjs +112 -0
  323. package/esm2022/lib/map/wake-lock-button/index.mjs +2 -0
  324. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +103 -0
  325. package/esm2022/lib/map/zoom-button/index.mjs +2 -0
  326. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +35 -0
  327. package/esm2022/lib/measure/index.mjs +3 -0
  328. package/esm2022/lib/measure/measure.module.mjs +20 -0
  329. package/esm2022/lib/measure/measurer/index.mjs +6 -0
  330. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +40 -0
  331. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +38 -0
  332. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +143 -0
  333. package/esm2022/lib/measure/measurer/measurer.component.mjs +948 -0
  334. package/esm2022/lib/measure/measurer/measurer.module.mjs +20 -0
  335. package/esm2022/lib/measure/shared/index.mjs +4 -0
  336. package/esm2022/lib/measure/shared/measure.enum.mjs +37 -0
  337. package/esm2022/lib/measure/shared/measure.interfaces.mjs +2 -0
  338. package/esm2022/lib/measure/shared/measure.utils.mjs +497 -0
  339. package/esm2022/lib/metadata/index.mjs +4 -0
  340. package/esm2022/lib/metadata/metadata-button/index.mjs +2 -0
  341. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +96 -0
  342. package/esm2022/lib/metadata/metadata.module.mjs +29 -0
  343. package/esm2022/lib/metadata/shared/index.mjs +3 -0
  344. package/esm2022/lib/metadata/shared/metadata.interface.mjs +2 -0
  345. package/esm2022/lib/metadata/shared/metadata.service.mjs +18 -0
  346. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +130 -0
  347. package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +6 -0
  348. package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +2 -0
  349. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +172 -0
  350. package/esm2022/lib/offline/geoDB/index.mjs +5 -0
  351. package/esm2022/lib/offline/index.mjs +6 -0
  352. package/esm2022/lib/offline/layerDB/index.mjs +3 -0
  353. package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +2 -0
  354. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +83 -0
  355. package/esm2022/lib/offline/offline.interface.mjs +2 -0
  356. package/esm2022/lib/offline/offline.provider.mjs +50 -0
  357. package/esm2022/lib/offline/shared/geo-network.service.mjs +79 -0
  358. package/esm2022/lib/offline/shared/index.mjs +2 -0
  359. package/esm2022/lib/overlay/index.mjs +2 -0
  360. package/esm2022/lib/overlay/shared/index.mjs +4 -0
  361. package/esm2022/lib/overlay/shared/overlay.enum.mjs +8 -0
  362. package/esm2022/lib/overlay/shared/overlay.mjs +139 -0
  363. package/esm2022/lib/overlay/shared/overlay.utils.mjs +17 -0
  364. package/esm2022/lib/print/index.mjs +4 -0
  365. package/esm2022/lib/print/print/print.component.mjs +116 -0
  366. package/esm2022/lib/print/print-form/index.mjs +2 -0
  367. package/esm2022/lib/print/print-form/print-form.component.mjs +320 -0
  368. package/esm2022/lib/print/print.module.mjs +20 -0
  369. package/esm2022/lib/print/shared/geopdf.mjs +68 -0
  370. package/esm2022/lib/print/shared/index.mjs +5 -0
  371. package/esm2022/lib/print/shared/print.interface.mjs +2 -0
  372. package/esm2022/lib/print/shared/print.service.mjs +1136 -0
  373. package/esm2022/lib/print/shared/print.type.mjs +30 -0
  374. package/esm2022/lib/query/index.mjs +2 -0
  375. package/esm2022/lib/query/query.module.mjs +27 -0
  376. package/esm2022/lib/query/shared/index.mjs +8 -0
  377. package/esm2022/lib/query/shared/query-search-source.mjs +35 -0
  378. package/esm2022/lib/query/shared/query-search-source.providers.mjs +22 -0
  379. package/esm2022/lib/query/shared/query.directive.mjs +290 -0
  380. package/esm2022/lib/query/shared/query.enums.mjs +32 -0
  381. package/esm2022/lib/query/shared/query.interfaces.mjs +2 -0
  382. package/esm2022/lib/query/shared/query.service.mjs +753 -0
  383. package/esm2022/lib/query/shared/query.utils.mjs +45 -0
  384. package/esm2022/lib/search/index.mjs +10 -0
  385. package/esm2022/lib/search/search-bar/search-bar.component.mjs +483 -0
  386. package/esm2022/lib/search/search-bar/search-bar.module.mjs +19 -0
  387. package/esm2022/lib/search/search-results/index.mjs +5 -0
  388. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +101 -0
  389. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +433 -0
  390. package/esm2022/lib/search/search-results/search-results-item.component.mjs +119 -0
  391. package/esm2022/lib/search/search-results/search-results.component.mjs +297 -0
  392. package/esm2022/lib/search/search-results/search-results.directive.mjs +7 -0
  393. package/esm2022/lib/search/search-results/search-results.module.mjs +20 -0
  394. package/esm2022/lib/search/search-selector/search-selector.component.mjs +118 -0
  395. package/esm2022/lib/search/search-selector/search-selector.module.mjs +19 -0
  396. package/esm2022/lib/search/search-settings/search-settings.component.mjs +264 -0
  397. package/esm2022/lib/search/search-settings/search-settings.module.mjs +19 -0
  398. package/esm2022/lib/search/search.module.mjs +77 -0
  399. package/esm2022/lib/search/shared/index.mjs +10 -0
  400. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +328 -0
  401. package/esm2022/lib/search/shared/search-source-service.providers.mjs +20 -0
  402. package/esm2022/lib/search/shared/search-source.service.mjs +56 -0
  403. package/esm2022/lib/search/shared/search.enums.mjs +4 -0
  404. package/esm2022/lib/search/shared/search.interfaces.mjs +2 -0
  405. package/esm2022/lib/search/shared/search.provider.mjs +20 -0
  406. package/esm2022/lib/search/shared/search.service.mjs +149 -0
  407. package/esm2022/lib/search/shared/search.utils.mjs +92 -0
  408. package/esm2022/lib/search/shared/sources/cadastre.mjs +142 -0
  409. package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +32 -0
  410. package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +2 -0
  411. package/esm2022/lib/search/shared/sources/coordinates.mjs +168 -0
  412. package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +52 -0
  413. package/esm2022/lib/search/shared/sources/icherche-icons.mjs +32 -0
  414. package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +2 -0
  415. package/esm2022/lib/search/shared/sources/icherche.mjs +816 -0
  416. package/esm2022/lib/search/shared/sources/icherche.providers.mjs +87 -0
  417. package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +2 -0
  418. package/esm2022/lib/search/shared/sources/ilayer.mjs +339 -0
  419. package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +58 -0
  420. package/esm2022/lib/search/shared/sources/index.mjs +23 -0
  421. package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +2 -0
  422. package/esm2022/lib/search/shared/sources/nominatim.mjs +263 -0
  423. package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +31 -0
  424. package/esm2022/lib/search/shared/sources/source.interfaces.mjs +13 -0
  425. package/esm2022/lib/search/shared/sources/source.mjs +221 -0
  426. package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +2 -0
  427. package/esm2022/lib/search/shared/sources/storedqueries.mjs +454 -0
  428. package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +56 -0
  429. package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +2 -0
  430. package/esm2022/lib/search/shared/sources/workspace.mjs +192 -0
  431. package/esm2022/lib/search/shared/sources/workspace.providers.mjs +31 -0
  432. package/esm2022/lib/style/index.mjs +5 -0
  433. package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +360 -0
  434. package/esm2022/lib/style/shared/datasource/index.mjs +2 -0
  435. package/esm2022/lib/style/shared/feature/feature-style.mjs +162 -0
  436. package/esm2022/lib/style/shared/feature/index.mjs +2 -0
  437. package/esm2022/lib/style/shared/font.enum.mjs +17 -0
  438. package/esm2022/lib/style/shared/index.mjs +5 -0
  439. package/esm2022/lib/style/shared/overlay/index.mjs +3 -0
  440. package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +39 -0
  441. package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +88 -0
  442. package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +78 -0
  443. package/esm2022/lib/style/shared/vector/conversion.utils.mjs +27 -0
  444. package/esm2022/lib/style/shared/vector/index.mjs +4 -0
  445. package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +2 -0
  446. package/esm2022/lib/style/style-list/index.mjs +5 -0
  447. package/esm2022/lib/style/style-list/style-list.interface.mjs +2 -0
  448. package/esm2022/lib/style/style-list/style-list.module.mjs +23 -0
  449. package/esm2022/lib/style/style-list/style-list.provider.mjs +21 -0
  450. package/esm2022/lib/style/style-list/style-list.service.mjs +52 -0
  451. package/esm2022/lib/style/style-modal/drawing/index.mjs +2 -0
  452. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +193 -0
  453. package/esm2022/lib/style/style-modal/index.mjs +5 -0
  454. package/esm2022/lib/style/style-modal/layer/index.mjs +2 -0
  455. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +142 -0
  456. package/esm2022/lib/style/style-modal/layer-button/index.mjs +2 -0
  457. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +44 -0
  458. package/esm2022/lib/style/style-modal/shared/index.mjs +2 -0
  459. package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +2 -0
  460. package/esm2022/lib/style/style-service/draw-style.service.mjs +255 -0
  461. package/esm2022/lib/style/style-service/index.mjs +3 -0
  462. package/esm2022/lib/style/style-service/style.service.mjs +393 -0
  463. package/esm2022/lib/style/style.module.mjs +46 -0
  464. package/esm2022/lib/toast/index.mjs +2 -0
  465. package/esm2022/lib/toast/toast.component.mjs +99 -0
  466. package/esm2022/lib/toast/toast.module.mjs +24 -0
  467. package/esm2022/lib/utils/googleLinks.mjs +13 -0
  468. package/esm2022/lib/utils/id-generator.mjs +112 -0
  469. package/esm2022/lib/utils/index.mjs +5 -0
  470. package/esm2022/lib/utils/osmLinks.mjs +9 -0
  471. package/esm2022/lib/utils/propertyTypeDetector/index.mjs +3 -0
  472. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +2 -0
  473. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +64 -0
  474. package/esm2022/lib/wkt/index.mjs +2 -0
  475. package/esm2022/lib/wkt/shared/index.mjs +2 -0
  476. package/esm2022/lib/wkt/shared/wkt.service.mjs +235 -0
  477. package/esm2022/lib/wkt/wkt.module.mjs +25 -0
  478. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +36 -0
  479. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +19 -0
  480. package/esm2022/lib/workspace/confirmation-popup/index.mjs +3 -0
  481. package/esm2022/lib/workspace/index.mjs +8 -0
  482. package/esm2022/lib/workspace/shared/edition-workspace.mjs +301 -0
  483. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +720 -0
  484. package/esm2022/lib/workspace/shared/feature-workspace.mjs +41 -0
  485. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +113 -0
  486. package/esm2022/lib/workspace/shared/index.mjs +8 -0
  487. package/esm2022/lib/workspace/shared/wfs-workspace.mjs +41 -0
  488. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +121 -0
  489. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +248 -0
  490. package/esm2022/lib/workspace/shared/workspace.utils.mjs +188 -0
  491. package/esm2022/lib/workspace/widgets/index.mjs +4 -0
  492. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +48 -0
  493. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +19 -0
  494. package/esm2022/lib/workspace/widgets/widgets.mjs +15 -0
  495. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +172 -0
  496. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +19 -0
  497. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +137 -0
  498. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +19 -0
  499. package/esm2022/lib/workspace/workspace.module.mjs +32 -0
  500. package/esm2022/public_api.mjs +56 -0
  501. package/fesm2022/igo2-geo.mjs +717 -691
  502. package/fesm2022/igo2-geo.mjs.map +1 -1
  503. package/lib/datasource/shared/datasources/datasource.d.ts +2 -2
  504. package/lib/directions/shared/directions.service.d.ts +0 -1
  505. package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
  506. package/lib/offline/layerDB/layerDB.service.d.ts +1 -1
  507. package/lib/style/style-list/style-list.provider.d.ts +8 -1
  508. package/lib/style/style-list/style-list.service.d.ts +1 -1
  509. package/package.json +16 -14
  510. package/src/lib/layer/layer-list/layer-list.theme.scss +1 -2
  511. package/src/lib/map/menu-button/menu-button.theming.scss +3 -3
  512. package/src/style/style.scss +1 -1
@@ -0,0 +1,112 @@
1
+ import { SubjectStatus, Watcher } from '@igo2/utils';
2
+ import LayerGroup from 'ol/layer/Group';
3
+ import { BehaviorSubject, fromEvent, merge } from 'rxjs';
4
+ import { distinctUntilChanged, map } from 'rxjs/operators';
5
+ import { LinkedProperties } from '../../layer/shared/layers/linked/linked-layer.interface';
6
+ export class LayerWatcher extends Watcher {
7
+ propertyChange$ = new BehaviorSubject(undefined);
8
+ loaded = 0;
9
+ loading = 0;
10
+ layers = [];
11
+ subscriptionsByLayerId = new Map();
12
+ subscriptions = [];
13
+ constructor() {
14
+ super();
15
+ }
16
+ watch() {
17
+ // empty watch
18
+ }
19
+ unwatch() {
20
+ this.layers.forEach((layer) => this.unwatchLayer(layer), this);
21
+ }
22
+ setPropertyChange(change) {
23
+ if (![
24
+ LinkedProperties.TIMEFILTER,
25
+ LinkedProperties.OGCFILTERS,
26
+ LinkedProperties.VISIBLE,
27
+ LinkedProperties.OPACITY,
28
+ LinkedProperties.MINRESOLUTION,
29
+ LinkedProperties.MAXRESOLUTION,
30
+ LinkedProperties.ZINDEX,
31
+ LinkedProperties.DISPLAYED
32
+ ].includes(change.event.key)) {
33
+ return;
34
+ }
35
+ this.propertyChange$.next(change);
36
+ }
37
+ watchLayer(layer) {
38
+ if (layer.status$ === undefined) {
39
+ return;
40
+ }
41
+ if (layer.ol instanceof LayerGroup) {
42
+ return;
43
+ }
44
+ this._watchLayer(layer);
45
+ const layer$$ = layer.status$
46
+ .pipe(distinctUntilChanged())
47
+ .subscribe((status) => {
48
+ if (status === SubjectStatus.Error) {
49
+ this.loading = 0;
50
+ this.loaded = -1;
51
+ }
52
+ if (status === SubjectStatus.Working) {
53
+ this.loading += 1;
54
+ }
55
+ else if (status === SubjectStatus.Done) {
56
+ this.loaded += 1;
57
+ }
58
+ if (this.loaded >= this.loading) {
59
+ this.loading = this.loaded = 0;
60
+ this.status = SubjectStatus.Done;
61
+ }
62
+ else if (this.loading > 0) {
63
+ this.status = SubjectStatus.Working;
64
+ }
65
+ });
66
+ this.subscriptions.push(layer$$);
67
+ }
68
+ _watchLayer(layer) {
69
+ const displayed$ = layer.displayed$.pipe(map((value) => ({
70
+ event: {
71
+ key: 'displayed',
72
+ oldValue: !value,
73
+ value: layer.displayed
74
+ },
75
+ layer
76
+ })));
77
+ const subscription = merge(this.createOlEventObservable(layer.ol, layer), this.createOlEventObservable(layer.dataSource.ol, layer), displayed$).subscribe((change) => this.setPropertyChange(change));
78
+ this.layers.push(layer);
79
+ this.subscriptionsByLayerId.set(layer.id, [subscription]);
80
+ }
81
+ createOlEventObservable(target, layer) {
82
+ return fromEvent(target, 'propertychange').pipe(map((change) => ({
83
+ event: { ...change, value: target.get(change.key) },
84
+ layer
85
+ })));
86
+ }
87
+ unwatchLayer(layer) {
88
+ if (layer.ol instanceof LayerGroup) {
89
+ return;
90
+ }
91
+ this._unwatchLayer(layer);
92
+ }
93
+ _unwatchLayer(layer) {
94
+ layer.status$.next(SubjectStatus.Done);
95
+ this.subscriptionsByLayerId.get(layer.id)?.forEach((sub$) => {
96
+ sub$.unsubscribe();
97
+ this.subscriptionsByLayerId.delete(layer.id);
98
+ });
99
+ const index = this.layers.indexOf(layer);
100
+ if (index >= 0) {
101
+ const status = layer.watcher.status;
102
+ if ([SubjectStatus.Working, SubjectStatus.Waiting].indexOf(status) !== -1) {
103
+ this.loaded += 1;
104
+ }
105
+ this.subscriptions[index].unsubscribe();
106
+ this.subscriptions.splice(index, 1);
107
+ this.layers.splice(index, 1);
108
+ layer.watcher.unwatch();
109
+ }
110
+ }
111
+ }
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5ZXItd2F0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC91dGlscy9sYXllci13YXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3JELE9BQU8sVUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFDTCxlQUFlLEVBR2YsU0FBUyxFQUNULEtBQUssRUFDTixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUkzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQVczRixNQUFNLE9BQU8sWUFBYSxTQUFRLE9BQU87SUFDaEMsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUNwRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ1gsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNaLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFDckIsc0JBQXNCLEdBQUcsSUFBSSxHQUFHLEVBQTBCLENBQUM7SUFDM0QsYUFBYSxHQUFtQixFQUFFLENBQUM7SUFFM0M7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRCxLQUFLO1FBQ0gsY0FBYztJQUNoQixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUEwQjtRQUMxQyxJQUNFLENBQUM7WUFDQyxnQkFBZ0IsQ0FBQyxVQUFVO1lBQzNCLGdCQUFnQixDQUFDLFVBQVU7WUFDM0IsZ0JBQWdCLENBQUMsT0FBTztZQUN4QixnQkFBZ0IsQ0FBQyxPQUFPO1lBQ3hCLGdCQUFnQixDQUFDLGFBQWE7WUFDOUIsZ0JBQWdCLENBQUMsYUFBYTtZQUM5QixnQkFBZ0IsQ0FBQyxNQUFNO1lBQ3ZCLGdCQUFnQixDQUFDLFNBQVM7U0FDM0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFVLENBQUMsRUFDbkMsQ0FBQztZQUNELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFlO1FBQ3hCLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksS0FBSyxDQUFDLEVBQUUsWUFBWSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBYyxDQUFDLENBQUM7UUFFakMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU87YUFDMUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDNUIsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxNQUFNLEtBQUssYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztnQkFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNuQixDQUFDO1lBQ0QsSUFBSSxNQUFNLEtBQUssYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQztZQUNwQixDQUFDO2lCQUFNLElBQUksTUFBTSxLQUFLLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7WUFDbkIsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQztZQUNuQyxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDO1lBQ3RDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBWTtRQUM5QixNQUFNLFVBQVUsR0FBbUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3RFLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNkLEtBQUssRUFBRTtnQkFDTCxHQUFHLEVBQUUsV0FBVztnQkFDaEIsUUFBUSxFQUFFLENBQUMsS0FBSztnQkFDaEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxTQUFTO2FBQ3ZCO1lBQ0QsS0FBSztTQUNOLENBQUMsQ0FBQyxDQUNKLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRyxLQUFLLENBQ3hCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUM3QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQ3hELFVBQVUsQ0FDWCxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU8sdUJBQXVCLENBQzdCLE1BQWtCLEVBQ2xCLEtBQVk7UUFFWixPQUFPLFNBQVMsQ0FBYyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQzFELEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNmLEtBQUssRUFBRSxFQUFFLEdBQUcsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNuRCxLQUFLO1NBQ04sQ0FBQyxDQUFDLENBQ0osQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBZTtRQUMxQixJQUFJLEtBQUssQ0FBQyxFQUFFLFlBQVksVUFBVSxFQUFFLENBQUM7WUFDbkMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQWMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxhQUFhLENBQUMsS0FBWTtRQUNoQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDZixNQUFNLE1BQU0sR0FBSSxLQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUM3QyxJQUNFLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUNyRSxDQUFDO2dCQUNELElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1lBQ25CLENBQUM7WUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUIsS0FBYSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViamVjdFN0YXR1cywgV2F0Y2hlciB9IGZyb20gJ0BpZ28yL3V0aWxzJztcblxuaW1wb3J0IEJhc2VPYmplY3QsIHsgT2JqZWN0RXZlbnQgfSBmcm9tICdvbC9PYmplY3QnO1xuaW1wb3J0IExheWVyR3JvdXAgZnJvbSAnb2wvbGF5ZXIvR3JvdXAnO1xuXG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIE9ic2VydmFibGUsXG4gIFN1YnNjcmlwdGlvbixcbiAgZnJvbUV2ZW50LFxuICBtZXJnZVxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB0eXBlIHsgQW55TGF5ZXIgfSBmcm9tICcuLi8uLi9sYXllci9zaGFyZWQvbGF5ZXJzL2FueS1sYXllcic7XG5pbXBvcnQgdHlwZSB7IExheWVyIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9sYXllcic7XG5pbXBvcnQgeyBMaW5rZWRQcm9wZXJ0aWVzIH0gZnJvbSAnLi4vLi4vbGF5ZXIvc2hhcmVkL2xheWVycy9saW5rZWQvbGlua2VkLWxheWVyLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF5ZXJXYXRjaGVyQ2hhbmdlIHtcbiAgZXZlbnQ6IExheWVyV2F0Y2hlckV2ZW50O1xuICBsYXllcjogTGF5ZXI7XG59XG5cbnR5cGUgTGF5ZXJXYXRjaGVyRXZlbnQgPSBQaWNrPE9iamVjdEV2ZW50LCAna2V5JyB8ICdvbGRWYWx1ZSc+ICYge1xuICB2YWx1ZTogdW5rbm93bjtcbn07XG5cbmV4cG9ydCBjbGFzcyBMYXllcldhdGNoZXIgZXh0ZW5kcyBXYXRjaGVyIHtcbiAgcHVibGljIHByb3BlcnR5Q2hhbmdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGF5ZXJXYXRjaGVyQ2hhbmdlPih1bmRlZmluZWQpO1xuICBwcml2YXRlIGxvYWRlZCA9IDA7XG4gIHByaXZhdGUgbG9hZGluZyA9IDA7XG4gIHByaXZhdGUgbGF5ZXJzOiBMYXllcltdID0gW107XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uc0J5TGF5ZXJJZCA9IG5ldyBNYXA8c3RyaW5nLCBTdWJzY3JpcHRpb25bXT4oKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICB3YXRjaCgpIHtcbiAgICAvLyBlbXB0eSB3YXRjaFxuICB9XG5cbiAgdW53YXRjaCgpIHtcbiAgICB0aGlzLmxheWVycy5mb3JFYWNoKChsYXllcikgPT4gdGhpcy51bndhdGNoTGF5ZXIobGF5ZXIpLCB0aGlzKTtcbiAgfVxuXG4gIHNldFByb3BlcnR5Q2hhbmdlKGNoYW5nZTogTGF5ZXJXYXRjaGVyQ2hhbmdlKSB7XG4gICAgaWYgKFxuICAgICAgIVtcbiAgICAgICAgTGlua2VkUHJvcGVydGllcy5USU1FRklMVEVSLFxuICAgICAgICBMaW5rZWRQcm9wZXJ0aWVzLk9HQ0ZJTFRFUlMsXG4gICAgICAgIExpbmtlZFByb3BlcnRpZXMuVklTSUJMRSxcbiAgICAgICAgTGlua2VkUHJvcGVydGllcy5PUEFDSVRZLFxuICAgICAgICBMaW5rZWRQcm9wZXJ0aWVzLk1JTlJFU09MVVRJT04sXG4gICAgICAgIExpbmtlZFByb3BlcnRpZXMuTUFYUkVTT0xVVElPTixcbiAgICAgICAgTGlua2VkUHJvcGVydGllcy5aSU5ERVgsXG4gICAgICAgIExpbmtlZFByb3BlcnRpZXMuRElTUExBWUVEXG4gICAgICBdLmluY2x1ZGVzKGNoYW5nZS5ldmVudC5rZXkgYXMgYW55KVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnByb3BlcnR5Q2hhbmdlJC5uZXh0KGNoYW5nZSk7XG4gIH1cblxuICB3YXRjaExheWVyKGxheWVyOiBBbnlMYXllcikge1xuICAgIGlmIChsYXllci5zdGF0dXMkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobGF5ZXIub2wgaW5zdGFuY2VvZiBMYXllckdyb3VwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fd2F0Y2hMYXllcihsYXllciBhcyBMYXllcik7XG5cbiAgICBjb25zdCBsYXllciQkID0gbGF5ZXIuc3RhdHVzJFxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1cykgPT4ge1xuICAgICAgICBpZiAoc3RhdHVzID09PSBTdWJqZWN0U3RhdHVzLkVycm9yKSB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gMDtcbiAgICAgICAgICB0aGlzLmxvYWRlZCA9IC0xO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0dXMgPT09IFN1YmplY3RTdGF0dXMuV29ya2luZykge1xuICAgICAgICAgIHRoaXMubG9hZGluZyArPSAxO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PT0gU3ViamVjdFN0YXR1cy5Eb25lKSB7XG4gICAgICAgICAgdGhpcy5sb2FkZWQgKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmxvYWRlZCA+PSB0aGlzLmxvYWRpbmcpIHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0aGlzLmxvYWRlZCA9IDA7XG4gICAgICAgICAgdGhpcy5zdGF0dXMgPSBTdWJqZWN0U3RhdHVzLkRvbmU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5sb2FkaW5nID4gMCkge1xuICAgICAgICAgIHRoaXMuc3RhdHVzID0gU3ViamVjdFN0YXR1cy5Xb3JraW5nO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGxheWVyJCQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfd2F0Y2hMYXllcihsYXllcjogTGF5ZXIpIHtcbiAgICBjb25zdCBkaXNwbGF5ZWQkOiBPYnNlcnZhYmxlPExheWVyV2F0Y2hlckNoYW5nZT4gPSBsYXllci5kaXNwbGF5ZWQkLnBpcGUoXG4gICAgICBtYXAoKHZhbHVlKSA9PiAoe1xuICAgICAgICBldmVudDoge1xuICAgICAgICAgIGtleTogJ2Rpc3BsYXllZCcsXG4gICAgICAgICAgb2xkVmFsdWU6ICF2YWx1ZSxcbiAgICAgICAgICB2YWx1ZTogbGF5ZXIuZGlzcGxheWVkXG4gICAgICAgIH0sXG4gICAgICAgIGxheWVyXG4gICAgICB9KSlcbiAgICApO1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IG1lcmdlKFxuICAgICAgdGhpcy5jcmVhdGVPbEV2ZW50T2JzZXJ2YWJsZShsYXllci5vbCwgbGF5ZXIpLFxuICAgICAgdGhpcy5jcmVhdGVPbEV2ZW50T2JzZXJ2YWJsZShsYXllci5kYXRhU291cmNlLm9sLCBsYXllciksXG4gICAgICBkaXNwbGF5ZWQkXG4gICAgKS5zdWJzY3JpYmUoKGNoYW5nZSkgPT4gdGhpcy5zZXRQcm9wZXJ0eUNoYW5nZShjaGFuZ2UpKTtcblxuICAgIHRoaXMubGF5ZXJzLnB1c2gobGF5ZXIpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uc0J5TGF5ZXJJZC5zZXQobGF5ZXIuaWQsIFtzdWJzY3JpcHRpb25dKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT2xFdmVudE9ic2VydmFibGUoXG4gICAgdGFyZ2V0OiBCYXNlT2JqZWN0LFxuICAgIGxheWVyOiBMYXllclxuICApOiBPYnNlcnZhYmxlPExheWVyV2F0Y2hlckNoYW5nZT4ge1xuICAgIHJldHVybiBmcm9tRXZlbnQ8T2JqZWN0RXZlbnQ+KHRhcmdldCwgJ3Byb3BlcnR5Y2hhbmdlJykucGlwZShcbiAgICAgIG1hcCgoY2hhbmdlKSA9PiAoe1xuICAgICAgICBldmVudDogeyAuLi5jaGFuZ2UsIHZhbHVlOiB0YXJnZXQuZ2V0KGNoYW5nZS5rZXkpIH0sXG4gICAgICAgIGxheWVyXG4gICAgICB9KSlcbiAgICApO1xuICB9XG5cbiAgdW53YXRjaExheWVyKGxheWVyOiBBbnlMYXllcikge1xuICAgIGlmIChsYXllci5vbCBpbnN0YW5jZW9mIExheWVyR3JvdXApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl91bndhdGNoTGF5ZXIobGF5ZXIgYXMgTGF5ZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdW53YXRjaExheWVyKGxheWVyOiBMYXllcikge1xuICAgIGxheWVyLnN0YXR1cyQubmV4dChTdWJqZWN0U3RhdHVzLkRvbmUpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zQnlMYXllcklkLmdldChsYXllci5pZCk/LmZvckVhY2goKHN1YiQpID0+IHtcbiAgICAgIHN1YiQudW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uc0J5TGF5ZXJJZC5kZWxldGUobGF5ZXIuaWQpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmxheWVycy5pbmRleE9mKGxheWVyKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgY29uc3Qgc3RhdHVzID0gKGxheWVyIGFzIGFueSkud2F0Y2hlci5zdGF0dXM7XG4gICAgICBpZiAoXG4gICAgICAgIFtTdWJqZWN0U3RhdHVzLldvcmtpbmcsIFN1YmplY3RTdGF0dXMuV2FpdGluZ10uaW5kZXhPZihzdGF0dXMpICE9PSAtMVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubG9hZGVkICs9IDE7XG4gICAgICB9XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnNbaW5kZXhdLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMubGF5ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAobGF5ZXIgYXMgYW55KS53YXRjaGVyLnVud2F0Y2goKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './wake-lock-button.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvd2FrZS1sb2NrLWJ1dHRvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi93YWtlLWxvY2stYnV0dG9uLmNvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,103 @@
1
+ import { AsyncPipe } from '@angular/common';
2
+ import { Component, Input } from '@angular/core';
3
+ import { MatButtonModule } from '@angular/material/button';
4
+ import { MatIconModule } from '@angular/material/icon';
5
+ import { MatTooltipModule } from '@angular/material/tooltip';
6
+ import { IgoLanguageModule } from '@igo2/core/language';
7
+ import { StorageService } from '@igo2/core/storage';
8
+ import { userAgent } from '@igo2/utils';
9
+ import NoSleep from 'nosleep.js';
10
+ import { BehaviorSubject } from 'rxjs';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@igo2/core/storage";
13
+ import * as i2 from "@angular/material/button";
14
+ import * as i3 from "@angular/material/tooltip";
15
+ import * as i4 from "@angular/material/icon";
16
+ import * as i5 from "@ngx-translate/core";
17
+ /**
18
+ * Prevent display sleep and enable wake lock in all Android and iOS web browsers.
19
+ * On iOS, the Wake Lock API is not supported
20
+ * https://developer.mozilla.org/en-US/docs/Web/API/Screen_Wake_Lock_API
21
+ * On not supported browser, a fake video is used to keep the screen open.
22
+ *
23
+ * TODO: When the API will be supported by every browser, We should remove the NoSleep.js dependency
24
+ * and replace it by a WakeLock API implementation.
25
+ */
26
+ export class WakeLockButtonComponent {
27
+ storageService;
28
+ color = 'primary';
29
+ get enabled() {
30
+ return this.storageService.get('wakeLockEnabled');
31
+ }
32
+ set enabled(value) {
33
+ this.storageService.set('wakeLockEnabled', value);
34
+ }
35
+ noSleep;
36
+ icon$ = new BehaviorSubject('bedtime');
37
+ visible = false;
38
+ constructor(storageService) {
39
+ this.storageService = storageService;
40
+ this.noSleep = new NoSleep();
41
+ const nonWakeLockApiBrowser = userAgent.satisfies({
42
+ ie: '>0',
43
+ edge: '<84',
44
+ chrome: '<84',
45
+ firefox: '>0',
46
+ opera: '<70',
47
+ safari: '>0'
48
+ });
49
+ if (nonWakeLockApiBrowser) {
50
+ this.disableWakeLock();
51
+ this.enabled = false;
52
+ window.addEventListener('blur', () => {
53
+ this.disableWakeLock();
54
+ this.enabled = false;
55
+ });
56
+ }
57
+ this.enabled ? this.enableWakeLock() : this.disableWakeLock();
58
+ }
59
+ /**
60
+ * Prevent display sleep and enable wake lock in all Android and iOS web browsers.
61
+ * On iOS, the Wake Lock API is not supported
62
+ * https://developer.mozilla.org/en-US/docs/Web/API/Screen_Wake_Lock_API
63
+ * On not supported browser, a fake video is used to keep the screen open.
64
+ */
65
+ enableWakeLock() {
66
+ this.noSleep.enable();
67
+ this.enabled = true;
68
+ this.icon$.next('bedtime_off');
69
+ }
70
+ /**
71
+ * Let display sleep
72
+ */
73
+ disableWakeLock() {
74
+ this.noSleep.disable();
75
+ this.enabled = false;
76
+ this.icon$.next('bedtime');
77
+ }
78
+ toggleWakeLock() {
79
+ if (this.enabled) {
80
+ this.disableWakeLock();
81
+ }
82
+ else {
83
+ this.enableWakeLock();
84
+ }
85
+ }
86
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WakeLockButtonComponent, deps: [{ token: i1.StorageService }], target: i0.ɵɵFactoryTarget.Component });
87
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: WakeLockButtonComponent, isStandalone: true, selector: "igo-wake-lock-button", inputs: { color: "color", enabled: "enabled" }, ngImport: i0, template: "<div class=\"igo-wake-lock-button-container\">\n <button\n [color]=\"color\"\n mat-icon-button\n [matTooltip]=\"\n enabled\n ? ('igo.geo.mapButtons.preventScreenLock' | translate)\n : ('igo.geo.mapButtons.letScreenLock' | translate)\n \"\n matTooltipPosition=\"left\"\n (click)=\"toggleWakeLock()\"\n >\n <mat-icon>{{ icon$ | async }}</mat-icon>\n </button>\n</div>\n", styles: [":host button{border-radius:0!important}:host button .mat-ripple,:host button .mdc-icon-button__ripple{border-radius:0!important}:host .igo-wake-lock-button-container{width:40px;background-color:#fff}:host .igo-wake-lock-button-container:hover{background-color:#efefef}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
88
+ }
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WakeLockButtonComponent, decorators: [{
90
+ type: Component,
91
+ args: [{ selector: 'igo-wake-lock-button', standalone: true, imports: [
92
+ MatButtonModule,
93
+ MatTooltipModule,
94
+ MatIconModule,
95
+ AsyncPipe,
96
+ IgoLanguageModule
97
+ ], template: "<div class=\"igo-wake-lock-button-container\">\n <button\n [color]=\"color\"\n mat-icon-button\n [matTooltip]=\"\n enabled\n ? ('igo.geo.mapButtons.preventScreenLock' | translate)\n : ('igo.geo.mapButtons.letScreenLock' | translate)\n \"\n matTooltipPosition=\"left\"\n (click)=\"toggleWakeLock()\"\n >\n <mat-icon>{{ icon$ | async }}</mat-icon>\n </button>\n</div>\n", styles: [":host button{border-radius:0!important}:host button .mat-ripple,:host button .mdc-icon-button__ripple{border-radius:0!important}:host .igo-wake-lock-button-container{width:40px;background-color:#fff}:host .igo-wake-lock-button-container:hover{background-color:#efefef}\n"] }]
98
+ }], ctorParameters: () => [{ type: i1.StorageService }], propDecorators: { color: [{
99
+ type: Input
100
+ }], enabled: [{
101
+ type: Input
102
+ }] } });
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FrZS1sb2NrLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvd2FrZS1sb2NrLWJ1dHRvbi93YWtlLWxvY2stYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC93YWtlLWxvY2stYnV0dG9uL3dha2UtbG9jay1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEMsT0FBTyxPQUFPLE1BQU0sWUFBWSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFnQnZDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQWNkO0lBYlgsS0FBSyxHQUFHLFNBQVMsQ0FBQztJQUMzQixJQUNJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFZLENBQUM7SUFDL0QsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLEtBQWM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLE9BQU8sQ0FBVTtJQUNoQixLQUFLLEdBQUcsSUFBSSxlQUFlLENBQVMsU0FBUyxDQUFDLENBQUM7SUFDakQsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUV2QixZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDaEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLE1BQU0scUJBQXFCLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQztZQUNoRCxFQUFFLEVBQUUsSUFBSTtZQUNSLElBQUksRUFBRSxLQUFLO1lBQ1gsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsSUFBSTtZQUNiLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDLENBQUM7UUFDSCxJQUFJLHFCQUFxQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO2dCQUNuQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLGNBQWM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7d0dBN0RVLHVCQUF1Qjs0RkFBdkIsdUJBQXVCLGdJQ3BDcEMsNFpBZUEsdVVESUksZUFBZSwySUFDZixnQkFBZ0IsNFRBQ2hCLGFBQWEsK0tBQ2IsU0FBUyw2Q0FDVCxpQkFBaUI7OzRGQWFSLHVCQUF1QjtrQkF2Qm5DLFNBQVM7K0JBQ0Usc0JBQXNCLGNBR3BCLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixTQUFTO3dCQUNULGlCQUFpQjtxQkFDbEI7bUZBYVEsS0FBSztzQkFBYixLQUFLO2dCQUVGLE9BQU87c0JBRFYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL3N0b3JhZ2UnO1xuaW1wb3J0IHsgdXNlckFnZW50IH0gZnJvbSAnQGlnbzIvdXRpbHMnO1xuXG5pbXBvcnQgTm9TbGVlcCBmcm9tICdub3NsZWVwLmpzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpZ28td2FrZS1sb2NrLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi93YWtlLWxvY2stYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2FrZS1sb2NrLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBBc3luY1BpcGUsXG4gICAgSWdvTGFuZ3VhZ2VNb2R1bGVcbiAgXVxufSlcblxuLyoqXG4gKiBQcmV2ZW50IGRpc3BsYXkgc2xlZXAgYW5kIGVuYWJsZSB3YWtlIGxvY2sgaW4gYWxsIEFuZHJvaWQgYW5kIGlPUyB3ZWIgYnJvd3NlcnMuXG4gKiBPbiBpT1MsIHRoZSBXYWtlIExvY2sgQVBJIGlzIG5vdCBzdXBwb3J0ZWRcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9TY3JlZW5fV2FrZV9Mb2NrX0FQSVxuICogT24gbm90IHN1cHBvcnRlZCBicm93c2VyLCBhIGZha2UgdmlkZW8gaXMgdXNlZCB0byBrZWVwIHRoZSBzY3JlZW4gb3Blbi5cbiAqXG4gKiBUT0RPOiBXaGVuIHRoZSBBUEkgd2lsbCBiZSBzdXBwb3J0ZWQgYnkgZXZlcnkgYnJvd3NlciwgV2Ugc2hvdWxkIHJlbW92ZSB0aGUgTm9TbGVlcC5qcyBkZXBlbmRlbmN5XG4gKiBhbmQgcmVwbGFjZSBpdCBieSBhIFdha2VMb2NrIEFQSSBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFdha2VMb2NrQnV0dG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgY29sb3IgPSAncHJpbWFyeSc7XG4gIEBJbnB1dCgpXG4gIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgnd2FrZUxvY2tFbmFibGVkJykgYXMgYm9vbGVhbjtcbiAgfVxuICBzZXQgZW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCd3YWtlTG9ja0VuYWJsZWQnLCB2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIG5vU2xlZXA6IE5vU2xlZXA7XG4gIHJlYWRvbmx5IGljb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdiZWR0aW1lJyk7XG4gIHB1YmxpYyB2aXNpYmxlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UpIHtcbiAgICB0aGlzLm5vU2xlZXAgPSBuZXcgTm9TbGVlcCgpO1xuICAgIGNvbnN0IG5vbldha2VMb2NrQXBpQnJvd3NlciA9IHVzZXJBZ2VudC5zYXRpc2ZpZXMoe1xuICAgICAgaWU6ICc+MCcsXG4gICAgICBlZGdlOiAnPDg0JyxcbiAgICAgIGNocm9tZTogJzw4NCcsXG4gICAgICBmaXJlZm94OiAnPjAnLFxuICAgICAgb3BlcmE6ICc8NzAnLFxuICAgICAgc2FmYXJpOiAnPjAnXG4gICAgfSk7XG4gICAgaWYgKG5vbldha2VMb2NrQXBpQnJvd3Nlcikge1xuICAgICAgdGhpcy5kaXNhYmxlV2FrZUxvY2soKTtcbiAgICAgIHRoaXMuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuZGlzYWJsZVdha2VMb2NrKCk7XG4gICAgICAgIHRoaXMuZW5hYmxlZCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuZW5hYmxlZCA/IHRoaXMuZW5hYmxlV2FrZUxvY2soKSA6IHRoaXMuZGlzYWJsZVdha2VMb2NrKCk7XG4gIH1cblxuICAvKipcbiAgICogUHJldmVudCBkaXNwbGF5IHNsZWVwIGFuZCBlbmFibGUgd2FrZSBsb2NrIGluIGFsbCBBbmRyb2lkIGFuZCBpT1Mgd2ViIGJyb3dzZXJzLlxuICAgKiBPbiBpT1MsIHRoZSBXYWtlIExvY2sgQVBJIGlzIG5vdCBzdXBwb3J0ZWRcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1NjcmVlbl9XYWtlX0xvY2tfQVBJXG4gICAqIE9uIG5vdCBzdXBwb3J0ZWQgYnJvd3NlciwgYSBmYWtlIHZpZGVvIGlzIHVzZWQgdG8ga2VlcCB0aGUgc2NyZWVuIG9wZW4uXG4gICAqL1xuICBwcml2YXRlIGVuYWJsZVdha2VMb2NrKCkge1xuICAgIHRoaXMubm9TbGVlcC5lbmFibGUoKTtcbiAgICB0aGlzLmVuYWJsZWQgPSB0cnVlO1xuICAgIHRoaXMuaWNvbiQubmV4dCgnYmVkdGltZV9vZmYnKTtcbiAgfVxuICAvKipcbiAgICogTGV0IGRpc3BsYXkgc2xlZXBcbiAgICovXG4gIHByaXZhdGUgZGlzYWJsZVdha2VMb2NrKCkge1xuICAgIHRoaXMubm9TbGVlcC5kaXNhYmxlKCk7XG4gICAgdGhpcy5lbmFibGVkID0gZmFsc2U7XG4gICAgdGhpcy5pY29uJC5uZXh0KCdiZWR0aW1lJyk7XG4gIH1cblxuICB0b2dnbGVXYWtlTG9jaygpIHtcbiAgICBpZiAodGhpcy5lbmFibGVkKSB7XG4gICAgICB0aGlzLmRpc2FibGVXYWtlTG9jaygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVuYWJsZVdha2VMb2NrKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaWdvLXdha2UtbG9jay1idXR0b24tY29udGFpbmVyXCI+XG4gIDxidXR0b25cbiAgICBbY29sb3JdPVwiY29sb3JcIlxuICAgIG1hdC1pY29uLWJ1dHRvblxuICAgIFttYXRUb29sdGlwXT1cIlxuICAgICAgZW5hYmxlZFxuICAgICAgICA/ICgnaWdvLmdlby5tYXBCdXR0b25zLnByZXZlbnRTY3JlZW5Mb2NrJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgOiAoJ2lnby5nZW8ubWFwQnV0dG9ucy5sZXRTY3JlZW5Mb2NrJyB8IHRyYW5zbGF0ZSlcbiAgICBcIlxuICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImxlZnRcIlxuICAgIChjbGljayk9XCJ0b2dnbGVXYWtlTG9jaygpXCJcbiAgPlxuICAgIDxtYXQtaWNvbj57eyBpY29uJCB8IGFzeW5jIH19PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './zoom-button.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvem9vbS1idXR0b24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vem9vbS1idXR0b24uY29tcG9uZW50JztcbiJdfQ==
@@ -0,0 +1,35 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { MatButtonModule } from '@angular/material/button';
3
+ import { MatIconModule } from '@angular/material/icon';
4
+ import { MatTooltipModule } from '@angular/material/tooltip';
5
+ import { IgoLanguageModule } from '@igo2/core/language';
6
+ import { IgoMap } from '../shared/map';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/material/button";
9
+ import * as i2 from "@angular/material/tooltip";
10
+ import * as i3 from "@angular/material/icon";
11
+ import * as i4 from "@ngx-translate/core";
12
+ export class ZoomButtonComponent {
13
+ map;
14
+ color;
15
+ get zoom() {
16
+ return this.map.viewController.getZoom();
17
+ }
18
+ get minZoom() {
19
+ return this.map.viewController.olView.getMinZoom() || 1;
20
+ }
21
+ get maxZoom() {
22
+ return this.map.viewController.olView.getMaxZoom();
23
+ }
24
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ZoomButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ZoomButtonComponent, isStandalone: true, selector: "igo-zoom-button", inputs: { map: "map", color: "color" }, ngImport: i0, 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 >\n <mat-icon>add</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 >\n <mat-icon>remove</mat-icon>\n </button>\n</div>\n", styles: [":host button{border-radius:0!important}:host button .mat-ripple,:host button .mdc-icon-button__ripple{border-radius:0!important}:host .igo-zoom-button-container{width:40px}:host .igo-zoom-button-container button{background-color:#fff}:host .igo-zoom-button-container button:hover{background-color:#efefef}:host .igo-zoom-button-container button:first-child{margin-bottom:2px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
26
+ }
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ZoomButtonComponent, decorators: [{
28
+ type: Component,
29
+ args: [{ selector: 'igo-zoom-button', standalone: true, imports: [MatButtonModule, MatTooltipModule, MatIconModule, IgoLanguageModule], 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 >\n <mat-icon>add</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 >\n <mat-icon>remove</mat-icon>\n </button>\n</div>\n", styles: [":host button{border-radius:0!important}:host button .mat-ripple,:host button .mdc-icon-button__ripple{border-radius:0!important}:host .igo-zoom-button-container{width:40px}:host .igo-zoom-button-container button{background-color:#fff}:host .igo-zoom-button-container button:hover{background-color:#efefef}:host .igo-zoom-button-container button:first-child{margin-bottom:2px}\n"] }]
30
+ }], propDecorators: { map: [{
31
+ type: Input
32
+ }], color: [{
33
+ type: Input
34
+ }] } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9vbS1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZ2VvL3NyYy9saWIvbWFwL3pvb20tYnV0dG9uL3pvb20tYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21hcC96b29tLWJ1dHRvbi96b29tLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVN2QyxNQUFNLE9BQU8sbUJBQW1CO0lBQ3JCLEdBQUcsQ0FBUztJQUVaLEtBQUssQ0FBUztJQUV2QixJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3JELENBQUM7d0dBZlUsbUJBQW1COzRGQUFuQixtQkFBbUIsbUhDaEJoQyxrcEJBdUJBLGtiRFRZLGVBQWUsMklBQUUsZ0JBQWdCLDRUQUFFLGFBQWEsbUxBQUUsaUJBQWlCOzs0RkFFbEUsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGlCQUFpQixjQUdmLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLENBQUM7OEJBR3JFLEdBQUc7c0JBQVgsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBJZ29MYW5ndWFnZU1vZHVsZSB9IGZyb20gJ0BpZ28yL2NvcmUvbGFuZ3VhZ2UnO1xuXG5pbXBvcnQgeyBJZ29NYXAgfSBmcm9tICcuLi9zaGFyZWQvbWFwJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWdvLXpvb20tYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3pvb20tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vem9vbS1idXR0b24uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdEJ1dHRvbk1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgSWdvTGFuZ3VhZ2VNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFpvb21CdXR0b25Db21wb25lbnQge1xuICBASW5wdXQoKSBtYXA6IElnb01hcDtcblxuICBASW5wdXQoKSBjb2xvcjogc3RyaW5nO1xuXG4gIGdldCB6b29tKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLmdldFpvb20oKTtcbiAgfVxuXG4gIGdldCBtaW5ab29tKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLm9sVmlldy5nZXRNaW5ab29tKCkgfHwgMTtcbiAgfVxuXG4gIGdldCBtYXhab29tKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubWFwLnZpZXdDb250cm9sbGVyLm9sVmlldy5nZXRNYXhab29tKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpZ28tem9vbS1idXR0b24tY29udGFpbmVyXCI+XG4gIDxidXR0b25cbiAgICBtYXQtaWNvbi1idXR0b25cbiAgICBbbWF0VG9vbHRpcF09XCInaWdvLmdlby5tYXBCdXR0b25zLnpvb21JbicgfCB0cmFuc2xhdGU6IHsgem9vbTogem9vbSArIDEgfVwiXG4gICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiXG4gICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICBbZGlzYWJsZWRdPVwiem9vbSA+PSBtYXhab29tXCJcbiAgICAoY2xpY2spPVwibWFwLnZpZXdDb250cm9sbGVyLnpvb21JbigpXCJcbiAgPlxuICAgIDxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgW21hdFRvb2x0aXBdPVwiJ2lnby5nZW8ubWFwQnV0dG9ucy56b29tT3V0JyB8IHRyYW5zbGF0ZTogeyB6b29tOiB6b29tIC0gMSB9XCJcbiAgICBtYXRUb29sdGlwUG9zaXRpb249XCJsZWZ0XCJcbiAgICBbY29sb3JdPVwiY29sb3JcIlxuICAgIFtkaXNhYmxlZF09XCJ6b29tIDw9IG1pblpvb21cIlxuICAgIChjbGljayk9XCJtYXAudmlld0NvbnRyb2xsZXIuem9vbU91dCgpXCJcbiAgPlxuICAgIDxtYXQtaWNvbj5yZW1vdmU8L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './shared';
2
+ export * from './measurer';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tZWFzdXJlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zaGFyZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9tZWFzdXJlcic7XG4iXX0=
@@ -0,0 +1,20 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { IgoMeasurerModule } from './measurer/measurer.module';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * @deprecated import the components directly or the MEASURER_DIRECTIVES for the set
6
+ */
7
+ export class IgoMeasureModule {
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoMeasureModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: IgoMeasureModule, exports: [IgoMeasurerModule] });
10
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoMeasureModule, imports: [IgoMeasurerModule] });
11
+ }
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: IgoMeasureModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ imports: [],
16
+ declarations: [],
17
+ exports: [IgoMeasurerModule]
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tZWFzdXJlL21lYXN1cmUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRS9EOztHQUVHO0FBTUgsTUFBTSxPQUFPLGdCQUFnQjt3R0FBaEIsZ0JBQWdCO3lHQUFoQixnQkFBZ0IsWUFGakIsaUJBQWlCO3lHQUVoQixnQkFBZ0IsWUFGakIsaUJBQWlCOzs0RkFFaEIsZ0JBQWdCO2tCQUw1QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxFQUFFO29CQUNYLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztpQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBJZ29NZWFzdXJlck1vZHVsZSB9IGZyb20gJy4vbWVhc3VyZXIvbWVhc3VyZXIubW9kdWxlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBpbXBvcnQgdGhlIGNvbXBvbmVudHMgZGlyZWN0bHkgb3IgdGhlIE1FQVNVUkVSX0RJUkVDVElWRVMgZm9yIHRoZSBzZXRcbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW10sXG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGV4cG9ydHM6IFtJZ29NZWFzdXJlck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgSWdvTWVhc3VyZU1vZHVsZSB7fVxuIl19
@@ -0,0 +1,6 @@
1
+ import { MeasureFormatPipe } from './measure-format.pipe';
2
+ import { MeasurerComponent } from './measurer.component';
3
+ export * from './measure-format.pipe';
4
+ export * from './measurer.component';
5
+ export const MEASURER_DIRECTIVES = [MeasureFormatPipe, MeasurerComponent];
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tZWFzdXJlL21lYXN1cmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxzQkFBc0IsQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZWFzdXJlRm9ybWF0UGlwZSB9IGZyb20gJy4vbWVhc3VyZS1mb3JtYXQucGlwZSc7XG5pbXBvcnQgeyBNZWFzdXJlckNvbXBvbmVudCB9IGZyb20gJy4vbWVhc3VyZXIuY29tcG9uZW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9tZWFzdXJlLWZvcm1hdC5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbWVhc3VyZXIuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IE1FQVNVUkVSX0RJUkVDVElWRVMgPSBbTWVhc3VyZUZvcm1hdFBpcGUsIE1lYXN1cmVyQ29tcG9uZW50XTtcbiJdfQ==
@@ -0,0 +1,40 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { MeasureAreaUnit, MeasureLengthUnit } from '../shared/measure.enum';
3
+ import { formatMeasure, metersToUnit, squareMetersToUnit } from '../shared/measure.utils';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * This pipe returns a measure converted from meters (or square meters)
7
+ * to the specified unit. It also keeps a certain number of decimals.
8
+ */
9
+ export class MeasureFormatPipe {
10
+ /**
11
+ * @ignore
12
+ */
13
+ transform(value, unit, unitAbbr = false) {
14
+ let out;
15
+ if (Object.values(MeasureAreaUnit).indexOf(unit) >= 0) {
16
+ out = squareMetersToUnit(value, unit);
17
+ }
18
+ else if (Object.values(MeasureLengthUnit).indexOf(unit) >= 0) {
19
+ out = metersToUnit(value, unit);
20
+ }
21
+ return out
22
+ ? formatMeasure(out, {
23
+ decimal: 1,
24
+ unit,
25
+ unitAbbr,
26
+ locale: 'fr'
27
+ })
28
+ : out;
29
+ }
30
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MeasureFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
31
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: MeasureFormatPipe, isStandalone: true, name: "measureFormat" });
32
+ }
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MeasureFormatPipe, decorators: [{
34
+ type: Pipe,
35
+ args: [{
36
+ name: 'measureFormat',
37
+ standalone: true
38
+ }]
39
+ }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZS1mb3JtYXQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21lYXN1cmUvbWVhc3VyZXIvbWVhc3VyZS1mb3JtYXQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUUsT0FBTyxFQUNMLGFBQWEsRUFDYixZQUFZLEVBQ1osa0JBQWtCLEVBQ25CLE1BQU0seUJBQXlCLENBQUM7O0FBRWpDOzs7R0FHRztBQUtILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUI7O09BRUc7SUFDSCxTQUFTLENBQ1AsS0FBYSxFQUNiLElBQXlDLEVBQ3pDLFFBQVEsR0FBRyxLQUFLO1FBRWhCLElBQUksR0FBRyxDQUFDO1FBQ1IsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUF1QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDekUsR0FBRyxHQUFHLGtCQUFrQixDQUFDLEtBQUssRUFBRSxJQUF1QixDQUFDLENBQUM7UUFDM0QsQ0FBQzthQUFNLElBQ0wsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUF5QixDQUFDLElBQUksQ0FBQyxFQUN4RSxDQUFDO1lBQ0QsR0FBRyxHQUFHLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBeUIsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxPQUFPLEdBQUc7WUFDUixDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRTtnQkFDakIsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsSUFBSTtnQkFDSixRQUFRO2dCQUNSLE1BQU0sRUFBRSxJQUFJO2FBQ2IsQ0FBQztZQUNKLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDVixDQUFDO3dHQTFCVSxpQkFBaUI7c0dBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFKN0IsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZUFBZTtvQkFDckIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNZWFzdXJlQXJlYVVuaXQsIE1lYXN1cmVMZW5ndGhVbml0IH0gZnJvbSAnLi4vc2hhcmVkL21lYXN1cmUuZW51bSc7XG5pbXBvcnQge1xuICBmb3JtYXRNZWFzdXJlLFxuICBtZXRlcnNUb1VuaXQsXG4gIHNxdWFyZU1ldGVyc1RvVW5pdFxufSBmcm9tICcuLi9zaGFyZWQvbWVhc3VyZS51dGlscyc7XG5cbi8qKlxuICogVGhpcyBwaXBlIHJldHVybnMgYSBtZWFzdXJlIGNvbnZlcnRlZCBmcm9tIG1ldGVycyAob3Igc3F1YXJlIG1ldGVycylcbiAqIHRvIHRoZSBzcGVjaWZpZWQgdW5pdC4gSXQgYWxzbyBrZWVwcyBhIGNlcnRhaW4gbnVtYmVyIG9mIGRlY2ltYWxzLlxuICovXG5AUGlwZSh7XG4gIG5hbWU6ICdtZWFzdXJlRm9ybWF0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBNZWFzdXJlRm9ybWF0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgdHJhbnNmb3JtKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgdW5pdDogTWVhc3VyZUFyZWFVbml0IHwgTWVhc3VyZUxlbmd0aFVuaXQsXG4gICAgdW5pdEFiYnIgPSBmYWxzZVxuICApOiBudW1iZXIge1xuICAgIGxldCBvdXQ7XG4gICAgaWYgKE9iamVjdC52YWx1ZXMoTWVhc3VyZUFyZWFVbml0KS5pbmRleE9mKHVuaXQgYXMgTWVhc3VyZUFyZWFVbml0KSA+PSAwKSB7XG4gICAgICBvdXQgPSBzcXVhcmVNZXRlcnNUb1VuaXQodmFsdWUsIHVuaXQgYXMgTWVhc3VyZUFyZWFVbml0KTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgT2JqZWN0LnZhbHVlcyhNZWFzdXJlTGVuZ3RoVW5pdCkuaW5kZXhPZih1bml0IGFzIE1lYXN1cmVMZW5ndGhVbml0KSA+PSAwXG4gICAgKSB7XG4gICAgICBvdXQgPSBtZXRlcnNUb1VuaXQodmFsdWUsIHVuaXQgYXMgTWVhc3VyZUxlbmd0aFVuaXQpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXRcbiAgICAgID8gZm9ybWF0TWVhc3VyZShvdXQsIHtcbiAgICAgICAgICBkZWNpbWFsOiAxLFxuICAgICAgICAgIHVuaXQsXG4gICAgICAgICAgdW5pdEFiYnIsXG4gICAgICAgICAgbG9jYWxlOiAnZnInXG4gICAgICAgIH0pXG4gICAgICA6IG91dDtcbiAgfVxufVxuIl19
@@ -0,0 +1,38 @@
1
+ import { NgIf } from '@angular/common';
2
+ import { Component, Inject } from '@angular/core';
3
+ import { MAT_DIALOG_DATA, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';
4
+ import { IgoLanguageModule } from '@igo2/core/language';
5
+ import { MeasureAreaUnit, MeasureLengthUnit } from '../shared/measure.enum';
6
+ import { MeasureFormatPipe } from './measure-format.pipe';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/material/dialog";
9
+ import * as i2 from "@ngx-translate/core";
10
+ export class MeasurerDialogComponent {
11
+ dialogRef;
12
+ data;
13
+ measureAreaUnit = MeasureAreaUnit;
14
+ measureLengthUnit = MeasureLengthUnit;
15
+ constructor(dialogRef, data) {
16
+ this.dialogRef = dialogRef;
17
+ this.data = data;
18
+ }
19
+ onNoClick() {
20
+ this.dialogRef.close();
21
+ }
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MeasurerDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
23
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MeasurerDialogComponent, isStandalone: true, selector: "igo-measurer-dialog", ngImport: i0, template: "<h3 mat-dialog-title>{{ 'igo.geo.measure.dialog.title' | translate }}</h3>\n<div mat-dialog-content>\n <table *ngIf=\"data.length > 0\" class=\"mat-typography\">\n <thead>\n <tr>\n <th colspan=\"2\">\n {{ 'igo.geo.measure.dialog.length.title' | translate }}\n </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>\n {{ data.length | measureFormat: measureLengthUnit.Kilometers }}\n </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\" class=\"mat-typography\">\n <thead>\n <tr>\n <th colspan=\"2\">\n {{ 'igo.geo.measure.dialog.area.title' | translate }}\n </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>\n {{ data.area | measureFormat: measureAreaUnit.SquareKilometers }}\n </td>\n <td>\n {{ 'igo.geo.measure.dialog.areaInSquareKilometers' | translate }}\n </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</div>\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"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: IgoLanguageModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: MeasureFormatPipe, name: "measureFormat" }] });
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MeasurerDialogComponent, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: 'igo-measurer-dialog', standalone: true, imports: [
28
+ MatDialogTitle,
29
+ MatDialogContent,
30
+ NgIf,
31
+ IgoLanguageModule,
32
+ MeasureFormatPipe
33
+ ], template: "<h3 mat-dialog-title>{{ 'igo.geo.measure.dialog.title' | translate }}</h3>\n<div mat-dialog-content>\n <table *ngIf=\"data.length > 0\" class=\"mat-typography\">\n <thead>\n <tr>\n <th colspan=\"2\">\n {{ 'igo.geo.measure.dialog.length.title' | translate }}\n </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>\n {{ data.length | measureFormat: measureLengthUnit.Kilometers }}\n </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\" class=\"mat-typography\">\n <thead>\n <tr>\n <th colspan=\"2\">\n {{ 'igo.geo.measure.dialog.area.title' | translate }}\n </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>\n {{ data.area | measureFormat: measureAreaUnit.SquareKilometers }}\n </td>\n <td>\n {{ 'igo.geo.measure.dialog.areaInSquareKilometers' | translate }}\n </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</div>\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"] }]
34
+ }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
35
+ type: Inject,
36
+ args: [MAT_DIALOG_DATA]
37
+ }] }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZXItZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21lYXN1cmUvbWVhc3VyZXIvbWVhc3VyZXItZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2dlby9zcmMvbGliL21lYXN1cmUvbWVhc3VyZXIvbWVhc3VyZXItZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osY0FBYyxFQUNmLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBZTFELE1BQU0sT0FBTyx1QkFBdUI7SUFNekI7SUFDeUI7SUFObEMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUVsQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztJQUV0QyxZQUNTLFNBQWdELEVBQ3ZCLElBQXdCO1FBRGpELGNBQVMsR0FBVCxTQUFTLENBQXVDO1FBQ3ZCLFNBQUksR0FBSixJQUFJLENBQW9CO0lBQ3ZELENBQUM7SUFFSixTQUFTO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN6QixDQUFDO3dHQVpVLHVCQUF1Qiw4Q0FPeEIsZUFBZTs0RkFQZCx1QkFBdUIsK0VDNUJwQyxrOUVBd0VBLDBORG5ESSxjQUFjLCtIQUNkLGdCQUFnQix5R0FDaEIsSUFBSSw0RkFDSixpQkFBaUIsdUZBQ2pCLGlCQUFpQjs7NEZBR1IsdUJBQXVCO2tCQWJuQyxTQUFTOytCQUNFLHFCQUFxQixjQUduQixJQUFJLFdBQ1A7d0JBQ1AsY0FBYzt3QkFDZCxnQkFBZ0I7d0JBQ2hCLElBQUk7d0JBQ0osaUJBQWlCO3dCQUNqQixpQkFBaUI7cUJBQ2xCOzswQkFTRSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBNQVRfRElBTE9HX0RBVEEsXG4gIE1hdERpYWxvZ0NvbnRlbnQsXG4gIE1hdERpYWxvZ1JlZixcbiAgTWF0RGlhbG9nVGl0bGVcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgSWdvTGFuZ3VhZ2VNb2R1bGUgfSBmcm9tICdAaWdvMi9jb3JlL2xhbmd1YWdlJztcblxuaW1wb3J0IHsgTWVhc3VyZUFyZWFVbml0LCBNZWFzdXJlTGVuZ3RoVW5pdCB9IGZyb20gJy4uL3NoYXJlZC9tZWFzdXJlLmVudW0nO1xuaW1wb3J0IHsgTWVhc3VyZXJEaWFsb2dEYXRhIH0gZnJvbSAnLi4vc2hhcmVkL21lYXN1cmUuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNZWFzdXJlRm9ybWF0UGlwZSB9IGZyb20gJy4vbWVhc3VyZS1mb3JtYXQucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lnby1tZWFzdXJlci1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJ21lYXN1cmVyLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lYXN1cmVyLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0RGlhbG9nVGl0bGUsXG4gICAgTWF0RGlhbG9nQ29udGVudCxcbiAgICBOZ0lmLFxuICAgIElnb0xhbmd1YWdlTW9kdWxlLFxuICAgIE1lYXN1cmVGb3JtYXRQaXBlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgTWVhc3VyZXJEaWFsb2dDb21wb25lbnQge1xuICBtZWFzdXJlQXJlYVVuaXQgPSBNZWFzdXJlQXJlYVVuaXQ7XG5cbiAgbWVhc3VyZUxlbmd0aFVuaXQgPSBNZWFzdXJlTGVuZ3RoVW5pdDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8TWVhc3VyZXJEaWFsb2dDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogTWVhc3VyZXJEaWFsb2dEYXRhXG4gICkge31cblxuICBvbk5vQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxufVxuIiwiPGgzIG1hdC1kaWFsb2ctdGl0bGU+e3sgJ2lnby5nZW8ubWVhc3VyZS5kaWFsb2cudGl0bGUnIHwgdHJhbnNsYXRlIH19PC9oMz5cbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50PlxuICA8dGFibGUgKm5nSWY9XCJkYXRhLmxlbmd0aCA+IDBcIiBjbGFzcz1cIm1hdC10eXBvZ3JhcGh5XCI+XG4gICAgPHRoZWFkPlxuICAgICAgPHRyPlxuICAgICAgICA8dGggY29sc3Bhbj1cIjJcIj5cbiAgICAgICAgICB7eyAnaWdvLmdlby5tZWFzdXJlLmRpYWxvZy5sZW5ndGgudGl0bGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvdGg+XG4gICAgICA8L3RyPlxuICAgIDwvdGhlYWQ+XG4gICAgPHRib2R5PlxuICAgICAgPHRyPlxuICAgICAgICA8dGQ+e3sgZGF0YS5sZW5ndGggfCBtZWFzdXJlRm9ybWF0OiBtZWFzdXJlTGVuZ3RoVW5pdC5NZXRlcnMgfX08L3RkPlxuICAgICAgICA8dGQ+e3sgJ2lnby5nZW8ubWVhc3VyZS5kaWFsb2cubGVuZ3RoSW5NZXRlcnMnIHwgdHJhbnNsYXRlIH19PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgICA8dHI+XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICB7eyBkYXRhLmxlbmd0aCB8IG1lYXN1cmVGb3JtYXQ6IG1lYXN1cmVMZW5ndGhVbml0LktpbG9tZXRlcnMgfX1cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkPnt7ICdpZ28uZ2VvLm1lYXN1cmUuZGlhbG9nLmxlbmd0aEluS2lsb21ldGVycycgfCB0cmFuc2xhdGUgfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRkPnt7IGRhdGEubGVuZ3RoIHwgbWVhc3VyZUZvcm1hdDogbWVhc3VyZUxlbmd0aFVuaXQuTWlsZXMgfX08L3RkPlxuICAgICAgICA8dGQ+e3sgJ2lnby5nZW8ubWVhc3VyZS5kaWFsb2cubGVuZ3RoSW5NaWxlcycgfCB0cmFuc2xhdGUgfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRkPnt7IGRhdGEubGVuZ3RoIHwgbWVhc3VyZUZvcm1hdDogbWVhc3VyZUxlbmd0aFVuaXQuRmVldCB9fTwvdGQ+XG4gICAgICAgIDx0ZD57eyAnaWdvLmdlby5tZWFzdXJlLmRpYWxvZy5sZW5ndGhJbkZlZXQnIHwgdHJhbnNsYXRlIH19PC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cblxuICA8dGFibGUgKm5nSWY9XCJkYXRhLmFyZWEgPiAwXCIgY2xhc3M9XCJtYXQtdHlwb2dyYXBoeVwiPlxuICAgIDx0aGVhZD5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRoIGNvbHNwYW49XCIyXCI+XG4gICAgICAgICAge3sgJ2lnby5nZW8ubWVhc3VyZS5kaWFsb2cuYXJlYS50aXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHk+XG4gICAgICA8dHI+XG4gICAgICAgIDx0ZD57eyBkYXRhLmFyZWEgfCBtZWFzdXJlRm9ybWF0OiBtZWFzdXJlQXJlYVVuaXQuU3F1YXJlTWV0ZXJzIH19PC90ZD5cbiAgICAgICAgPHRkPnt7ICdpZ28uZ2VvLm1lYXN1cmUuZGlhbG9nLmFyZWFJblNxdWFyZU1ldGVycycgfCB0cmFuc2xhdGUgfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRkPlxuICAgICAgICAgIHt7IGRhdGEuYXJlYSB8IG1lYXN1cmVGb3JtYXQ6IG1lYXN1cmVBcmVhVW5pdC5TcXVhcmVLaWxvbWV0ZXJzIH19XG4gICAgICAgIDwvdGQ+XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICB7eyAnaWdvLmdlby5tZWFzdXJlLmRpYWxvZy5hcmVhSW5TcXVhcmVLaWxvbWV0ZXJzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRkPnt7IGRhdGEuYXJlYSB8IG1lYXN1cmVGb3JtYXQ6IG1lYXN1cmVBcmVhVW5pdC5TcXVhcmVNaWxlcyB9fTwvdGQ+XG4gICAgICAgIDx0ZD57eyAnaWdvLmdlby5tZWFzdXJlLmRpYWxvZy5hcmVhSW5TcXVhcmVNaWxlcycgfCB0cmFuc2xhdGUgfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRkPnt7IGRhdGEuYXJlYSB8IG1lYXN1cmVGb3JtYXQ6IG1lYXN1cmVBcmVhVW5pdC5BY3JlcyB9fTwvdGQ+XG4gICAgICAgIDx0ZD57eyAnaWdvLmdlby5tZWFzdXJlLmRpYWxvZy5hcmVhSW5BY3JlcycgfCB0cmFuc2xhdGUgfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRkPnt7IGRhdGEuYXJlYSB8IG1lYXN1cmVGb3JtYXQ6IG1lYXN1cmVBcmVhVW5pdC5IZWN0YXJlcyB9fTwvdGQ+XG4gICAgICAgIDx0ZD57eyAnaWdvLmdlby5tZWFzdXJlLmRpYWxvZy5hcmVhSW5IZWN0YXJlcycgfCB0cmFuc2xhdGUgfX08L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDx0cj5cbiAgICAgICAgPHRkPnt7ICdpZ28uZ2VvLm1lYXN1cmUuZGlhbG9nLnBlcmltZXRlckluTWV0ZXJzJyB8IHRyYW5zbGF0ZSB9fTwvdGQ+XG4gICAgICAgIDx0ZD57eyBkYXRhLnBlcmltZXRlciB8IG1lYXN1cmVGb3JtYXQ6IG1lYXN1cmVMZW5ndGhVbml0Lk1ldGVycyB9fTwvdGQ+XG4gICAgICA8L3RyPlxuICAgIDwvdGJvZHk+XG4gIDwvdGFibGU+XG48L2Rpdj5cbiJdfQ==