@igo2/geo 18.0.0 → 18.0.1-next.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 (510) hide show
  1. package/fesm2022/igo2-geo.mjs +684 -709
  2. package/fesm2022/igo2-geo.mjs.map +1 -1
  3. package/lib/offline/geoDB/geoDB.service.d.ts +1 -1
  4. package/lib/offline/layerDB/layerDB.service.d.ts +1 -1
  5. package/lib/style/style-list/style-list.provider.d.ts +1 -8
  6. package/lib/style/style-list/style-list.service.d.ts +1 -1
  7. package/package.json +15 -17
  8. package/src/lib/layer/layer-list/layer-list.theme.scss +2 -1
  9. package/src/lib/map/menu-button/menu-button.theming.scss +3 -3
  10. package/src/style/style.scss +1 -1
  11. package/esm2022/igo2-geo.mjs +0 -5
  12. package/esm2022/lib/catalog/catalog-browser/catalog-browser-group.component.mjs +0 -234
  13. package/esm2022/lib/catalog/catalog-browser/catalog-browser-layer.component.mjs +0 -272
  14. package/esm2022/lib/catalog/catalog-browser/catalog-browser.component.mjs +0 -246
  15. package/esm2022/lib/catalog/catalog-browser/catalog-browser.module.mjs +0 -19
  16. package/esm2022/lib/catalog/catalog-library/add-catalog-dialog.component.mjs +0 -136
  17. package/esm2022/lib/catalog/catalog-library/catalog-library-item.component.mjs +0 -60
  18. package/esm2022/lib/catalog/catalog-library/catalog-library.component.mjs +0 -232
  19. package/esm2022/lib/catalog/catalog-library/catalog-library.module.mjs +0 -24
  20. package/esm2022/lib/catalog/catalog-library/index.mjs +0 -4
  21. package/esm2022/lib/catalog/catalog.module.mjs +0 -26
  22. package/esm2022/lib/catalog/index.mjs +0 -6
  23. package/esm2022/lib/catalog/shared/catalog.abstract.mjs +0 -32
  24. package/esm2022/lib/catalog/shared/catalog.enum.mjs +0 -16
  25. package/esm2022/lib/catalog/shared/catalog.interface.mjs +0 -2
  26. package/esm2022/lib/catalog/shared/catalog.service.mjs +0 -706
  27. package/esm2022/lib/catalog/shared/catalogs.mjs +0 -75
  28. package/esm2022/lib/catalog/shared/index.mjs +0 -5
  29. package/esm2022/lib/datasource/index.mjs +0 -3
  30. package/esm2022/lib/datasource/shared/capabilities.interface.mjs +0 -17
  31. package/esm2022/lib/datasource/shared/capabilities.service.mjs +0 -441
  32. package/esm2022/lib/datasource/shared/datasource.service.mjs +0 -258
  33. package/esm2022/lib/datasource/shared/datasources/any-datasource.interface.mjs +0 -2
  34. package/esm2022/lib/datasource/shared/datasources/any-datasource.mjs +0 -2
  35. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.interface.mjs +0 -2
  36. package/esm2022/lib/datasource/shared/datasources/arcgisrest-datasource.mjs +0 -222
  37. package/esm2022/lib/datasource/shared/datasources/carto-datasource.interface.mjs +0 -2
  38. package/esm2022/lib/datasource/shared/datasources/carto-datasource.mjs +0 -118
  39. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.interface.mjs +0 -2
  40. package/esm2022/lib/datasource/shared/datasources/cluster-datasource.mjs +0 -24
  41. package/esm2022/lib/datasource/shared/datasources/data.service.mjs +0 -3
  42. package/esm2022/lib/datasource/shared/datasources/datasource.interface.mjs +0 -2
  43. package/esm2022/lib/datasource/shared/datasources/datasource.mjs +0 -41
  44. package/esm2022/lib/datasource/shared/datasources/feature-datasource.interface.mjs +0 -2
  45. package/esm2022/lib/datasource/shared/datasources/feature-datasource.mjs +0 -52
  46. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.interface.mjs +0 -2
  47. package/esm2022/lib/datasource/shared/datasources/imagearcgisrest-datasource.mjs +0 -70
  48. package/esm2022/lib/datasource/shared/datasources/index.mjs +0 -36
  49. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.interface.mjs +0 -2
  50. package/esm2022/lib/datasource/shared/datasources/mvt-datasource.mjs +0 -33
  51. package/esm2022/lib/datasource/shared/datasources/osm-datasource.interface.mjs +0 -2
  52. package/esm2022/lib/datasource/shared/datasources/osm-datasource.mjs +0 -14
  53. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.interface.mjs +0 -2
  54. package/esm2022/lib/datasource/shared/datasources/tilearcgisrest-datasource.mjs +0 -60
  55. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.interface.mjs +0 -2
  56. package/esm2022/lib/datasource/shared/datasources/tiledebug-datasource.mjs +0 -17
  57. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.interface.mjs +0 -2
  58. package/esm2022/lib/datasource/shared/datasources/websocket-datasource.mjs +0 -56
  59. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.interface.mjs +0 -2
  60. package/esm2022/lib/datasource/shared/datasources/wfs-datasource.mjs +0 -137
  61. package/esm2022/lib/datasource/shared/datasources/wfs.service.mjs +0 -170
  62. package/esm2022/lib/datasource/shared/datasources/wms-datasource.interface.mjs +0 -2
  63. package/esm2022/lib/datasource/shared/datasources/wms-datasource.mjs +0 -227
  64. package/esm2022/lib/datasource/shared/datasources/wms-wfs.utils.mjs +0 -224
  65. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.interface.mjs +0 -2
  66. package/esm2022/lib/datasource/shared/datasources/wmts-datasource.mjs +0 -18
  67. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.interface.mjs +0 -2
  68. package/esm2022/lib/datasource/shared/datasources/xyz-datasource.mjs +0 -11
  69. package/esm2022/lib/datasource/shared/index.mjs +0 -6
  70. package/esm2022/lib/datasource/shared/options/index.mjs +0 -5
  71. package/esm2022/lib/datasource/shared/options/options-api.interface.mjs +0 -2
  72. package/esm2022/lib/datasource/shared/options/options-api.providers.mjs +0 -15
  73. package/esm2022/lib/datasource/shared/options/options-api.service.mjs +0 -85
  74. package/esm2022/lib/datasource/shared/options/options.service.mjs +0 -3
  75. package/esm2022/lib/datasource/utils/index.mjs +0 -2
  76. package/esm2022/lib/datasource/utils/tilegrid.mjs +0 -20
  77. package/esm2022/lib/directions/directions-buttons/directions-buttons.component.mjs +0 -246
  78. package/esm2022/lib/directions/directions-buttons/index.mjs +0 -2
  79. package/esm2022/lib/directions/directions-inputs/directions-inputs.component.mjs +0 -312
  80. package/esm2022/lib/directions/directions-inputs/index.mjs +0 -2
  81. package/esm2022/lib/directions/directions-results/directions-results.component.mjs +0 -192
  82. package/esm2022/lib/directions/directions-results/index.mjs +0 -2
  83. package/esm2022/lib/directions/directions-sources/directions-source.interface.mjs +0 -5
  84. package/esm2022/lib/directions/directions-sources/directions-source.mjs +0 -3
  85. package/esm2022/lib/directions/directions-sources/directions-source.provider.mjs +0 -23
  86. package/esm2022/lib/directions/directions-sources/index.mjs +0 -5
  87. package/esm2022/lib/directions/directions-sources/osrm-directions-source.mjs +0 -159
  88. package/esm2022/lib/directions/directions.component.mjs +0 -437
  89. package/esm2022/lib/directions/directions.module.mjs +0 -46
  90. package/esm2022/lib/directions/directions.provider.mjs +0 -16
  91. package/esm2022/lib/directions/index.mjs +0 -8
  92. package/esm2022/lib/directions/shared/directions-source.service.mjs +0 -18
  93. package/esm2022/lib/directions/shared/directions.enum.mjs +0 -72
  94. package/esm2022/lib/directions/shared/directions.interface.mjs +0 -2
  95. package/esm2022/lib/directions/shared/directions.service.mjs +0 -239
  96. package/esm2022/lib/directions/shared/directions.utils.mjs +0 -522
  97. package/esm2022/lib/directions/shared/index.mjs +0 -6
  98. package/esm2022/lib/directions/shared/store.mjs +0 -21
  99. package/esm2022/lib/download/download-button/download-button.component.mjs +0 -48
  100. package/esm2022/lib/download/download-button/index.mjs +0 -2
  101. package/esm2022/lib/download/download.module.mjs +0 -24
  102. package/esm2022/lib/download/index.mjs +0 -3
  103. package/esm2022/lib/download/shared/download.interface.mjs +0 -2
  104. package/esm2022/lib/download/shared/download.service.mjs +0 -67
  105. package/esm2022/lib/download/shared/index.mjs +0 -3
  106. package/esm2022/lib/draw/draw/draw-layer-popup.component.mjs +0 -42
  107. package/esm2022/lib/draw/draw/draw-popup.component.mjs +0 -421
  108. package/esm2022/lib/draw/draw/draw-shorcuts.component.mjs +0 -28
  109. package/esm2022/lib/draw/draw/draw.component.mjs +0 -1136
  110. package/esm2022/lib/draw/draw/draw.module.mjs +0 -19
  111. package/esm2022/lib/draw/drawingTool.module.mjs +0 -18
  112. package/esm2022/lib/draw/index.mjs +0 -3
  113. package/esm2022/lib/draw/shared/draw-icon.service.mjs +0 -30
  114. package/esm2022/lib/draw/shared/draw.enum.mjs +0 -21
  115. package/esm2022/lib/draw/shared/draw.interface.mjs +0 -2
  116. package/esm2022/lib/draw/shared/draw.utils.mjs +0 -125
  117. package/esm2022/lib/draw/shared/index.mjs +0 -5
  118. package/esm2022/lib/environment/environment.interface.mjs +0 -2
  119. package/esm2022/lib/environment/index.mjs +0 -2
  120. package/esm2022/lib/feature/feature-details/feature-details.component.mjs +0 -306
  121. package/esm2022/lib/feature/feature-details/feature-details.directive.mjs +0 -56
  122. package/esm2022/lib/feature/feature-details/feature-details.module.mjs +0 -26
  123. package/esm2022/lib/feature/feature-details/index.mjs +0 -4
  124. package/esm2022/lib/feature/feature-form/feature-form.component.mjs +0 -101
  125. package/esm2022/lib/feature/feature-form/feature-form.module.mjs +0 -19
  126. package/esm2022/lib/feature/feature.module.mjs +0 -26
  127. package/esm2022/lib/feature/index.mjs +0 -5
  128. package/esm2022/lib/feature/shared/feature-store.utils.mjs +0 -28
  129. package/esm2022/lib/feature/shared/feature.enums.mjs +0 -9
  130. package/esm2022/lib/feature/shared/feature.interfaces.mjs +0 -2
  131. package/esm2022/lib/feature/shared/feature.utils.mjs +0 -332
  132. package/esm2022/lib/feature/shared/index.mjs +0 -8
  133. package/esm2022/lib/feature/shared/store.mjs +0 -143
  134. package/esm2022/lib/feature/shared/strategies/geo-properties.mjs +0 -216
  135. package/esm2022/lib/feature/shared/strategies/in-map-extent.mjs +0 -119
  136. package/esm2022/lib/feature/shared/strategies/in-map-resolution.mjs +0 -99
  137. package/esm2022/lib/feature/shared/strategies/index.mjs +0 -8
  138. package/esm2022/lib/feature/shared/strategies/loading-layer.mjs +0 -103
  139. package/esm2022/lib/feature/shared/strategies/loading.mjs +0 -136
  140. package/esm2022/lib/feature/shared/strategies/search.mjs +0 -158
  141. package/esm2022/lib/feature/shared/strategies/selection.mjs +0 -385
  142. package/esm2022/lib/feature/shared/strategies.utils.mjs +0 -37
  143. package/esm2022/lib/filter/filter.module.mjs +0 -131
  144. package/esm2022/lib/filter/index.mjs +0 -17
  145. package/esm2022/lib/filter/ogc-filter-button/index.mjs +0 -2
  146. package/esm2022/lib/filter/ogc-filter-button/ogc-filter-button.component.mjs +0 -141
  147. package/esm2022/lib/filter/ogc-filter-form/index.mjs +0 -2
  148. package/esm2022/lib/filter/ogc-filter-form/ogc-filter-form.component.mjs +0 -325
  149. package/esm2022/lib/filter/ogc-filter-selection/index.mjs +0 -2
  150. package/esm2022/lib/filter/ogc-filter-selection/ogc-filter-selection.component.mjs +0 -787
  151. package/esm2022/lib/filter/ogc-filter-time/index.mjs +0 -3
  152. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time-slider.component.mjs +0 -201
  153. package/esm2022/lib/filter/ogc-filter-time/ogc-filter-time.component.mjs +0 -665
  154. package/esm2022/lib/filter/ogc-filterable-form/index.mjs +0 -2
  155. package/esm2022/lib/filter/ogc-filterable-form/ogc-filterable-form.component.mjs +0 -66
  156. package/esm2022/lib/filter/ogc-filterable-item/index.mjs +0 -2
  157. package/esm2022/lib/filter/ogc-filterable-item/ogc-filterable-item.component.mjs +0 -244
  158. package/esm2022/lib/filter/ogc-filterable-list/index.mjs +0 -3
  159. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list-binding.directive.mjs +0 -39
  160. package/esm2022/lib/filter/ogc-filterable-list/ogc-filterable-list.component.mjs +0 -32
  161. package/esm2022/lib/filter/shared/filterable-datasource.pipe.mjs +0 -63
  162. package/esm2022/lib/filter/shared/index.mjs +0 -12
  163. package/esm2022/lib/filter/shared/ogc-filter-time.service.mjs +0 -72
  164. package/esm2022/lib/filter/shared/ogc-filter.enum.mjs +0 -30
  165. package/esm2022/lib/filter/shared/ogc-filter.interface.mjs +0 -2
  166. package/esm2022/lib/filter/shared/ogc-filter.mjs +0 -756
  167. package/esm2022/lib/filter/shared/ogc-filter.service.mjs +0 -47
  168. package/esm2022/lib/filter/shared/spatial-filter.enum.mjs +0 -23
  169. package/esm2022/lib/filter/shared/spatial-filter.interface.mjs +0 -2
  170. package/esm2022/lib/filter/shared/spatial-filter.service.mjs +0 -282
  171. package/esm2022/lib/filter/shared/time-filter.enum.mjs +0 -13
  172. package/esm2022/lib/filter/shared/time-filter.interface.mjs +0 -2
  173. package/esm2022/lib/filter/shared/time-filter.service.mjs +0 -107
  174. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/index.mjs +0 -2
  175. package/esm2022/lib/filter/spatial-filter/spatial-filter-item/spatial-filter-item.component.mjs +0 -875
  176. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/index.mjs +0 -2
  177. package/esm2022/lib/filter/spatial-filter/spatial-filter-list/spatial-filter-list.component.mjs +0 -191
  178. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/index.mjs +0 -2
  179. package/esm2022/lib/filter/spatial-filter/spatial-filter-type/spatial-filter-type.component.mjs +0 -120
  180. package/esm2022/lib/filter/time-filter-button/index.mjs +0 -2
  181. package/esm2022/lib/filter/time-filter-button/time-filter-button.component.mjs +0 -70
  182. package/esm2022/lib/filter/time-filter-form/index.mjs +0 -2
  183. package/esm2022/lib/filter/time-filter-form/time-filter-form.component.mjs +0 -537
  184. package/esm2022/lib/filter/time-filter-item/index.mjs +0 -2
  185. package/esm2022/lib/filter/time-filter-item/time-filter-item.component.mjs +0 -90
  186. package/esm2022/lib/filter/time-filter-list/index.mjs +0 -3
  187. package/esm2022/lib/filter/time-filter-list/time-filter-list-binding.directive.mjs +0 -39
  188. package/esm2022/lib/filter/time-filter-list/time-filter-list.component.mjs +0 -24
  189. package/esm2022/lib/geo.module.mjs +0 -63
  190. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field-input.component.mjs +0 -559
  191. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.component.mjs +0 -170
  192. package/esm2022/lib/geometry/geometry-form-field/geometry-form-field.module.mjs +0 -24
  193. package/esm2022/lib/geometry/geometry-form-field/index.mjs +0 -4
  194. package/esm2022/lib/geometry/geometry.module.mjs +0 -18
  195. package/esm2022/lib/geometry/index.mjs +0 -3
  196. package/esm2022/lib/geometry/shared/controls/draw.mjs +0 -340
  197. package/esm2022/lib/geometry/shared/controls/index.mjs +0 -4
  198. package/esm2022/lib/geometry/shared/controls/modify.mjs +0 -538
  199. package/esm2022/lib/geometry/shared/controls/slice.mjs +0 -190
  200. package/esm2022/lib/geometry/shared/geometry.errors.mjs +0 -24
  201. package/esm2022/lib/geometry/shared/geometry.interfaces.mjs +0 -2
  202. package/esm2022/lib/geometry/shared/geometry.utils.mjs +0 -113
  203. package/esm2022/lib/geometry/shared/index.mjs +0 -5
  204. package/esm2022/lib/import-export/export-button/export-button.component.mjs +0 -49
  205. package/esm2022/lib/import-export/export-button/index.mjs +0 -2
  206. package/esm2022/lib/import-export/import-export/import-export.component.mjs +0 -876
  207. package/esm2022/lib/import-export/import-export/index.mjs +0 -2
  208. package/esm2022/lib/import-export/import-export.module.mjs +0 -31
  209. package/esm2022/lib/import-export/index.mjs +0 -5
  210. package/esm2022/lib/import-export/shared/drop-geo-file.directive.mjs +0 -114
  211. package/esm2022/lib/import-export/shared/export.errors.mjs +0 -15
  212. package/esm2022/lib/import-export/shared/export.interface.mjs +0 -2
  213. package/esm2022/lib/import-export/shared/export.service.mjs +0 -378
  214. package/esm2022/lib/import-export/shared/export.type.mjs +0 -13
  215. package/esm2022/lib/import-export/shared/export.utils.mjs +0 -51
  216. package/esm2022/lib/import-export/shared/import.errors.mjs +0 -39
  217. package/esm2022/lib/import-export/shared/import.interface.mjs +0 -2
  218. package/esm2022/lib/import-export/shared/import.service.mjs +0 -221
  219. package/esm2022/lib/import-export/shared/import.utils.mjs +0 -203
  220. package/esm2022/lib/import-export/shared/index.mjs +0 -11
  221. package/esm2022/lib/layer/index.mjs +0 -16
  222. package/esm2022/lib/layer/layer-group/index.mjs +0 -2
  223. package/esm2022/lib/layer/layer-group/layer-group.component.mjs +0 -103
  224. package/esm2022/lib/layer/layer-item/index.mjs +0 -2
  225. package/esm2022/lib/layer/layer-item/layer-item.component.mjs +0 -196
  226. package/esm2022/lib/layer/layer-legend/index.mjs +0 -2
  227. package/esm2022/lib/layer/layer-legend/layer-legend.component.mjs +0 -287
  228. package/esm2022/lib/layer/layer-legend-item/index.mjs +0 -2
  229. package/esm2022/lib/layer/layer-legend-item/layer-legend-item.component.mjs +0 -85
  230. package/esm2022/lib/layer/layer-legend-list/index.mjs +0 -3
  231. package/esm2022/lib/layer/layer-legend-list/layer-legend-list-binding.directive.mjs +0 -54
  232. package/esm2022/lib/layer/layer-legend-list/layer-legend-list.component.mjs +0 -104
  233. package/esm2022/lib/layer/layer-list/index.mjs +0 -2
  234. package/esm2022/lib/layer/layer-list/layer-list.component.mjs +0 -232
  235. package/esm2022/lib/layer/layer-list-tool/index.mjs +0 -4
  236. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.component.mjs +0 -92
  237. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.interface.mjs +0 -7
  238. package/esm2022/lib/layer/layer-list-tool/layer-list-tool.service.mjs +0 -61
  239. package/esm2022/lib/layer/layer-search/index.mjs +0 -2
  240. package/esm2022/lib/layer/layer-search/layer-search.component.mjs +0 -65
  241. package/esm2022/lib/layer/layer-unavailable/index.mjs +0 -3
  242. package/esm2022/lib/layer/layer-unavailable/layer-unavailable-list/layer-unavailable-list.component.mjs +0 -25
  243. package/esm2022/lib/layer/layer-unavailable/layer-unavailable.component.mjs +0 -35
  244. package/esm2022/lib/layer/layer-viewer/index.mjs +0 -3
  245. package/esm2022/lib/layer/layer-viewer/layer-viewer.component.mjs +0 -226
  246. package/esm2022/lib/layer/layer-viewer/layer-viewer.interface.mjs +0 -2
  247. package/esm2022/lib/layer/layer-viewer-bottom-actions/index.mjs +0 -2
  248. package/esm2022/lib/layer/layer-viewer-bottom-actions/layer-viewer-bottom-actions.component.mjs +0 -207
  249. package/esm2022/lib/layer/layer-visibility-button/index.mjs +0 -2
  250. package/esm2022/lib/layer/layer-visibility-button/layer-visibility-button.component.mjs +0 -83
  251. package/esm2022/lib/layer/layer.module.mjs +0 -107
  252. package/esm2022/lib/layer/shared/clusterParam.mjs +0 -2
  253. package/esm2022/lib/layer/shared/index.mjs +0 -6
  254. package/esm2022/lib/layer/shared/layer-controller.mjs +0 -316
  255. package/esm2022/lib/layer/shared/layer-selection.mjs +0 -38
  256. package/esm2022/lib/layer/shared/layer.enums.mjs +0 -2
  257. package/esm2022/lib/layer/shared/layer.service.mjs +0 -315
  258. package/esm2022/lib/layer/shared/layers/any-layer.interface.mjs +0 -2
  259. package/esm2022/lib/layer/shared/layers/any-layer.mjs +0 -2
  260. package/esm2022/lib/layer/shared/layers/image-layer.interface.mjs +0 -2
  261. package/esm2022/lib/layer/shared/layers/image-layer.mjs +0 -75
  262. package/esm2022/lib/layer/shared/layers/index.mjs +0 -18
  263. package/esm2022/lib/layer/shared/layers/layer-base.mjs +0 -199
  264. package/esm2022/lib/layer/shared/layers/layer-group.interface.mjs +0 -2
  265. package/esm2022/lib/layer/shared/layers/layer-group.mjs +0 -120
  266. package/esm2022/lib/layer/shared/layers/layer.interface.mjs +0 -7
  267. package/esm2022/lib/layer/shared/layers/layer.mjs +0 -178
  268. package/esm2022/lib/layer/shared/layers/legend.interface.mjs +0 -2
  269. package/esm2022/lib/layer/shared/layers/linked/index.mjs +0 -4
  270. package/esm2022/lib/layer/shared/layers/linked/linked-layer.interface.mjs +0 -12
  271. package/esm2022/lib/layer/shared/layers/linked/linked-layer.mjs +0 -242
  272. package/esm2022/lib/layer/shared/layers/linked/linked-layer.utils.mjs +0 -70
  273. package/esm2022/lib/layer/shared/layers/tile-layer.interface.mjs +0 -2
  274. package/esm2022/lib/layer/shared/layers/tile-layer.mjs +0 -55
  275. package/esm2022/lib/layer/shared/layers/vector-layer.interface.mjs +0 -2
  276. package/esm2022/lib/layer/shared/layers/vector-layer.mjs +0 -576
  277. package/esm2022/lib/layer/shared/layers/vectortile-layer.interface.mjs +0 -2
  278. package/esm2022/lib/layer/shared/layers/vectortile-layer.mjs +0 -112
  279. package/esm2022/lib/layer/track-feature-button/index.mjs +0 -2
  280. package/esm2022/lib/layer/track-feature-button/track-feature-button.component.mjs +0 -54
  281. package/esm2022/lib/layer/utils/image-watcher.mjs +0 -62
  282. package/esm2022/lib/layer/utils/index.mjs +0 -6
  283. package/esm2022/lib/layer/utils/layer.utils.mjs +0 -57
  284. package/esm2022/lib/layer/utils/outputLegend.mjs +0 -32
  285. package/esm2022/lib/layer/utils/tile-watcher.mjs +0 -52
  286. package/esm2022/lib/layer/utils/vector-watcher.mjs +0 -50
  287. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.animation.mjs +0 -20
  288. package/esm2022/lib/map/baselayers-switcher/baselayers-switcher.component.mjs +0 -87
  289. package/esm2022/lib/map/baselayers-switcher/index.mjs +0 -3
  290. package/esm2022/lib/map/baselayers-switcher/mini-basemap.component.mjs +0 -122
  291. package/esm2022/lib/map/geolocate-button/geolocate-button.component.mjs +0 -78
  292. package/esm2022/lib/map/geolocate-button/index.mjs +0 -2
  293. package/esm2022/lib/map/home-extent-button/home-extent-button.component.mjs +0 -73
  294. package/esm2022/lib/map/home-extent-button/home-extent-button.interface.mjs +0 -2
  295. package/esm2022/lib/map/home-extent-button/index.mjs +0 -3
  296. package/esm2022/lib/map/index.mjs +0 -14
  297. package/esm2022/lib/map/info-section/index.mjs +0 -2
  298. package/esm2022/lib/map/info-section/info-section.component.mjs +0 -15
  299. package/esm2022/lib/map/map-browser/index.mjs +0 -2
  300. package/esm2022/lib/map/map-browser/map-browser.component.mjs +0 -67
  301. package/esm2022/lib/map/map-center/index.mjs +0 -2
  302. package/esm2022/lib/map/map-center/map-center.component.mjs +0 -56
  303. package/esm2022/lib/map/map.module.mjs +0 -89
  304. package/esm2022/lib/map/menu-button/index.mjs +0 -2
  305. package/esm2022/lib/map/menu-button/menu-button.component.mjs +0 -57
  306. package/esm2022/lib/map/offline-button/index.mjs +0 -2
  307. package/esm2022/lib/map/offline-button/offline-button.component.mjs +0 -53
  308. package/esm2022/lib/map/rotation-button/index.mjs +0 -2
  309. package/esm2022/lib/map/rotation-button/rotation-button.component.mjs +0 -58
  310. package/esm2022/lib/map/shared/controllers/controller.mjs +0 -44
  311. package/esm2022/lib/map/shared/controllers/geolocation.interface.mjs +0 -8
  312. package/esm2022/lib/map/shared/controllers/geolocation.mjs +0 -431
  313. package/esm2022/lib/map/shared/controllers/index.mjs +0 -5
  314. package/esm2022/lib/map/shared/controllers/view.mjs +0 -361
  315. package/esm2022/lib/map/shared/hover-feature.directive.mjs +0 -481
  316. package/esm2022/lib/map/shared/index.mjs +0 -15
  317. package/esm2022/lib/map/shared/linkedLayers.utils.mjs +0 -238
  318. package/esm2022/lib/map/shared/map-pointer-position.directive.mjs +0 -122
  319. package/esm2022/lib/map/shared/map.abstract.mjs +0 -24
  320. package/esm2022/lib/map/shared/map.enums.mjs +0 -6
  321. package/esm2022/lib/map/shared/map.interface.mjs +0 -2
  322. package/esm2022/lib/map/shared/map.mjs +0 -201
  323. package/esm2022/lib/map/shared/map.service.mjs +0 -29
  324. package/esm2022/lib/map/shared/map.utils.mjs +0 -455
  325. package/esm2022/lib/map/shared/mapOffline.directive.mjs +0 -114
  326. package/esm2022/lib/map/shared/projection.interfaces.mjs +0 -2
  327. package/esm2022/lib/map/shared/projection.service.mjs +0 -67
  328. package/esm2022/lib/map/shared/projection.utils.mjs +0 -122
  329. package/esm2022/lib/map/swipe-control/index.mjs +0 -2
  330. package/esm2022/lib/map/swipe-control/swipe-control.component.mjs +0 -211
  331. package/esm2022/lib/map/utils/index.mjs +0 -2
  332. package/esm2022/lib/map/utils/layer-watcher.mjs +0 -112
  333. package/esm2022/lib/map/wake-lock-button/index.mjs +0 -2
  334. package/esm2022/lib/map/wake-lock-button/wake-lock-button.component.mjs +0 -103
  335. package/esm2022/lib/map/zoom-button/index.mjs +0 -2
  336. package/esm2022/lib/map/zoom-button/zoom-button.component.mjs +0 -35
  337. package/esm2022/lib/measure/index.mjs +0 -3
  338. package/esm2022/lib/measure/measure.module.mjs +0 -20
  339. package/esm2022/lib/measure/measurer/index.mjs +0 -6
  340. package/esm2022/lib/measure/measurer/measure-format.pipe.mjs +0 -40
  341. package/esm2022/lib/measure/measurer/measurer-dialog.component.mjs +0 -38
  342. package/esm2022/lib/measure/measurer/measurer-item.component.mjs +0 -143
  343. package/esm2022/lib/measure/measurer/measurer.component.mjs +0 -948
  344. package/esm2022/lib/measure/measurer/measurer.module.mjs +0 -20
  345. package/esm2022/lib/measure/shared/index.mjs +0 -4
  346. package/esm2022/lib/measure/shared/measure.enum.mjs +0 -37
  347. package/esm2022/lib/measure/shared/measure.interfaces.mjs +0 -2
  348. package/esm2022/lib/measure/shared/measure.utils.mjs +0 -497
  349. package/esm2022/lib/metadata/index.mjs +0 -4
  350. package/esm2022/lib/metadata/metadata-button/index.mjs +0 -2
  351. package/esm2022/lib/metadata/metadata-button/metadata-button.component.mjs +0 -96
  352. package/esm2022/lib/metadata/metadata.module.mjs +0 -29
  353. package/esm2022/lib/metadata/shared/index.mjs +0 -3
  354. package/esm2022/lib/metadata/shared/metadata.interface.mjs +0 -2
  355. package/esm2022/lib/metadata/shared/metadata.service.mjs +0 -18
  356. package/esm2022/lib/offline/geoDB/configFileToGeoDB.service.mjs +0 -130
  357. package/esm2022/lib/offline/geoDB/geoDB.enums.mjs +0 -6
  358. package/esm2022/lib/offline/geoDB/geoDB.interface.mjs +0 -2
  359. package/esm2022/lib/offline/geoDB/geoDB.service.mjs +0 -172
  360. package/esm2022/lib/offline/geoDB/index.mjs +0 -5
  361. package/esm2022/lib/offline/index.mjs +0 -6
  362. package/esm2022/lib/offline/layerDB/index.mjs +0 -3
  363. package/esm2022/lib/offline/layerDB/layerDB.interface.mjs +0 -2
  364. package/esm2022/lib/offline/layerDB/layerDB.service.mjs +0 -83
  365. package/esm2022/lib/offline/offline.interface.mjs +0 -2
  366. package/esm2022/lib/offline/offline.provider.mjs +0 -50
  367. package/esm2022/lib/offline/shared/geo-network.service.mjs +0 -79
  368. package/esm2022/lib/offline/shared/index.mjs +0 -2
  369. package/esm2022/lib/overlay/index.mjs +0 -2
  370. package/esm2022/lib/overlay/shared/index.mjs +0 -4
  371. package/esm2022/lib/overlay/shared/overlay.enum.mjs +0 -8
  372. package/esm2022/lib/overlay/shared/overlay.mjs +0 -139
  373. package/esm2022/lib/overlay/shared/overlay.utils.mjs +0 -17
  374. package/esm2022/lib/print/index.mjs +0 -4
  375. package/esm2022/lib/print/print/print.component.mjs +0 -116
  376. package/esm2022/lib/print/print-form/index.mjs +0 -2
  377. package/esm2022/lib/print/print-form/print-form.component.mjs +0 -320
  378. package/esm2022/lib/print/print.module.mjs +0 -20
  379. package/esm2022/lib/print/shared/geopdf.mjs +0 -68
  380. package/esm2022/lib/print/shared/index.mjs +0 -5
  381. package/esm2022/lib/print/shared/print.interface.mjs +0 -2
  382. package/esm2022/lib/print/shared/print.service.mjs +0 -1136
  383. package/esm2022/lib/print/shared/print.type.mjs +0 -30
  384. package/esm2022/lib/query/index.mjs +0 -2
  385. package/esm2022/lib/query/query.module.mjs +0 -27
  386. package/esm2022/lib/query/shared/index.mjs +0 -8
  387. package/esm2022/lib/query/shared/query-search-source.mjs +0 -35
  388. package/esm2022/lib/query/shared/query-search-source.providers.mjs +0 -22
  389. package/esm2022/lib/query/shared/query.directive.mjs +0 -290
  390. package/esm2022/lib/query/shared/query.enums.mjs +0 -32
  391. package/esm2022/lib/query/shared/query.interfaces.mjs +0 -2
  392. package/esm2022/lib/query/shared/query.service.mjs +0 -753
  393. package/esm2022/lib/query/shared/query.utils.mjs +0 -45
  394. package/esm2022/lib/search/index.mjs +0 -10
  395. package/esm2022/lib/search/search-bar/search-bar.component.mjs +0 -483
  396. package/esm2022/lib/search/search-bar/search-bar.module.mjs +0 -19
  397. package/esm2022/lib/search/search-results/index.mjs +0 -5
  398. package/esm2022/lib/search/search-results/save-feature-dialog.component.mjs +0 -101
  399. package/esm2022/lib/search/search-results/search-results-add-button.component.mjs +0 -433
  400. package/esm2022/lib/search/search-results/search-results-item.component.mjs +0 -119
  401. package/esm2022/lib/search/search-results/search-results.component.mjs +0 -297
  402. package/esm2022/lib/search/search-results/search-results.directive.mjs +0 -7
  403. package/esm2022/lib/search/search-results/search-results.module.mjs +0 -20
  404. package/esm2022/lib/search/search-selector/search-selector.component.mjs +0 -118
  405. package/esm2022/lib/search/search-selector/search-selector.module.mjs +0 -19
  406. package/esm2022/lib/search/search-settings/search-settings.component.mjs +0 -264
  407. package/esm2022/lib/search/search-settings/search-settings.module.mjs +0 -19
  408. package/esm2022/lib/search/search.module.mjs +0 -77
  409. package/esm2022/lib/search/shared/index.mjs +0 -10
  410. package/esm2022/lib/search/shared/search-pointer-summary.directive.mjs +0 -328
  411. package/esm2022/lib/search/shared/search-source-service.providers.mjs +0 -20
  412. package/esm2022/lib/search/shared/search-source.service.mjs +0 -56
  413. package/esm2022/lib/search/shared/search.enums.mjs +0 -4
  414. package/esm2022/lib/search/shared/search.interfaces.mjs +0 -2
  415. package/esm2022/lib/search/shared/search.provider.mjs +0 -20
  416. package/esm2022/lib/search/shared/search.service.mjs +0 -149
  417. package/esm2022/lib/search/shared/search.utils.mjs +0 -92
  418. package/esm2022/lib/search/shared/sources/cadastre.mjs +0 -142
  419. package/esm2022/lib/search/shared/sources/cadastre.providers.mjs +0 -32
  420. package/esm2022/lib/search/shared/sources/coordinates.interfaces.mjs +0 -2
  421. package/esm2022/lib/search/shared/sources/coordinates.mjs +0 -168
  422. package/esm2022/lib/search/shared/sources/coordinates.providers.mjs +0 -52
  423. package/esm2022/lib/search/shared/sources/icherche-icons.mjs +0 -32
  424. package/esm2022/lib/search/shared/sources/icherche.interfaces.mjs +0 -2
  425. package/esm2022/lib/search/shared/sources/icherche.mjs +0 -816
  426. package/esm2022/lib/search/shared/sources/icherche.providers.mjs +0 -87
  427. package/esm2022/lib/search/shared/sources/ilayer.interfaces.mjs +0 -2
  428. package/esm2022/lib/search/shared/sources/ilayer.mjs +0 -339
  429. package/esm2022/lib/search/shared/sources/ilayer.providers.mjs +0 -58
  430. package/esm2022/lib/search/shared/sources/index.mjs +0 -23
  431. package/esm2022/lib/search/shared/sources/nominatim.interfaces.mjs +0 -2
  432. package/esm2022/lib/search/shared/sources/nominatim.mjs +0 -263
  433. package/esm2022/lib/search/shared/sources/nominatim.providers.mjs +0 -31
  434. package/esm2022/lib/search/shared/sources/source.interfaces.mjs +0 -13
  435. package/esm2022/lib/search/shared/sources/source.mjs +0 -221
  436. package/esm2022/lib/search/shared/sources/storedqueries.interfaces.mjs +0 -2
  437. package/esm2022/lib/search/shared/sources/storedqueries.mjs +0 -454
  438. package/esm2022/lib/search/shared/sources/storedqueries.providers.mjs +0 -56
  439. package/esm2022/lib/search/shared/sources/workspace.interfaces.mjs +0 -2
  440. package/esm2022/lib/search/shared/sources/workspace.mjs +0 -192
  441. package/esm2022/lib/search/shared/sources/workspace.providers.mjs +0 -31
  442. package/esm2022/lib/style/index.mjs +0 -5
  443. package/esm2022/lib/style/shared/datasource/esri-style-generator.mjs +0 -360
  444. package/esm2022/lib/style/shared/datasource/index.mjs +0 -2
  445. package/esm2022/lib/style/shared/feature/feature-style.mjs +0 -162
  446. package/esm2022/lib/style/shared/feature/index.mjs +0 -2
  447. package/esm2022/lib/style/shared/font.enum.mjs +0 -17
  448. package/esm2022/lib/style/shared/index.mjs +0 -5
  449. package/esm2022/lib/style/shared/overlay/index.mjs +0 -3
  450. package/esm2022/lib/style/shared/overlay/overlay-marker-style.utils.mjs +0 -39
  451. package/esm2022/lib/style/shared/overlay/overlay-style.utils.mjs +0 -88
  452. package/esm2022/lib/style/shared/vector/commonVectorStyle.mjs +0 -78
  453. package/esm2022/lib/style/shared/vector/conversion.utils.mjs +0 -27
  454. package/esm2022/lib/style/shared/vector/index.mjs +0 -4
  455. package/esm2022/lib/style/shared/vector/vector-style.interface.mjs +0 -2
  456. package/esm2022/lib/style/style-list/index.mjs +0 -5
  457. package/esm2022/lib/style/style-list/style-list.interface.mjs +0 -2
  458. package/esm2022/lib/style/style-list/style-list.module.mjs +0 -23
  459. package/esm2022/lib/style/style-list/style-list.provider.mjs +0 -21
  460. package/esm2022/lib/style/style-list/style-list.service.mjs +0 -52
  461. package/esm2022/lib/style/style-modal/drawing/index.mjs +0 -2
  462. package/esm2022/lib/style/style-modal/drawing/style-modal-drawing.component.mjs +0 -193
  463. package/esm2022/lib/style/style-modal/index.mjs +0 -5
  464. package/esm2022/lib/style/style-modal/layer/index.mjs +0 -2
  465. package/esm2022/lib/style/style-modal/layer/style-modal-layer.component.mjs +0 -142
  466. package/esm2022/lib/style/style-modal/layer-button/index.mjs +0 -2
  467. package/esm2022/lib/style/style-modal/layer-button/style-modal-layer-button.component.mjs +0 -44
  468. package/esm2022/lib/style/style-modal/shared/index.mjs +0 -2
  469. package/esm2022/lib/style/style-modal/shared/style-modal.interface.mjs +0 -2
  470. package/esm2022/lib/style/style-service/draw-style.service.mjs +0 -255
  471. package/esm2022/lib/style/style-service/index.mjs +0 -3
  472. package/esm2022/lib/style/style-service/style.service.mjs +0 -393
  473. package/esm2022/lib/style/style.module.mjs +0 -46
  474. package/esm2022/lib/toast/index.mjs +0 -2
  475. package/esm2022/lib/toast/toast.component.mjs +0 -99
  476. package/esm2022/lib/toast/toast.module.mjs +0 -24
  477. package/esm2022/lib/utils/googleLinks.mjs +0 -13
  478. package/esm2022/lib/utils/id-generator.mjs +0 -112
  479. package/esm2022/lib/utils/index.mjs +0 -5
  480. package/esm2022/lib/utils/osmLinks.mjs +0 -9
  481. package/esm2022/lib/utils/propertyTypeDetector/index.mjs +0 -3
  482. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.interface.mjs +0 -2
  483. package/esm2022/lib/utils/propertyTypeDetector/propertyTypeDetector.service.mjs +0 -64
  484. package/esm2022/lib/wkt/index.mjs +0 -2
  485. package/esm2022/lib/wkt/shared/index.mjs +0 -2
  486. package/esm2022/lib/wkt/shared/wkt.service.mjs +0 -235
  487. package/esm2022/lib/wkt/wkt.module.mjs +0 -25
  488. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.component.mjs +0 -36
  489. package/esm2022/lib/workspace/confirmation-popup/confirmation-popup.module.mjs +0 -19
  490. package/esm2022/lib/workspace/confirmation-popup/index.mjs +0 -3
  491. package/esm2022/lib/workspace/index.mjs +0 -8
  492. package/esm2022/lib/workspace/shared/edition-workspace.mjs +0 -301
  493. package/esm2022/lib/workspace/shared/edition-workspace.service.mjs +0 -720
  494. package/esm2022/lib/workspace/shared/feature-workspace.mjs +0 -41
  495. package/esm2022/lib/workspace/shared/feature-workspace.service.mjs +0 -113
  496. package/esm2022/lib/workspace/shared/index.mjs +0 -8
  497. package/esm2022/lib/workspace/shared/wfs-workspace.mjs +0 -41
  498. package/esm2022/lib/workspace/shared/wfs-workspace.service.mjs +0 -121
  499. package/esm2022/lib/workspace/shared/wms-workspace.service.mjs +0 -248
  500. package/esm2022/lib/workspace/shared/workspace.utils.mjs +0 -188
  501. package/esm2022/lib/workspace/widgets/index.mjs +0 -4
  502. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.component.mjs +0 -48
  503. package/esm2022/lib/workspace/widgets/ogc-filter/ogc-filter.module.mjs +0 -19
  504. package/esm2022/lib/workspace/widgets/widgets.mjs +0 -15
  505. package/esm2022/lib/workspace/workspace-selector/workspace-selector.directive.mjs +0 -172
  506. package/esm2022/lib/workspace/workspace-selector/workspace-selector.module.mjs +0 -19
  507. package/esm2022/lib/workspace/workspace-updator/workspace-updator.directive.mjs +0 -137
  508. package/esm2022/lib/workspace/workspace-updator/workspace-updator.module.mjs +0 -19
  509. package/esm2022/lib/workspace/workspace.module.mjs +0 -32
  510. package/esm2022/public_api.mjs +0 -56
@@ -1,431 +0,0 @@
1
- import olFeature from 'ol/Feature';
2
- import olGeolocation from 'ol/Geolocation';
3
- import { Point } from 'ol/geom';
4
- import OlCircle from 'ol/geom/Circle';
5
- import { fromCircle } from 'ol/geom/Polygon';
6
- import * as olproj from 'ol/proj';
7
- import * as olSphere from 'ol/sphere';
8
- import * as olstyle from 'ol/style';
9
- import { BehaviorSubject, interval } from 'rxjs';
10
- import { switchMap } from 'rxjs/operators';
11
- import { FeatureMotion } from '../../../feature/shared/feature.enums';
12
- import { computeOlFeaturesExtent, featuresAreOutOfView, hideOlFeature, moveToOlFeatures } from '../../../feature/shared/feature.utils';
13
- import { Overlay } from '../../../overlay/shared/overlay';
14
- import { MapController } from './controller';
15
- import { GeolocationOverlayType } from './geolocation.interface';
16
- /**
17
- * Controller to handle map view interactions
18
- */
19
- export class MapGeolocationController extends MapController {
20
- map;
21
- options;
22
- storageService;
23
- configService;
24
- arrowRotation;
25
- subscriptions$$ = [];
26
- geolocationOverlay;
27
- positionFeatureStyle = new olstyle.Style({
28
- image: new olstyle.Circle({
29
- radius: 6,
30
- fill: new olstyle.Fill({
31
- color: '#3399CC'
32
- }),
33
- stroke: new olstyle.Stroke({
34
- color: '#fff',
35
- width: 2
36
- })
37
- })
38
- });
39
- accuracyFeatureStyle = new olstyle.Style({
40
- stroke: new olstyle.Stroke({
41
- color: 'rgba(120, 120, 120, 0.4)',
42
- width: 1
43
- }),
44
- fill: new olstyle.Fill({
45
- color: 'rgba(120, 120, 120, 0.4)'
46
- })
47
- });
48
- get bufferStyle() {
49
- return new olstyle.Style({
50
- stroke: new olstyle.Stroke({ width: 2, color: this.buffer.bufferStroke }),
51
- fill: new olstyle.Fill({ color: this.buffer.bufferFill }),
52
- text: new olstyle.Text({
53
- textAlign: 'left',
54
- offsetX: 10,
55
- offsetY: -10,
56
- font: '12px Calibri,sans-serif',
57
- text: this.buffer.showBufferRadius
58
- ? `${this.buffer.bufferRadius}m`
59
- : '',
60
- fill: new olstyle.Fill({ color: '#000' }),
61
- stroke: new olstyle.Stroke({ color: '#fff', width: 3 })
62
- })
63
- });
64
- }
65
- get arrowStyle() {
66
- return new olstyle.Style({
67
- image: new olstyle.RegularShape({
68
- radius: 5.5,
69
- fill: new olstyle.Fill({
70
- color: 'rgba(0, 132, 202)'
71
- }),
72
- stroke: new olstyle.Stroke({
73
- color: '#fff',
74
- width: 1.5
75
- }),
76
- points: 3,
77
- displacement: [0, 9],
78
- rotation: this.arrowRotation,
79
- rotateWithView: true
80
- })
81
- });
82
- }
83
- geolocation;
84
- /**
85
- * Observable of the current emission interval of the position. In seconds
86
- */
87
- emissionIntervalSeconds$ = new BehaviorSubject(5);
88
- /**
89
- * Observable of the current position
90
- */
91
- position$ = new BehaviorSubject(undefined);
92
- /**
93
- * Observable of the tracking state
94
- */
95
- tracking$ = new BehaviorSubject(undefined);
96
- /**
97
- * Observable of the follow position state
98
- */
99
- followPosition$ = new BehaviorSubject(undefined);
100
- lastPosition;
101
- /**
102
- * Whether the geolocate should show a buffer around the current position
103
- */
104
- set buffer(value) {
105
- this._buffer = value;
106
- this.handleFeatureCreation(this.position$.value);
107
- }
108
- get buffer() {
109
- return this._buffer;
110
- }
111
- _buffer;
112
- /**
113
- * Whether the geolocate controller accuracy threshold to store/show the position.
114
- */
115
- set accuracyThreshold(value) {
116
- this._accuracyThreshold = value;
117
- this.handleFeatureCreation(this.position$.value);
118
- }
119
- get accuracyThreshold() {
120
- return this._accuracyThreshold;
121
- }
122
- _accuracyThreshold;
123
- get olGeolocation() {
124
- return this.geolocation;
125
- }
126
- /**
127
- * Whether the activate the geolocation.
128
- */
129
- get tracking() {
130
- return this.geolocation.getTracking();
131
- }
132
- set tracking(value) {
133
- this.geolocation.setTracking(value || false);
134
- this.tracking$.next(value);
135
- if (this.storageService && value !== undefined) {
136
- this.storageService.set('geolocation.tracking', value);
137
- }
138
- if (!value) {
139
- this.position$.next(undefined);
140
- }
141
- }
142
- /**
143
- * Whether the activate the view tracking of the current position
144
- */
145
- set followPosition(value) {
146
- this._followPosition = value;
147
- this.followPosition$.next(value);
148
- if (this.configService?.getConfig('geolocate.followPosition') === false) {
149
- this._followPosition = false;
150
- this.followPosition$.next(false);
151
- }
152
- this.handleFeatureCreation(this.position$.value);
153
- if (this.storageService && value !== undefined) {
154
- this.storageService.set('geolocation.followPosition', value);
155
- }
156
- }
157
- get followPosition() {
158
- return this._followPosition;
159
- }
160
- _followPosition;
161
- constructor(map, options, storageService, configService) {
162
- super();
163
- this.map = map;
164
- this.options = options;
165
- this.storageService = storageService;
166
- this.configService = configService;
167
- this.geolocationOverlay = new Overlay(this.map);
168
- this._followPosition =
169
- this.options && this.options.followPosition
170
- ? this.options.followPosition
171
- : false;
172
- this._buffer =
173
- this.options && this.options.buffer ? this.options.buffer : undefined;
174
- this._accuracyThreshold =
175
- this.options && this.options.accuracyThreshold
176
- ? this.options.accuracyThreshold
177
- : 5000;
178
- }
179
- /**
180
- * Add or remove this controller to/from a map.
181
- * @param map OL Map
182
- */
183
- setOlMap(olMap) {
184
- super.setOlMap(olMap);
185
- this.setupObservers();
186
- }
187
- deleteGeolocationFeatures() {
188
- this.deleteFeatureByType(GeolocationOverlayType.Position);
189
- this.deleteFeatureByType(GeolocationOverlayType.PositionDirection);
190
- this.deleteFeatureByType(GeolocationOverlayType.Accuracy);
191
- this.deleteFeatureByType(GeolocationOverlayType.Buffer);
192
- }
193
- setupObservers() {
194
- this.tracking$.subscribe((tracking) => {
195
- if (tracking) {
196
- this.onPositionChange(true, true);
197
- }
198
- else {
199
- this.deleteGeolocationFeatures();
200
- }
201
- });
202
- this.geolocation = new olGeolocation({
203
- // enableHighAccuracy must be set to true to have the heading value.
204
- trackingOptions: {
205
- enableHighAccuracy: true,
206
- maximumAge: 10000,
207
- timeout: 600000
208
- },
209
- projection: this.options.projection
210
- });
211
- let tracking = false;
212
- this.subscriptions$$.push(this.emissionIntervalSeconds$
213
- .pipe(switchMap((value) => interval(value * 1000)))
214
- .subscribe(() => {
215
- if (tracking === this.tracking) {
216
- this.onPositionChange(true);
217
- }
218
- else {
219
- tracking = this.tracking;
220
- this.onPositionChange(true, true);
221
- }
222
- }));
223
- this.geolocation.on('change', () => {
224
- this.onPositionChange(false, false);
225
- });
226
- }
227
- updateArrowFeatureOrientation(position) {
228
- const position4326 = olproj.transform(position.position, position.projection, 'EPSG:4326');
229
- if (!this.lastPosition) {
230
- this.lastPosition = { coordinates: position4326, dateTime: new Date() };
231
- return;
232
- }
233
- const arrowFeature = this.getFeatureByType(GeolocationOverlayType.PositionDirection);
234
- const isMoving = position?.speed > 1.25 &&
235
- this.distanceBetweenPoints(this.lastPosition.coordinates, position4326) >
236
- 0.003;
237
- if (position.accuracy <= this.accuracyThreshold && isMoving) {
238
- // Calculate the heading using current position and last recorded
239
- // because ol heading not returning right value
240
- const dx = position4326[1] - this.lastPosition.coordinates[1];
241
- const dy = position4326[0] - this.lastPosition.coordinates[0];
242
- let theta = Math.atan2(dy, dx);
243
- if (theta < 0)
244
- theta = 2 * Math.PI + theta;
245
- this.arrowRotation = theta;
246
- if (arrowFeature) {
247
- arrowFeature.setStyle(this.arrowStyle);
248
- }
249
- this.lastPosition = { coordinates: position4326, dateTime: new Date() };
250
- }
251
- else {
252
- if (arrowFeature &&
253
- new Date().getTime() - this.lastPosition.dateTime.getTime() > 3000)
254
- hideOlFeature(arrowFeature);
255
- }
256
- }
257
- /**
258
- * @returns distance in km between coord1 and coord2
259
- */
260
- distanceBetweenPoints(coord1, coord2) {
261
- return olSphere.getDistance(coord1, coord2) / 1000;
262
- }
263
- addOnChangedListener(event) {
264
- const listener = () => {
265
- event(this.geolocation);
266
- };
267
- this.geolocation.on('change', listener);
268
- return listener;
269
- }
270
- deleteChangedListener(event) {
271
- this.geolocation.un('change', event);
272
- }
273
- updateGeolocationOptions(options) {
274
- if (!options) {
275
- return;
276
- }
277
- // todo maybe a dedicated interface for geolocation should be defined instead of putting these inside the mapviewoptions?
278
- let tracking = options.geolocate;
279
- let followPosition = options.alwaysTracking;
280
- if (this.storageService) {
281
- const storedTracking = this.storageService.get('geolocation.tracking');
282
- if (storedTracking !== null && storedTracking !== undefined) {
283
- tracking = storedTracking;
284
- }
285
- const storedFollowPosition = this.storageService.get('geolocation.followPosition');
286
- if (storedFollowPosition !== null && storedFollowPosition !== undefined) {
287
- followPosition = storedFollowPosition;
288
- }
289
- }
290
- this.tracking = tracking;
291
- this.followPosition = followPosition;
292
- this.buffer = options.buffer;
293
- }
294
- /**
295
- * Teardown any observers
296
- */
297
- teardownObservers() {
298
- if (this.subscriptions$$.length) {
299
- this.subscriptions$$.map((s) => s.unsubscribe());
300
- }
301
- super.teardownObservers();
302
- }
303
- /**
304
- * On position change, get the position, show it on the map and record it.
305
- * @param emitEvent Map event
306
- */
307
- onPositionChange(emitEvent = false, zoomTo = false) {
308
- if (!this.tracking) {
309
- return;
310
- }
311
- const geolocateProperties = this.geolocation.getProperties();
312
- if (geolocateProperties.accuracy > this.accuracyThreshold) {
313
- console.warn('Poor geolocation accuracy. No position are stored/shown');
314
- this.position$.next(undefined);
315
- return;
316
- }
317
- const position = {
318
- position: geolocateProperties.position,
319
- projection: this.geolocation.getProjection().getCode(),
320
- accuracy: geolocateProperties.accuracy,
321
- altitude: geolocateProperties.altitude,
322
- altitudeAccuracy: geolocateProperties.altitudeAccuracy,
323
- heading: geolocateProperties.heading,
324
- speed: geolocateProperties.speed,
325
- enableHighAccuracy: geolocateProperties.trackingOptions
326
- ?.enableHighAccuracy
327
- ? true
328
- : false,
329
- timestamp: new Date()
330
- };
331
- this.handleFeatureCreation(position);
332
- this.handleViewFromFeatures(position, zoomTo);
333
- if (emitEvent) {
334
- this.position$.next(position);
335
- }
336
- }
337
- getFeatureByType(type) {
338
- return this.geolocationOverlay.dataSource.ol.getFeatureById(type);
339
- }
340
- deleteFeatureByType(type) {
341
- const featureById = this.geolocationOverlay?.dataSource.ol.getFeatureById(type);
342
- if (featureById) {
343
- this.geolocationOverlay.dataSource.ol.removeFeature(featureById);
344
- }
345
- }
346
- handleFeatureCreation(position) {
347
- if (!position || !position.position) {
348
- return;
349
- }
350
- const positionGeometry = new Point(position.position);
351
- const accuracyGeometry = fromCircle(new OlCircle(position.position, position.accuracy || 0));
352
- let positionFeature = this.getFeatureByType(GeolocationOverlayType.Position);
353
- let positionFeatureArrow = this.getFeatureByType(GeolocationOverlayType.PositionDirection);
354
- let accuracyFeature = this.getFeatureByType(GeolocationOverlayType.Accuracy);
355
- const positionFeatureExists = positionFeature ? true : false;
356
- const positionFeatureArrowExists = positionFeatureArrow ? true : false;
357
- const accuracyFeatureExists = accuracyFeature ? true : false;
358
- if (!positionFeatureArrowExists) {
359
- positionFeatureArrow = new olFeature({
360
- geometry: positionGeometry
361
- });
362
- positionFeatureArrow.setId(GeolocationOverlayType.PositionDirection);
363
- hideOlFeature(positionFeatureArrow);
364
- }
365
- if (!positionFeatureExists) {
366
- positionFeature = new olFeature({ geometry: positionGeometry });
367
- positionFeature.setId(GeolocationOverlayType.Position);
368
- positionFeature.setStyle(this.positionFeatureStyle);
369
- }
370
- if (!accuracyFeatureExists) {
371
- accuracyFeature = new olFeature({ geometry: accuracyGeometry });
372
- accuracyFeature.setId(GeolocationOverlayType.Accuracy);
373
- accuracyFeature.setStyle(this.accuracyFeatureStyle);
374
- }
375
- if (positionGeometry) {
376
- positionFeatureExists
377
- ? positionFeature.setGeometry(positionGeometry)
378
- : this.geolocationOverlay.addOlFeature(positionFeature, FeatureMotion.None);
379
- positionFeatureArrowExists
380
- ? positionFeatureArrow.setGeometry(positionGeometry)
381
- : this.geolocationOverlay.addOlFeature(positionFeatureArrow, FeatureMotion.None);
382
- this.updateArrowFeatureOrientation(position);
383
- accuracyFeatureExists
384
- ? accuracyFeature.setGeometry(accuracyGeometry)
385
- : this.geolocationOverlay.addOlFeature(accuracyFeature, FeatureMotion.None);
386
- if (this.buffer) {
387
- let bufferFeature = this.getFeatureByType(GeolocationOverlayType.Buffer);
388
- const bufferFeatureExists = bufferFeature ? true : false;
389
- const bufferGeometry = new OlCircle(position.position, this.buffer.bufferRadius);
390
- if (!bufferFeatureExists) {
391
- bufferFeature = new olFeature(bufferGeometry);
392
- bufferFeature.setId(GeolocationOverlayType.Buffer);
393
- bufferFeature.setStyle(this.positionFeatureStyle);
394
- }
395
- bufferFeature.setStyle(this.bufferStyle);
396
- bufferFeatureExists
397
- ? bufferFeature.setGeometry(bufferGeometry)
398
- : this.geolocationOverlay.addOlFeature(bufferFeature, FeatureMotion.None);
399
- }
400
- }
401
- }
402
- handleViewFromFeatures(position, zoomTo = false) {
403
- const positionFeature = this.getFeatureByType(GeolocationOverlayType.Position);
404
- const positionFeatureArrow = this.getFeatureByType(GeolocationOverlayType.PositionDirection);
405
- const accuracyFeature = this.getFeatureByType(GeolocationOverlayType.Accuracy);
406
- const bufferFeature = this.getFeatureByType(GeolocationOverlayType.Buffer);
407
- const features = [
408
- positionFeature,
409
- positionFeatureArrow,
410
- accuracyFeature,
411
- bufferFeature
412
- ].filter((f) => f);
413
- if (features.length > 0) {
414
- const featuresExtent = computeOlFeaturesExtent(features, this.map.viewProjection);
415
- const edgeRatios = position?.speed > 12.5
416
- ? [0.25, 0.25, 0.25, 0.25]
417
- : [0.15, 0.1, 0.1, 0.1];
418
- const areOutOfView = featuresAreOutOfView(this.map.getExtent(), featuresExtent, edgeRatios);
419
- let motion = this.followPosition && areOutOfView
420
- ? FeatureMotion.Move
421
- : FeatureMotion.None;
422
- if (zoomTo) {
423
- motion = FeatureMotion.Zoom;
424
- }
425
- motion !== FeatureMotion.None
426
- ? moveToOlFeatures(this.map.viewController, features, motion)
427
- : undefined;
428
- }
429
- }
430
- }
431
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2NvbnRyb2xsZXJzL2dlb2xvY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQztBQUNuQyxPQUFPLGFBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsS0FBSyxFQUFXLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sUUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEtBQUssTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEtBQUssT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQUUsZUFBZSxFQUFnQixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2pCLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDN0MsT0FBTyxFQUVMLHNCQUFzQixFQUd2QixNQUFNLHlCQUF5QixDQUFDO0FBRWpDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGFBQWE7SUErSi9DO0lBQ0E7SUFDQTtJQUNBO0lBaktGLGFBQWEsQ0FBUztJQUN0QixlQUFl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LFVBQVUsR0FDZCxRQUFRLEVBQUUsS0FBSyxHQUFHLElBQUk7Z0JBQ3BCLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztnQkFDMUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUIsTUFBTSxZQUFZLEdBQUcsb0JBQW9CLENBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQ3BCLGNBQWMsRUFDZCxVQUFVLENBQ1gsQ0FBQztZQUNGLElBQUksTUFBTSxHQUNSLElBQUksQ0FBQyxjQUFjLElBQUksWUFBWTtnQkFDakMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxJQUFJO2dCQUNwQixDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUN6QixJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLE1BQU0sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDO1lBQzlCLENBQUM7WUFDRCxNQUFNLEtBQUssYUFBYSxDQUFDLElBQUk7Z0JBQzNCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO2dCQUM3RCxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLWV4cHJlc3Npb25zICovXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9jb25maWcnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAaWdvMi9jb3JlL3N0b3JhZ2UnO1xuXG5pbXBvcnQgb2xGZWF0dXJlIGZyb20gJ29sL0ZlYXR1cmUnO1xuaW1wb3J0IG9sR2VvbG9jYXRpb24gZnJvbSAnb2wvR2VvbG9jYXRpb24nO1xuaW1wb3J0IE9sTWFwIGZyb20gJ29sL01hcCc7XG5pbXBvcnQgeyBQb2ludCwgUG9seWdvbiB9IGZyb20gJ29sL2dlb20nO1xuaW1wb3J0IE9sQ2lyY2xlIGZyb20gJ29sL2dlb20vQ2lyY2xlJztcbmltcG9ydCBHZW9tZXRyeSBmcm9tICdvbC9nZW9tL0dlb21ldHJ5JztcbmltcG9ydCB7IGZyb21DaXJjbGUgfSBmcm9tICdvbC9nZW9tL1BvbHlnb24nO1xuaW1wb3J0ICogYXMgb2xwcm9qIGZyb20gJ29sL3Byb2onO1xuaW1wb3J0ICogYXMgb2xTcGhlcmUgZnJvbSAnb2wvc3BoZXJlJztcbmltcG9ydCAqIGFzIG9sc3R5bGUgZnJvbSAnb2wvc3R5bGUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiwgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRmVhdHVyZU1vdGlvbiB9IGZyb20gJy4uLy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUuZW51bXMnO1xuaW1wb3J0IHtcbiAgY29tcHV0ZU9sRmVhdHVyZXNFeHRlbnQsXG4gIGZlYXR1cmVzQXJlT3V0T2ZWaWV3LFxuICBoaWRlT2xGZWF0dXJlLFxuICBtb3ZlVG9PbEZlYXR1cmVzXG59IGZyb20gJy4uLy4uLy4uL2ZlYXR1cmUvc2hhcmVkL2ZlYXR1cmUudXRpbHMnO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4uLy4uLy4uL292ZXJsYXkvc2hhcmVkL292ZXJsYXknO1xuaW1wb3J0IHR5cGUgeyBNYXBCYXNlIH0gZnJvbSAnLi4vbWFwLmFic3RyYWN0JztcbmltcG9ydCB7IE1hcFZpZXdPcHRpb25zIH0gZnJvbSAnLi4vbWFwLmludGVyZmFjZSc7XG5pbXBvcnQgeyBNYXBDb250cm9sbGVyIH0gZnJvbSAnLi9jb250cm9sbGVyJztcbmltcG9ydCB7XG4gIEdlb2xvY2F0aW9uQnVmZmVyLFxuICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLFxuICBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXJPcHRpb25zLFxuICBNYXBHZW9sb2NhdGlvblN0YXRlXG59IGZyb20gJy4vZ2VvbG9jYXRpb24uaW50ZXJmYWNlJztcblxuLyoqXG4gKiBDb250cm9sbGVyIHRvIGhhbmRsZSBtYXAgdmlldyBpbnRlcmFjdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIE1hcEdlb2xvY2F0aW9uQ29udHJvbGxlciBleHRlbmRzIE1hcENvbnRyb2xsZXIge1xuICBwcml2YXRlIGFycm93Um90YXRpb246IG51bWJlcjtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zJCQ6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgZ2VvbG9jYXRpb25PdmVybGF5OiBPdmVybGF5O1xuICBwcml2YXRlIHBvc2l0aW9uRmVhdHVyZVN0eWxlOiBvbHN0eWxlLlN0eWxlIHwgb2xzdHlsZS5TdHlsZVtdID1cbiAgICBuZXcgb2xzdHlsZS5TdHlsZSh7XG4gICAgICBpbWFnZTogbmV3IG9sc3R5bGUuQ2lyY2xlKHtcbiAgICAgICAgcmFkaXVzOiA2LFxuICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcbiAgICAgICAgICBjb2xvcjogJyMzMzk5Q0MnXG4gICAgICAgIH0pLFxuICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7XG4gICAgICAgICAgY29sb3I6ICcjZmZmJyxcbiAgICAgICAgICB3aWR0aDogMlxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9KTtcbiAgcHJpdmF0ZSBhY2N1cmFjeUZlYXR1cmVTdHlsZTogb2xzdHlsZS5TdHlsZSB8IG9sc3R5bGUuU3R5bGVbXSA9XG4gICAgbmV3IG9sc3R5bGUuU3R5bGUoe1xuICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xuICAgICAgICBjb2xvcjogJ3JnYmEoMTIwLCAxMjAsIDEyMCwgMC40KScsXG4gICAgICAgIHdpZHRoOiAxXG4gICAgICB9KSxcbiAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoe1xuICAgICAgICBjb2xvcjogJ3JnYmEoMTIwLCAxMjAsIDEyMCwgMC40KSdcbiAgICAgIH0pXG4gICAgfSk7XG5cbiAgcHJpdmF0ZSBnZXQgYnVmZmVyU3R5bGUoKTogb2xzdHlsZS5TdHlsZSB7XG4gICAgcmV0dXJuIG5ldyBvbHN0eWxlLlN0eWxlKHtcbiAgICAgIHN0cm9rZTogbmV3IG9sc3R5bGUuU3Ryb2tlKHsgd2lkdGg6IDIsIGNvbG9yOiB0aGlzLmJ1ZmZlci5idWZmZXJTdHJva2UgfSksXG4gICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHsgY29sb3I6IHRoaXMuYnVmZmVyLmJ1ZmZlckZpbGwgfSksXG4gICAgICB0ZXh0OiBuZXcgb2xzdHlsZS5UZXh0KHtcbiAgICAgICAgdGV4dEFsaWduOiAnbGVmdCcsXG4gICAgICAgIG9mZnNldFg6IDEwLFxuICAgICAgICBvZmZzZXRZOiAtMTAsXG4gICAgICAgIGZvbnQ6ICcxMnB4IENhbGlicmksc2Fucy1zZXJpZicsXG4gICAgICAgIHRleHQ6IHRoaXMuYnVmZmVyLnNob3dCdWZmZXJSYWRpdXNcbiAgICAgICAgICA/IGAke3RoaXMuYnVmZmVyLmJ1ZmZlclJhZGl1c31tYFxuICAgICAgICAgIDogJycsXG4gICAgICAgIGZpbGw6IG5ldyBvbHN0eWxlLkZpbGwoeyBjb2xvcjogJyMwMDAnIH0pLFxuICAgICAgICBzdHJva2U6IG5ldyBvbHN0eWxlLlN0cm9rZSh7IGNvbG9yOiAnI2ZmZicsIHdpZHRoOiAzIH0pXG4gICAgICB9KVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgYXJyb3dTdHlsZSgpOiBvbHN0eWxlLlN0eWxlIHtcbiAgICByZXR1cm4gbmV3IG9sc3R5bGUuU3R5bGUoe1xuICAgICAgaW1hZ2U6IG5ldyBvbHN0eWxlLlJlZ3VsYXJTaGFwZSh7XG4gICAgICAgIHJhZGl1czogNS41LFxuICAgICAgICBmaWxsOiBuZXcgb2xzdHlsZS5GaWxsKHtcbiAgICAgICAgICBjb2xvcjogJ3JnYmEoMCwgMTMyLCAyMDIpJ1xuICAgICAgICB9KSxcbiAgICAgICAgc3Ryb2tlOiBuZXcgb2xzdHlsZS5TdHJva2Uoe1xuICAgICAgICAgIGNvbG9yOiAnI2ZmZicsXG4gICAgICAgICAgd2lkdGg6IDEuNVxuICAgICAgICB9KSxcbiAgICAgICAgcG9pbnRzOiAzLFxuICAgICAgICBkaXNwbGFjZW1lbnQ6IFswLCA5XSxcbiAgICAgICAgcm90YXRpb246IHRoaXMuYXJyb3dSb3RhdGlvbixcbiAgICAgICAgcm90YXRlV2l0aFZpZXc6IHRydWVcbiAgICAgIH0pXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdlb2xvY2F0aW9uOiBvbEdlb2xvY2F0aW9uO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSBjdXJyZW50IGVtaXNzaW9uIGludGVydmFsIG9mIHRoZSBwb3NpdGlvbi4gSW4gc2Vjb25kc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVtaXNzaW9uSW50ZXJ2YWxTZWNvbmRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPig1KTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBvZiB0aGUgY3VycmVudCBwb3NpdGlvblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBvc2l0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWFwR2VvbG9jYXRpb25TdGF0ZT4oXG4gICAgdW5kZWZpbmVkXG4gICk7XG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIG9mIHRoZSB0cmFja2luZyBzdGF0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRyYWNraW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odW5kZWZpbmVkKTtcbiAgLyoqXG4gICAqIE9ic2VydmFibGUgb2YgdGhlIGZvbGxvdyBwb3NpdGlvbiBzdGF0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGZvbGxvd1Bvc2l0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIGxhc3RQb3NpdGlvbjogeyBjb29yZGluYXRlczogbnVtYmVyW107IGRhdGVUaW1lOiBEYXRlIH07XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGdlb2xvY2F0ZSBzaG91bGQgc2hvdyBhIGJ1ZmZlciBhcm91bmQgdGhlIGN1cnJlbnQgcG9zaXRpb25cbiAgICovXG4gIHNldCBidWZmZXIodmFsdWU6IEdlb2xvY2F0aW9uQnVmZmVyKSB7XG4gICAgdGhpcy5fYnVmZmVyID0gdmFsdWU7XG4gICAgdGhpcy5oYW5kbGVGZWF0dXJlQ3JlYXRpb24odGhpcy5wb3NpdGlvbiQudmFsdWUpO1xuICB9XG4gIGdldCBidWZmZXIoKTogR2VvbG9jYXRpb25CdWZmZXIge1xuICAgIHJldHVybiB0aGlzLl9idWZmZXI7XG4gIH1cbiAgcHJpdmF0ZSBfYnVmZmVyOiBHZW9sb2NhdGlvbkJ1ZmZlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZ2VvbG9jYXRlIGNvbnRyb2xsZXIgYWNjdXJhY3kgdGhyZXNob2xkIHRvIHN0b3JlL3Nob3cgdGhlIHBvc2l0aW9uLlxuICAgKi9cbiAgc2V0IGFjY3VyYWN5VGhyZXNob2xkKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9hY2N1cmFjeVRocmVzaG9sZCA9IHZhbHVlO1xuICAgIHRoaXMuaGFuZGxlRmVhdHVyZUNyZWF0aW9uKHRoaXMucG9zaXRpb24kLnZhbHVlKTtcbiAgfVxuXG4gIGdldCBhY2N1cmFjeVRocmVzaG9sZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9hY2N1cmFjeVRocmVzaG9sZDtcbiAgfVxuICBwcml2YXRlIF9hY2N1cmFjeVRocmVzaG9sZDtcblxuICBnZXQgb2xHZW9sb2NhdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5nZW9sb2NhdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhY3RpdmF0ZSB0aGUgZ2VvbG9jYXRpb24uXG4gICAqL1xuICBnZXQgdHJhY2tpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2VvbG9jYXRpb24uZ2V0VHJhY2tpbmcoKTtcbiAgfVxuXG4gIHNldCB0cmFja2luZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZ2VvbG9jYXRpb24uc2V0VHJhY2tpbmcodmFsdWUgfHwgZmFsc2UpO1xuICAgIHRoaXMudHJhY2tpbmckLm5leHQodmFsdWUpO1xuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0KCdnZW9sb2NhdGlvbi50cmFja2luZycsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgdGhpcy5wb3NpdGlvbiQubmV4dCh1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhY3RpdmF0ZSB0aGUgdmlldyB0cmFja2luZyBvZiB0aGUgY3VycmVudCBwb3NpdGlvblxuICAgKi9cbiAgc2V0IGZvbGxvd1Bvc2l0aW9uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZm9sbG93UG9zaXRpb24gPSB2YWx1ZTtcbiAgICB0aGlzLmZvbGxvd1Bvc2l0aW9uJC5uZXh0KHZhbHVlKTtcbiAgICBpZiAodGhpcy5jb25maWdTZXJ2aWNlPy5nZXRDb25maWcoJ2dlb2xvY2F0ZS5mb2xsb3dQb3NpdGlvbicpID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5fZm9sbG93UG9zaXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuZm9sbG93UG9zaXRpb24kLm5leHQoZmFsc2UpO1xuICAgIH1cbiAgICB0aGlzLmhhbmRsZUZlYXR1cmVDcmVhdGlvbih0aGlzLnBvc2l0aW9uJC52YWx1ZSk7XG4gICAgaWYgKHRoaXMuc3RvcmFnZVNlcnZpY2UgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXQoJ2dlb2xvY2F0aW9uLmZvbGxvd1Bvc2l0aW9uJywgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmb2xsb3dQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fZm9sbG93UG9zaXRpb247XG4gIH1cblxuICBwcml2YXRlIF9mb2xsb3dQb3NpdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1hcDogTWFwQmFzZSxcbiAgICBwcml2YXRlIG9wdGlvbnM/OiBNYXBHZW9sb2NhdGlvbkNvbnRyb2xsZXJPcHRpb25zLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U/OiBTdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U/OiBDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkgPSBuZXcgT3ZlcmxheSh0aGlzLm1hcCk7XG4gICAgdGhpcy5fZm9sbG93UG9zaXRpb24gPVxuICAgICAgdGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5mb2xsb3dQb3NpdGlvblxuICAgICAgICA/IHRoaXMub3B0aW9ucy5mb2xsb3dQb3NpdGlvblxuICAgICAgICA6IGZhbHNlO1xuXG4gICAgdGhpcy5fYnVmZmVyID1cbiAgICAgIHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuYnVmZmVyID8gdGhpcy5vcHRpb25zLmJ1ZmZlciA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9hY2N1cmFjeVRocmVzaG9sZCA9XG4gICAgICB0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLmFjY3VyYWN5VGhyZXNob2xkXG4gICAgICAgID8gdGhpcy5vcHRpb25zLmFjY3VyYWN5VGhyZXNob2xkXG4gICAgICAgIDogNTAwMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgb3IgcmVtb3ZlIHRoaXMgY29udHJvbGxlciB0by9mcm9tIGEgbWFwLlxuICAgKiBAcGFyYW0gbWFwIE9MIE1hcFxuICAgKi9cbiAgc2V0T2xNYXAob2xNYXA6IE9sTWFwIHwgdW5kZWZpbmVkKSB7XG4gICAgc3VwZXIuc2V0T2xNYXAob2xNYXApO1xuICAgIHRoaXMuc2V0dXBPYnNlcnZlcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlR2VvbG9jYXRpb25GZWF0dXJlcygpIHtcbiAgICB0aGlzLmRlbGV0ZUZlYXR1cmVCeVR5cGUoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbik7XG4gICAgdGhpcy5kZWxldGVGZWF0dXJlQnlUeXBlKEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuUG9zaXRpb25EaXJlY3Rpb24pO1xuICAgIHRoaXMuZGVsZXRlRmVhdHVyZUJ5VHlwZShHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkFjY3VyYWN5KTtcbiAgICB0aGlzLmRlbGV0ZUZlYXR1cmVCeVR5cGUoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5CdWZmZXIpO1xuICB9XG5cbiAgc2V0dXBPYnNlcnZlcnMoKSB7XG4gICAgdGhpcy50cmFja2luZyQuc3Vic2NyaWJlKCh0cmFja2luZykgPT4ge1xuICAgICAgaWYgKHRyYWNraW5nKSB7XG4gICAgICAgIHRoaXMub25Qb3NpdGlvbkNoYW5nZSh0cnVlLCB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGVsZXRlR2VvbG9jYXRpb25GZWF0dXJlcygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5nZW9sb2NhdGlvbiA9IG5ldyBvbEdlb2xvY2F0aW9uKHtcbiAgICAgIC8vIGVuYWJsZUhpZ2hBY2N1cmFjeSBtdXN0IGJlIHNldCB0byB0cnVlIHRvIGhhdmUgdGhlIGhlYWRpbmcgdmFsdWUuXG4gICAgICB0cmFja2luZ09wdGlvbnM6IHtcbiAgICAgICAgZW5hYmxlSGlnaEFjY3VyYWN5OiB0cnVlLFxuICAgICAgICBtYXhpbXVtQWdlOiAxMDAwMCxcbiAgICAgICAgdGltZW91dDogNjAwMDAwXG4gICAgICB9LFxuICAgICAgcHJvamVjdGlvbjogdGhpcy5vcHRpb25zLnByb2plY3Rpb25cbiAgICB9KTtcbiAgICBsZXQgdHJhY2tpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMkJC5wdXNoKFxuICAgICAgdGhpcy5lbWlzc2lvbkludGVydmFsU2Vjb25kcyRcbiAgICAgICAgLnBpcGUoc3dpdGNoTWFwKCh2YWx1ZSkgPT4gaW50ZXJ2YWwodmFsdWUgKiAxMDAwKSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGlmICh0cmFja2luZyA9PT0gdGhpcy50cmFja2luZykge1xuICAgICAgICAgICAgdGhpcy5vblBvc2l0aW9uQ2hhbmdlKHRydWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFja2luZyA9IHRoaXMudHJhY2tpbmc7XG4gICAgICAgICAgICB0aGlzLm9uUG9zaXRpb25DaGFuZ2UodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmdlb2xvY2F0aW9uLm9uKCdjaGFuZ2UnLCAoKSA9PiB7XG4gICAgICB0aGlzLm9uUG9zaXRpb25DaGFuZ2UoZmFsc2UsIGZhbHNlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZUFycm93RmVhdHVyZU9yaWVudGF0aW9uKHBvc2l0aW9uOiBNYXBHZW9sb2NhdGlvblN0YXRlKSB7XG4gICAgY29uc3QgcG9zaXRpb240MzI2ID0gb2xwcm9qLnRyYW5zZm9ybShcbiAgICAgIHBvc2l0aW9uLnBvc2l0aW9uLFxuICAgICAgcG9zaXRpb24ucHJvamVjdGlvbixcbiAgICAgICdFUFNHOjQzMjYnXG4gICAgKTtcbiAgICBpZiAoIXRoaXMubGFzdFBvc2l0aW9uKSB7XG4gICAgICB0aGlzLmxhc3RQb3NpdGlvbiA9IHsgY29vcmRpbmF0ZXM6IHBvc2l0aW9uNDMyNiwgZGF0ZVRpbWU6IG5ldyBEYXRlKCkgfTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYXJyb3dGZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbkRpcmVjdGlvblxuICAgICk7XG4gICAgY29uc3QgaXNNb3ZpbmcgPVxuICAgICAgcG9zaXRpb24/LnNwZWVkID4gMS4yNSAmJlxuICAgICAgdGhpcy5kaXN0YW5jZUJldHdlZW5Qb2ludHModGhpcy5sYXN0UG9zaXRpb24uY29vcmRpbmF0ZXMsIHBvc2l0aW9uNDMyNikgPlxuICAgICAgICAwLjAwMztcbiAgICBpZiAocG9zaXRpb24uYWNjdXJhY3kgPD0gdGhpcy5hY2N1cmFjeVRocmVzaG9sZCAmJiBpc01vdmluZykge1xuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBoZWFkaW5nIHVzaW5nIGN1cnJlbnQgcG9zaXRpb24gYW5kIGxhc3QgcmVjb3JkZWRcbiAgICAgIC8vIGJlY2F1c2Ugb2wgaGVhZGluZyBub3QgcmV0dXJuaW5nIHJpZ2h0IHZhbHVlXG4gICAgICBjb25zdCBkeCA9IHBvc2l0aW9uNDMyNlsxXSAtIHRoaXMubGFzdFBvc2l0aW9uLmNvb3JkaW5hdGVzWzFdO1xuICAgICAgY29uc3QgZHkgPSBwb3NpdGlvbjQzMjZbMF0gLSB0aGlzLmxhc3RQb3NpdGlvbi5jb29yZGluYXRlc1swXTtcbiAgICAgIGxldCB0aGV0YSA9IE1hdGguYXRhbjIoZHksIGR4KTtcbiAgICAgIGlmICh0aGV0YSA8IDApIHRoZXRhID0gMiAqIE1hdGguUEkgKyB0aGV0YTtcbiAgICAgIHRoaXMuYXJyb3dSb3RhdGlvbiA9IHRoZXRhO1xuICAgICAgaWYgKGFycm93RmVhdHVyZSkge1xuICAgICAgICBhcnJvd0ZlYXR1cmUuc2V0U3R5bGUodGhpcy5hcnJvd1N0eWxlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubGFzdFBvc2l0aW9uID0geyBjb29yZGluYXRlczogcG9zaXRpb240MzI2LCBkYXRlVGltZTogbmV3IERhdGUoKSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoXG4gICAgICAgIGFycm93RmVhdHVyZSAmJlxuICAgICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMubGFzdFBvc2l0aW9uLmRhdGVUaW1lLmdldFRpbWUoKSA+IDMwMDBcbiAgICAgIClcbiAgICAgICAgaGlkZU9sRmVhdHVyZShhcnJvd0ZlYXR1cmUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBkaXN0YW5jZSBpbiBrbSBiZXR3ZWVuIGNvb3JkMSBhbmQgY29vcmQyXG4gICAqL1xuICBwcml2YXRlIGRpc3RhbmNlQmV0d2VlblBvaW50cyhjb29yZDE6IG51bWJlcltdLCBjb29yZDI6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgICByZXR1cm4gb2xTcGhlcmUuZ2V0RGlzdGFuY2UoY29vcmQxLCBjb29yZDIpIC8gMTAwMDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRPbkNoYW5nZWRMaXN0ZW5lcihldmVudDogKGdlbzogb2xHZW9sb2NhdGlvbikgPT4gYW55KSB7XG4gICAgY29uc3QgbGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgICBldmVudCh0aGlzLmdlb2xvY2F0aW9uKTtcbiAgICB9O1xuICAgIHRoaXMuZ2VvbG9jYXRpb24ub24oJ2NoYW5nZScsIGxpc3RlbmVyKTtcbiAgICByZXR1cm4gbGlzdGVuZXI7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlQ2hhbmdlZExpc3RlbmVyKGV2ZW50OiAoKSA9PiBhbnkpIHtcbiAgICB0aGlzLmdlb2xvY2F0aW9uLnVuKCdjaGFuZ2UnLCBldmVudCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlR2VvbG9jYXRpb25PcHRpb25zKG9wdGlvbnM6IE1hcFZpZXdPcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIHRvZG8gbWF5YmUgYSBkZWRpY2F0ZWQgaW50ZXJmYWNlIGZvciBnZW9sb2NhdGlvbiBzaG91bGQgYmUgZGVmaW5lZCBpbnN0ZWFkIG9mIHB1dHRpbmcgdGhlc2UgaW5zaWRlIHRoZSBtYXB2aWV3b3B0aW9ucz9cbiAgICBsZXQgdHJhY2tpbmcgPSBvcHRpb25zLmdlb2xvY2F0ZTtcbiAgICBsZXQgZm9sbG93UG9zaXRpb24gPSBvcHRpb25zLmFsd2F5c1RyYWNraW5nO1xuICAgIGlmICh0aGlzLnN0b3JhZ2VTZXJ2aWNlKSB7XG4gICAgICBjb25zdCBzdG9yZWRUcmFja2luZyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KFxuICAgICAgICAnZ2VvbG9jYXRpb24udHJhY2tpbmcnXG4gICAgICApIGFzIGJvb2xlYW47XG4gICAgICBpZiAoc3RvcmVkVHJhY2tpbmcgIT09IG51bGwgJiYgc3RvcmVkVHJhY2tpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0cmFja2luZyA9IHN0b3JlZFRyYWNraW5nO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdG9yZWRGb2xsb3dQb3NpdGlvbiA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KFxuICAgICAgICAnZ2VvbG9jYXRpb24uZm9sbG93UG9zaXRpb24nXG4gICAgICApIGFzIGJvb2xlYW47XG4gICAgICBpZiAoc3RvcmVkRm9sbG93UG9zaXRpb24gIT09IG51bGwgJiYgc3RvcmVkRm9sbG93UG9zaXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb2xsb3dQb3NpdGlvbiA9IHN0b3JlZEZvbGxvd1Bvc2l0aW9uO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnRyYWNraW5nID0gdHJhY2tpbmc7XG4gICAgdGhpcy5mb2xsb3dQb3NpdGlvbiA9IGZvbGxvd1Bvc2l0aW9uO1xuICAgIHRoaXMuYnVmZmVyID0gb3B0aW9ucy5idWZmZXI7XG4gIH1cblxuICAvKipcbiAgICogVGVhcmRvd24gYW55IG9ic2VydmVyc1xuICAgKi9cbiAgdGVhcmRvd25PYnNlcnZlcnMoKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9ucyQkLmxlbmd0aCkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zJCQubWFwKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIH1cbiAgICBzdXBlci50ZWFyZG93bk9ic2VydmVycygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9uIHBvc2l0aW9uIGNoYW5nZSwgZ2V0IHRoZSBwb3NpdGlvbiwgc2hvdyBpdCBvbiB0aGUgbWFwIGFuZCByZWNvcmQgaXQuXG4gICAqIEBwYXJhbSBlbWl0RXZlbnQgTWFwIGV2ZW50XG4gICAqL1xuICBwcml2YXRlIG9uUG9zaXRpb25DaGFuZ2UoZW1pdEV2ZW50ID0gZmFsc2UsIHpvb21UbyA9IGZhbHNlKSB7XG4gICAgaWYgKCF0aGlzLnRyYWNraW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGdlb2xvY2F0ZVByb3BlcnRpZXMgPSB0aGlzLmdlb2xvY2F0aW9uLmdldFByb3BlcnRpZXMoKTtcblxuICAgIGlmIChnZW9sb2NhdGVQcm9wZXJ0aWVzLmFjY3VyYWN5ID4gdGhpcy5hY2N1cmFjeVRocmVzaG9sZCkge1xuICAgICAgY29uc29sZS53YXJuKCdQb29yIGdlb2xvY2F0aW9uIGFjY3VyYWN5LiBObyBwb3NpdGlvbiBhcmUgc3RvcmVkL3Nob3duJyk7XG4gICAgICB0aGlzLnBvc2l0aW9uJC5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcG9zaXRpb246IE1hcEdlb2xvY2F0aW9uU3RhdGUgPSB7XG4gICAgICBwb3NpdGlvbjogZ2VvbG9jYXRlUHJvcGVydGllcy5wb3NpdGlvbixcbiAgICAgIHByb2plY3Rpb246IHRoaXMuZ2VvbG9jYXRpb24uZ2V0UHJvamVjdGlvbigpLmdldENvZGUoKSxcbiAgICAgIGFjY3VyYWN5OiBnZW9sb2NhdGVQcm9wZXJ0aWVzLmFjY3VyYWN5LFxuICAgICAgYWx0aXR1ZGU6IGdlb2xvY2F0ZVByb3BlcnRpZXMuYWx0aXR1ZGUsXG4gICAgICBhbHRpdHVkZUFjY3VyYWN5OiBnZW9sb2NhdGVQcm9wZXJ0aWVzLmFsdGl0dWRlQWNjdXJhY3ksXG4gICAgICBoZWFkaW5nOiBnZW9sb2NhdGVQcm9wZXJ0aWVzLmhlYWRpbmcsXG4gICAgICBzcGVlZDogZ2VvbG9jYXRlUHJvcGVydGllcy5zcGVlZCxcbiAgICAgIGVuYWJsZUhpZ2hBY2N1cmFjeTogZ2VvbG9jYXRlUHJvcGVydGllcy50cmFja2luZ09wdGlvbnNcbiAgICAgICAgPy5lbmFibGVIaWdoQWNjdXJhY3lcbiAgICAgICAgPyB0cnVlXG4gICAgICAgIDogZmFsc2UsXG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKClcbiAgICB9O1xuICAgIHRoaXMuaGFuZGxlRmVhdHVyZUNyZWF0aW9uKHBvc2l0aW9uKTtcbiAgICB0aGlzLmhhbmRsZVZpZXdGcm9tRmVhdHVyZXMocG9zaXRpb24sIHpvb21Ubyk7XG4gICAgaWYgKGVtaXRFdmVudCkge1xuICAgICAgdGhpcy5wb3NpdGlvbiQubmV4dChwb3NpdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRGZWF0dXJlQnlUeXBlKHR5cGU6IEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUpOiBvbEZlYXR1cmU8R2VvbWV0cnk+IHtcbiAgICByZXR1cm4gdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkuZGF0YVNvdXJjZS5vbC5nZXRGZWF0dXJlQnlJZCh0eXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlRmVhdHVyZUJ5VHlwZSh0eXBlOiBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlKSB7XG4gICAgY29uc3QgZmVhdHVyZUJ5SWQgPVxuICAgICAgdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXk/LmRhdGFTb3VyY2Uub2wuZ2V0RmVhdHVyZUJ5SWQodHlwZSk7XG4gICAgaWYgKGZlYXR1cmVCeUlkKSB7XG4gICAgICB0aGlzLmdlb2xvY2F0aW9uT3ZlcmxheS5kYXRhU291cmNlLm9sLnJlbW92ZUZlYXR1cmUoZmVhdHVyZUJ5SWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRmVhdHVyZUNyZWF0aW9uKHBvc2l0aW9uOiBNYXBHZW9sb2NhdGlvblN0YXRlKSB7XG4gICAgaWYgKCFwb3NpdGlvbiB8fCAhcG9zaXRpb24ucG9zaXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcG9zaXRpb25HZW9tZXRyeSA9IG5ldyBQb2ludChwb3NpdGlvbi5wb3NpdGlvbik7XG4gICAgY29uc3QgYWNjdXJhY3lHZW9tZXRyeSA9IGZyb21DaXJjbGUoXG4gICAgICBuZXcgT2xDaXJjbGUocG9zaXRpb24ucG9zaXRpb24sIHBvc2l0aW9uLmFjY3VyYWN5IHx8IDApXG4gICAgKTtcbiAgICBsZXQgcG9zaXRpb25GZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvblxuICAgICk7XG4gICAgbGV0IHBvc2l0aW9uRmVhdHVyZUFycm93ID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbkRpcmVjdGlvblxuICAgICk7XG4gICAgbGV0IGFjY3VyYWN5RmVhdHVyZSA9IHRoaXMuZ2V0RmVhdHVyZUJ5VHlwZShcbiAgICAgIEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuQWNjdXJhY3lcbiAgICApO1xuICAgIGNvbnN0IHBvc2l0aW9uRmVhdHVyZUV4aXN0cyA9IHBvc2l0aW9uRmVhdHVyZSA/IHRydWUgOiBmYWxzZTtcbiAgICBjb25zdCBwb3NpdGlvbkZlYXR1cmVBcnJvd0V4aXN0cyA9IHBvc2l0aW9uRmVhdHVyZUFycm93ID8gdHJ1ZSA6IGZhbHNlO1xuICAgIGNvbnN0IGFjY3VyYWN5RmVhdHVyZUV4aXN0cyA9IGFjY3VyYWN5RmVhdHVyZSA/IHRydWUgOiBmYWxzZTtcbiAgICBpZiAoIXBvc2l0aW9uRmVhdHVyZUFycm93RXhpc3RzKSB7XG4gICAgICBwb3NpdGlvbkZlYXR1cmVBcnJvdyA9IG5ldyBvbEZlYXR1cmU8UG9pbnQ+KHtcbiAgICAgICAgZ2VvbWV0cnk6IHBvc2l0aW9uR2VvbWV0cnlcbiAgICAgIH0pO1xuICAgICAgcG9zaXRpb25GZWF0dXJlQXJyb3cuc2V0SWQoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbkRpcmVjdGlvbik7XG4gICAgICBoaWRlT2xGZWF0dXJlKHBvc2l0aW9uRmVhdHVyZUFycm93KTtcbiAgICB9XG4gICAgaWYgKCFwb3NpdGlvbkZlYXR1cmVFeGlzdHMpIHtcbiAgICAgIHBvc2l0aW9uRmVhdHVyZSA9IG5ldyBvbEZlYXR1cmU8UG9pbnQ+KHsgZ2VvbWV0cnk6IHBvc2l0aW9uR2VvbWV0cnkgfSk7XG4gICAgICBwb3NpdGlvbkZlYXR1cmUuc2V0SWQoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvbik7XG4gICAgICBwb3NpdGlvbkZlYXR1cmUuc2V0U3R5bGUodGhpcy5wb3NpdGlvbkZlYXR1cmVTdHlsZSk7XG4gICAgfVxuICAgIGlmICghYWNjdXJhY3lGZWF0dXJlRXhpc3RzKSB7XG4gICAgICBhY2N1cmFjeUZlYXR1cmUgPSBuZXcgb2xGZWF0dXJlPFBvbHlnb24+KHsgZ2VvbWV0cnk6IGFjY3VyYWN5R2VvbWV0cnkgfSk7XG4gICAgICBhY2N1cmFjeUZlYXR1cmUuc2V0SWQoR2VvbG9jYXRpb25PdmVybGF5VHlwZS5BY2N1cmFjeSk7XG4gICAgICBhY2N1cmFjeUZlYXR1cmUuc2V0U3R5bGUodGhpcy5hY2N1cmFjeUZlYXR1cmVTdHlsZSk7XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uR2VvbWV0cnkpIHtcbiAgICAgIHBvc2l0aW9uRmVhdHVyZUV4aXN0c1xuICAgICAgICA/IHBvc2l0aW9uRmVhdHVyZS5zZXRHZW9tZXRyeShwb3NpdGlvbkdlb21ldHJ5KVxuICAgICAgICA6IHRoaXMuZ2VvbG9jYXRpb25PdmVybGF5LmFkZE9sRmVhdHVyZShcbiAgICAgICAgICAgIHBvc2l0aW9uRmVhdHVyZSxcbiAgICAgICAgICAgIEZlYXR1cmVNb3Rpb24uTm9uZVxuICAgICAgICAgICk7XG4gICAgICBwb3NpdGlvbkZlYXR1cmVBcnJvd0V4aXN0c1xuICAgICAgICA/IHBvc2l0aW9uRmVhdHVyZUFycm93LnNldEdlb21ldHJ5KHBvc2l0aW9uR2VvbWV0cnkpXG4gICAgICAgIDogdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkuYWRkT2xGZWF0dXJlKFxuICAgICAgICAgICAgcG9zaXRpb25GZWF0dXJlQXJyb3csXG4gICAgICAgICAgICBGZWF0dXJlTW90aW9uLk5vbmVcbiAgICAgICAgICApO1xuICAgICAgdGhpcy51cGRhdGVBcnJvd0ZlYXR1cmVPcmllbnRhdGlvbihwb3NpdGlvbik7XG4gICAgICBhY2N1cmFjeUZlYXR1cmVFeGlzdHNcbiAgICAgICAgPyBhY2N1cmFjeUZlYXR1cmUuc2V0R2VvbWV0cnkoYWNjdXJhY3lHZW9tZXRyeSlcbiAgICAgICAgOiB0aGlzLmdlb2xvY2F0aW9uT3ZlcmxheS5hZGRPbEZlYXR1cmUoXG4gICAgICAgICAgICBhY2N1cmFjeUZlYXR1cmUsXG4gICAgICAgICAgICBGZWF0dXJlTW90aW9uLk5vbmVcbiAgICAgICAgICApO1xuXG4gICAgICBpZiAodGhpcy5idWZmZXIpIHtcbiAgICAgICAgbGV0IGJ1ZmZlckZlYXR1cmUgPSB0aGlzLmdldEZlYXR1cmVCeVR5cGUoXG4gICAgICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5CdWZmZXJcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYnVmZmVyRmVhdHVyZUV4aXN0cyA9IGJ1ZmZlckZlYXR1cmUgPyB0cnVlIDogZmFsc2U7XG4gICAgICAgIGNvbnN0IGJ1ZmZlckdlb21ldHJ5ID0gbmV3IE9sQ2lyY2xlKFxuICAgICAgICAgIHBvc2l0aW9uLnBvc2l0aW9uLFxuICAgICAgICAgIHRoaXMuYnVmZmVyLmJ1ZmZlclJhZGl1c1xuICAgICAgICApO1xuICAgICAgICBpZiAoIWJ1ZmZlckZlYXR1cmVFeGlzdHMpIHtcbiAgICAgICAgICBidWZmZXJGZWF0dXJlID0gbmV3IG9sRmVhdHVyZShidWZmZXJHZW9tZXRyeSk7XG4gICAgICAgICAgYnVmZmVyRmVhdHVyZS5zZXRJZChHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkJ1ZmZlcik7XG4gICAgICAgICAgYnVmZmVyRmVhdHVyZS5zZXRTdHlsZSh0aGlzLnBvc2l0aW9uRmVhdHVyZVN0eWxlKTtcbiAgICAgICAgfVxuICAgICAgICBidWZmZXJGZWF0dXJlLnNldFN0eWxlKHRoaXMuYnVmZmVyU3R5bGUpO1xuICAgICAgICBidWZmZXJGZWF0dXJlRXhpc3RzXG4gICAgICAgICAgPyBidWZmZXJGZWF0dXJlLnNldEdlb21ldHJ5KGJ1ZmZlckdlb21ldHJ5KVxuICAgICAgICAgIDogdGhpcy5nZW9sb2NhdGlvbk92ZXJsYXkuYWRkT2xGZWF0dXJlKFxuICAgICAgICAgICAgICBidWZmZXJGZWF0dXJlLFxuICAgICAgICAgICAgICBGZWF0dXJlTW90aW9uLk5vbmVcbiAgICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGhhbmRsZVZpZXdGcm9tRmVhdHVyZXMocG9zaXRpb246IE1hcEdlb2xvY2F0aW9uU3RhdGUsIHpvb21UbyA9IGZhbHNlKSB7XG4gICAgY29uc3QgcG9zaXRpb25GZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKFxuICAgICAgR2VvbG9jYXRpb25PdmVybGF5VHlwZS5Qb3NpdGlvblxuICAgICk7XG4gICAgY29uc3QgcG9zaXRpb25GZWF0dXJlQXJyb3cgPSB0aGlzLmdldEZlYXR1cmVCeVR5cGUoXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLlBvc2l0aW9uRGlyZWN0aW9uXG4gICAgKTtcbiAgICBjb25zdCBhY2N1cmFjeUZlYXR1cmUgPSB0aGlzLmdldEZlYXR1cmVCeVR5cGUoXG4gICAgICBHZW9sb2NhdGlvbk92ZXJsYXlUeXBlLkFjY3VyYWN5XG4gICAgKTtcbiAgICBjb25zdCBidWZmZXJGZWF0dXJlID0gdGhpcy5nZXRGZWF0dXJlQnlUeXBlKEdlb2xvY2F0aW9uT3ZlcmxheVR5cGUuQnVmZmVyKTtcbiAgICBjb25zdCBmZWF0dXJlcyA9IFtcbiAgICAgIHBvc2l0aW9uRmVhdHVyZSxcbiAgICAgIHBvc2l0aW9uRmVhdHVyZUFycm93LFxuICAgICAgYWNjdXJhY3lGZWF0dXJlLFxuICAgICAgYnVmZmVyRmVhdHVyZVxuICAgIF0uZmlsdGVyKChmKSA9PiBmKTtcbiAgICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmVhdHVyZXNFeHRlbnQgPSBjb21wdXRlT2xGZWF0dXJlc0V4dGVudChcbiAgICAgICAgZmVhdHVyZXMsXG4gICAgICAgIHRoaXMubWFwLnZpZXdQcm9qZWN0aW9uXG4gICAgICApO1xuICAgICAgY29uc3QgZWRnZVJhdGlvcyA9XG4gICAgICAgIHBvc2l0aW9uPy5zcGVlZCA+IDEyLjVcbiAgICAgICAgICA/IFswLjI1LCAwLjI1LCAwLjI1LCAwLjI1XVxuICAgICAgICAgIDogWzAuMTUsIDAuMSwgMC4xLCAwLjFdO1xuICAgICAgY29uc3QgYXJlT3V0T2ZWaWV3ID0gZmVhdHVyZXNBcmVPdXRPZlZpZXcoXG4gICAgICAgIHRoaXMubWFwLmdldEV4dGVudCgpLFxuICAgICAgICBmZWF0dXJlc0V4dGVudCxcbiAgICAgICAgZWRnZVJhdGlvc1xuICAgICAgKTtcbiAgICAgIGxldCBtb3Rpb24gPVxuICAgICAgICB0aGlzLmZvbGxvd1Bvc2l0aW9uICYmIGFyZU91dE9mVmlld1xuICAgICAgICAgID8gRmVhdHVyZU1vdGlvbi5Nb3ZlXG4gICAgICAgICAgOiBGZWF0dXJlTW90aW9uLk5vbmU7XG4gICAgICBpZiAoem9vbVRvKSB7XG4gICAgICAgIG1vdGlvbiA9IEZlYXR1cmVNb3Rpb24uWm9vbTtcbiAgICAgIH1cbiAgICAgIG1vdGlvbiAhPT0gRmVhdHVyZU1vdGlvbi5Ob25lXG4gICAgICAgID8gbW92ZVRvT2xGZWF0dXJlcyh0aGlzLm1hcC52aWV3Q29udHJvbGxlciwgZmVhdHVyZXMsIG1vdGlvbilcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,5 +0,0 @@
1
- export * from './controller';
2
- export * from './geolocation';
3
- export * from './geolocation.interface';
4
- export * from './view';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9nZW8vc3JjL2xpYi9tYXAvc2hhcmVkL2NvbnRyb2xsZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbnRyb2xsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9nZW9sb2NhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2dlb2xvY2F0aW9uLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZpZXcnO1xuIl19