@artstesh/maps 6.1.16 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/dist/fesm2022/maps-components-src-map.mjs +433 -484
  2. package/dist/fesm2022/maps-components-src-map.mjs.map +1 -1
  3. package/dist/fesm2022/maps-components.mjs +433 -484
  4. package/dist/fesm2022/maps-components.mjs.map +1 -1
  5. package/dist/map/common/destructible.component.d.ts +1 -1
  6. package/dist/map/helpers/text-style.helper.d.ts +1 -1
  7. package/dist/map/map-plate/controls/map-control-zoom/map-control-zoom.component.d.ts +1 -1
  8. package/dist/map/map-plate/features/markers/markers.component.d.ts +1 -1
  9. package/dist/map/map-plate/features/polygons/polygons.component.d.ts +1 -1
  10. package/dist/map/map-plate/layers/cluster-layer/cluster-layer.component.d.ts +1 -1
  11. package/dist/map/map-plate/layers/feature-layer/feature-layer.component.d.ts +1 -1
  12. package/dist/map/map-plate/layers/image-layer/image-layer.component.d.ts +1 -1
  13. package/dist/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.d.ts +1 -1
  14. package/dist/map/map-plate/layers/raster-tile/raster-tile-layer.component.d.ts +1 -1
  15. package/dist/map/map-plate/layers/tile-layer/tile-layer.component.d.ts +1 -1
  16. package/dist/map/map-plate/map-plate.component.d.ts +3 -2
  17. package/dist/map/map-plate/tooltips/tooltip/tooltip.component.d.ts +3 -2
  18. package/dist/map/messages/executors/generate-zoom-control.executor.d.ts +2 -2
  19. package/dist/map/models/map-settings.d.ts +1 -1
  20. package/dist/map/public-api.d.ts +0 -1
  21. package/dist/map/services/map-click.service.d.ts +1 -1
  22. package/dist/src/map/common/destructible.component.d.ts +1 -1
  23. package/dist/src/map/helpers/text-style.helper.d.ts +1 -1
  24. package/dist/src/map/map-plate/controls/map-control-zoom/map-control-zoom.component.d.ts +1 -1
  25. package/dist/src/map/map-plate/features/markers/markers.component.d.ts +1 -1
  26. package/dist/src/map/map-plate/features/polygons/polygons.component.d.ts +1 -1
  27. package/dist/src/map/map-plate/layers/cluster-layer/cluster-layer.component.d.ts +1 -1
  28. package/dist/src/map/map-plate/layers/feature-layer/feature-layer.component.d.ts +1 -1
  29. package/dist/src/map/map-plate/layers/image-layer/image-layer.component.d.ts +1 -1
  30. package/dist/src/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.d.ts +1 -1
  31. package/dist/src/map/map-plate/layers/raster-tile/raster-tile-layer.component.d.ts +1 -1
  32. package/dist/src/map/map-plate/layers/tile-layer/tile-layer.component.d.ts +1 -1
  33. package/dist/src/map/map-plate/map-plate.component.d.ts +3 -2
  34. package/dist/src/map/map-plate/tooltips/tooltip/tooltip.component.d.ts +3 -2
  35. package/dist/src/map/messages/executors/generate-zoom-control.executor.d.ts +2 -2
  36. package/dist/src/map/models/map-settings.d.ts +1 -1
  37. package/dist/src/map/public-api.d.ts +0 -1
  38. package/dist/src/map/services/map-click.service.d.ts +1 -1
  39. package/package.json +26 -26
  40. package/dist/esm2022/map/common/destructible.component.mjs +0 -18
  41. package/dist/esm2022/map/common/id.generator.mjs +0 -14
  42. package/dist/esm2022/map/helpers/index.mjs +0 -5
  43. package/dist/esm2022/map/helpers/marker-style.helper.mjs +0 -55
  44. package/dist/esm2022/map/helpers/polygon-style.helper.mjs +0 -54
  45. package/dist/esm2022/map/helpers/stringify-feature.helper.mjs +0 -61
  46. package/dist/esm2022/map/helpers/text-style.helper.mjs +0 -33
  47. package/dist/esm2022/map/map-plate/controls/index.mjs +0 -3
  48. package/dist/esm2022/map/map-plate/controls/map-control-zoom/map-control-zoom.component.mjs +0 -69
  49. package/dist/esm2022/map/map-plate/controls/map-control-zoom/zoom-control.factory.mjs +0 -13
  50. package/dist/esm2022/map/map-plate/controls/map-control-zoom/zoom-control.settings.mjs +0 -116
  51. package/dist/esm2022/map/map-plate/features/index.mjs +0 -3
  52. package/dist/esm2022/map/map-plate/features/markers/markers.component.mjs +0 -52
  53. package/dist/esm2022/map/map-plate/features/polygons/polygons.component.mjs +0 -56
  54. package/dist/esm2022/map/map-plate/layers/cluster-layer/cluster-layer-factory.service.mjs +0 -59
  55. package/dist/esm2022/map/map-plate/layers/cluster-layer/cluster-layer.component.mjs +0 -60
  56. package/dist/esm2022/map/map-plate/layers/cluster-layer/cluster-layer.manager.mjs +0 -38
  57. package/dist/esm2022/map/map-plate/layers/cluster-layer/cluster-layer.settings.mjs +0 -145
  58. package/dist/esm2022/map/map-plate/layers/feature-layer/feature-layer.component.mjs +0 -52
  59. package/dist/esm2022/map/map-plate/layers/feature-layer/feature-layer.factory.mjs +0 -28
  60. package/dist/esm2022/map/map-plate/layers/feature-layer/feature-layer.settings.mjs +0 -139
  61. package/dist/esm2022/map/map-plate/layers/image-layer/image-layer-factory.mjs +0 -26
  62. package/dist/esm2022/map/map-plate/layers/image-layer/image-layer.component.mjs +0 -52
  63. package/dist/esm2022/map/map-plate/layers/image-layer/image-layer.settings.mjs +0 -134
  64. package/dist/esm2022/map/map-plate/layers/index.mjs +0 -12
  65. package/dist/esm2022/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.mjs +0 -67
  66. package/dist/esm2022/map/map-plate/layers/raster-tile/raster-tile-layer.component.mjs +0 -52
  67. package/dist/esm2022/map/map-plate/layers/raster-tile/raster-tile-layer.factory.mjs +0 -74
  68. package/dist/esm2022/map/map-plate/layers/raster-tile/raster-tile-layer.settings.mjs +0 -165
  69. package/dist/esm2022/map/map-plate/layers/tile-layer/tile-layer.component.mjs +0 -52
  70. package/dist/esm2022/map/map-plate/layers/tile-layer/tile-layer.factory.mjs +0 -68
  71. package/dist/esm2022/map/map-plate/layers/tile-layer/tile-layer.settings.mjs +0 -139
  72. package/dist/esm2022/map/map-plate/map-plate.component.mjs +0 -121
  73. package/dist/esm2022/map/map-plate/map-plate.factory.service.mjs +0 -29
  74. package/dist/esm2022/map/map-plate/tooltips/index.mjs +0 -3
  75. package/dist/esm2022/map/map-plate/tooltips/tooltip/tooltip.component.mjs +0 -81
  76. package/dist/esm2022/map/map-plate/tooltips/tooltip/tooltip.settings.mjs +0 -31
  77. package/dist/esm2022/map/map.module.mjs +0 -73
  78. package/dist/esm2022/map/messages/commands/add-control.command.mjs +0 -18
  79. package/dist/esm2022/map/messages/commands/add-image-layer.command.mjs +0 -10
  80. package/dist/esm2022/map/messages/commands/add-layer.command.mjs +0 -10
  81. package/dist/esm2022/map/messages/commands/add-raster-tile-command.mjs +0 -10
  82. package/dist/esm2022/map/messages/commands/add-tile.command.mjs +0 -10
  83. package/dist/esm2022/map/messages/commands/cancel-drawing.command.mjs +0 -8
  84. package/dist/esm2022/map/messages/commands/cancel-feature-modification.command.mjs +0 -8
  85. package/dist/esm2022/map/messages/commands/close-tooltip.command.mjs +0 -18
  86. package/dist/esm2022/map/messages/commands/draw-selection-area.command.mjs +0 -26
  87. package/dist/esm2022/map/messages/commands/fit-to-features.command.mjs +0 -12
  88. package/dist/esm2022/map/messages/commands/fit-to-polygons.command.mjs +0 -22
  89. package/dist/esm2022/map/messages/commands/modify-feature.command.mjs +0 -31
  90. package/dist/esm2022/map/messages/commands/place-layer-features.command.mjs +0 -12
  91. package/dist/esm2022/map/messages/commands/remove-control.command.mjs +0 -23
  92. package/dist/esm2022/map/messages/commands/remove-image-layer.command.mjs +0 -10
  93. package/dist/esm2022/map/messages/commands/remove-layer.command.mjs +0 -10
  94. package/dist/esm2022/map/messages/commands/remove-raster-tile.command.mjs +0 -10
  95. package/dist/esm2022/map/messages/commands/remove-tile.command.mjs +0 -10
  96. package/dist/esm2022/map/messages/commands/set-map-center.command.mjs +0 -23
  97. package/dist/esm2022/map/messages/commands/start-drawing.command.mjs +0 -25
  98. package/dist/esm2022/map/messages/events/drawing-finished.event.mjs +0 -5
  99. package/dist/esm2022/map/messages/events/map-click.event.mjs +0 -27
  100. package/dist/esm2022/map/messages/events/map-feature-hovered.event.mjs +0 -23
  101. package/dist/esm2022/map/messages/events/map-move-end.event.mjs +0 -16
  102. package/dist/esm2022/map/messages/events/map-pointer-move.event.mjs +0 -21
  103. package/dist/esm2022/map/messages/events/map-rendered.event.mjs +0 -18
  104. package/dist/esm2022/map/messages/executors/calculate-area.executor.mjs +0 -17
  105. package/dist/esm2022/map/messages/executors/filter-features-in-area.executor.mjs +0 -20
  106. package/dist/esm2022/map/messages/executors/filter-features-in-point.executor.mjs +0 -28
  107. package/dist/esm2022/map/messages/executors/generate-draw.executor.mjs +0 -14
  108. package/dist/esm2022/map/messages/executors/generate-zoom-control.executor.mjs +0 -10
  109. package/dist/esm2022/map/messages/executors/get-geometry-length.executor.mjs +0 -18
  110. package/dist/esm2022/map/messages/executors/get-map-position.executor.mjs +0 -13
  111. package/dist/esm2022/map/messages/executors/polygon-self-intersection.executor.mjs +0 -10
  112. package/dist/esm2022/map/messages/index.mjs +0 -25
  113. package/dist/esm2022/map/messages/queries/get-features-in-area.query.mjs +0 -22
  114. package/dist/esm2022/map/messages/queries/get-features-in-point.query.mjs +0 -25
  115. package/dist/esm2022/map/messages/queries/get-layer.query.mjs +0 -10
  116. package/dist/esm2022/map/models/drawing-type.enum.mjs +0 -22
  117. package/dist/esm2022/map/models/feature-format.enum.mjs +0 -15
  118. package/dist/esm2022/map/models/i-identified.mjs +0 -2
  119. package/dist/esm2022/map/models/index.mjs +0 -10
  120. package/dist/esm2022/map/models/map-control.mjs +0 -15
  121. package/dist/esm2022/map/models/map-lyrs.enum.mjs +0 -19
  122. package/dist/esm2022/map/models/map-position.model.mjs +0 -2
  123. package/dist/esm2022/map/models/map-settings.mjs +0 -124
  124. package/dist/esm2022/map/models/map.constants.mjs +0 -6
  125. package/dist/esm2022/map/models/marker-model.mjs +0 -29
  126. package/dist/esm2022/map/models/polygon.model.mjs +0 -40
  127. package/dist/esm2022/map/ol-proxy.mjs +0 -6
  128. package/dist/esm2022/map/public-api.mjs +0 -17
  129. package/dist/esm2022/map/services/controls/controls.service.mjs +0 -37
  130. package/dist/esm2022/map/services/drawing/drawing-generation.service.mjs +0 -25
  131. package/dist/esm2022/map/services/drawing/drawing.service.mjs +0 -99
  132. package/dist/esm2022/map/services/drawing/feature-modification.service.mjs +0 -105
  133. package/dist/esm2022/map/services/feature.service.mjs +0 -77
  134. package/dist/esm2022/map/services/map-click.service.mjs +0 -55
  135. package/dist/esm2022/map/services/map-feature.service.mjs +0 -75
  136. package/dist/esm2022/map/services/map-management.service.mjs +0 -143
  137. package/dist/esm2022/map/services/map-postboy.service.mjs +0 -14
  138. package/dist/esm2022/map/services/map-state.service.mjs +0 -48
  139. package/dist/esm2022/map/services/message-registrator.service.mjs +0 -105
  140. package/dist/esm2022/maps-components.mjs +0 -5
  141. package/dist/esm2022/public-api.mjs +0 -5
  142. package/dist/esm2022/src/map/common/destructible.component.mjs +0 -18
  143. package/dist/esm2022/src/map/common/id.generator.mjs +0 -14
  144. package/dist/esm2022/src/map/helpers/index.mjs +0 -5
  145. package/dist/esm2022/src/map/helpers/marker-style.helper.mjs +0 -55
  146. package/dist/esm2022/src/map/helpers/polygon-style.helper.mjs +0 -54
  147. package/dist/esm2022/src/map/helpers/stringify-feature.helper.mjs +0 -61
  148. package/dist/esm2022/src/map/helpers/text-style.helper.mjs +0 -33
  149. package/dist/esm2022/src/map/map-plate/controls/index.mjs +0 -3
  150. package/dist/esm2022/src/map/map-plate/controls/map-control-zoom/map-control-zoom.component.mjs +0 -69
  151. package/dist/esm2022/src/map/map-plate/controls/map-control-zoom/zoom-control.factory.mjs +0 -13
  152. package/dist/esm2022/src/map/map-plate/controls/map-control-zoom/zoom-control.settings.mjs +0 -116
  153. package/dist/esm2022/src/map/map-plate/features/index.mjs +0 -3
  154. package/dist/esm2022/src/map/map-plate/features/markers/markers.component.mjs +0 -52
  155. package/dist/esm2022/src/map/map-plate/features/polygons/polygons.component.mjs +0 -56
  156. package/dist/esm2022/src/map/map-plate/layers/cluster-layer/cluster-layer-factory.service.mjs +0 -59
  157. package/dist/esm2022/src/map/map-plate/layers/cluster-layer/cluster-layer.component.mjs +0 -60
  158. package/dist/esm2022/src/map/map-plate/layers/cluster-layer/cluster-layer.manager.mjs +0 -38
  159. package/dist/esm2022/src/map/map-plate/layers/cluster-layer/cluster-layer.settings.mjs +0 -145
  160. package/dist/esm2022/src/map/map-plate/layers/feature-layer/feature-layer.component.mjs +0 -52
  161. package/dist/esm2022/src/map/map-plate/layers/feature-layer/feature-layer.factory.mjs +0 -28
  162. package/dist/esm2022/src/map/map-plate/layers/feature-layer/feature-layer.settings.mjs +0 -139
  163. package/dist/esm2022/src/map/map-plate/layers/image-layer/image-layer-factory.mjs +0 -26
  164. package/dist/esm2022/src/map/map-plate/layers/image-layer/image-layer.component.mjs +0 -52
  165. package/dist/esm2022/src/map/map-plate/layers/image-layer/image-layer.settings.mjs +0 -134
  166. package/dist/esm2022/src/map/map-plate/layers/index.mjs +0 -12
  167. package/dist/esm2022/src/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.mjs +0 -67
  168. package/dist/esm2022/src/map/map-plate/layers/raster-tile/raster-tile-layer.component.mjs +0 -52
  169. package/dist/esm2022/src/map/map-plate/layers/raster-tile/raster-tile-layer.factory.mjs +0 -74
  170. package/dist/esm2022/src/map/map-plate/layers/raster-tile/raster-tile-layer.settings.mjs +0 -165
  171. package/dist/esm2022/src/map/map-plate/layers/tile-layer/tile-layer.component.mjs +0 -52
  172. package/dist/esm2022/src/map/map-plate/layers/tile-layer/tile-layer.factory.mjs +0 -68
  173. package/dist/esm2022/src/map/map-plate/layers/tile-layer/tile-layer.settings.mjs +0 -139
  174. package/dist/esm2022/src/map/map-plate/map-plate.component.mjs +0 -121
  175. package/dist/esm2022/src/map/map-plate/map-plate.factory.service.mjs +0 -29
  176. package/dist/esm2022/src/map/map-plate/tooltips/index.mjs +0 -3
  177. package/dist/esm2022/src/map/map-plate/tooltips/tooltip/tooltip.component.mjs +0 -81
  178. package/dist/esm2022/src/map/map-plate/tooltips/tooltip/tooltip.settings.mjs +0 -31
  179. package/dist/esm2022/src/map/map.module.mjs +0 -73
  180. package/dist/esm2022/src/map/maps-components-src-map.mjs +0 -5
  181. package/dist/esm2022/src/map/messages/commands/add-control.command.mjs +0 -18
  182. package/dist/esm2022/src/map/messages/commands/add-image-layer.command.mjs +0 -10
  183. package/dist/esm2022/src/map/messages/commands/add-layer.command.mjs +0 -10
  184. package/dist/esm2022/src/map/messages/commands/add-raster-tile-command.mjs +0 -10
  185. package/dist/esm2022/src/map/messages/commands/add-tile.command.mjs +0 -10
  186. package/dist/esm2022/src/map/messages/commands/cancel-drawing.command.mjs +0 -8
  187. package/dist/esm2022/src/map/messages/commands/cancel-feature-modification.command.mjs +0 -8
  188. package/dist/esm2022/src/map/messages/commands/close-tooltip.command.mjs +0 -18
  189. package/dist/esm2022/src/map/messages/commands/draw-selection-area.command.mjs +0 -26
  190. package/dist/esm2022/src/map/messages/commands/fit-to-features.command.mjs +0 -12
  191. package/dist/esm2022/src/map/messages/commands/fit-to-polygons.command.mjs +0 -22
  192. package/dist/esm2022/src/map/messages/commands/modify-feature.command.mjs +0 -31
  193. package/dist/esm2022/src/map/messages/commands/place-layer-features.command.mjs +0 -12
  194. package/dist/esm2022/src/map/messages/commands/remove-control.command.mjs +0 -23
  195. package/dist/esm2022/src/map/messages/commands/remove-image-layer.command.mjs +0 -10
  196. package/dist/esm2022/src/map/messages/commands/remove-layer.command.mjs +0 -10
  197. package/dist/esm2022/src/map/messages/commands/remove-raster-tile.command.mjs +0 -10
  198. package/dist/esm2022/src/map/messages/commands/remove-tile.command.mjs +0 -10
  199. package/dist/esm2022/src/map/messages/commands/set-map-center.command.mjs +0 -23
  200. package/dist/esm2022/src/map/messages/commands/start-drawing.command.mjs +0 -25
  201. package/dist/esm2022/src/map/messages/events/drawing-finished.event.mjs +0 -5
  202. package/dist/esm2022/src/map/messages/events/map-click.event.mjs +0 -27
  203. package/dist/esm2022/src/map/messages/events/map-feature-hovered.event.mjs +0 -23
  204. package/dist/esm2022/src/map/messages/events/map-move-end.event.mjs +0 -16
  205. package/dist/esm2022/src/map/messages/events/map-pointer-move.event.mjs +0 -21
  206. package/dist/esm2022/src/map/messages/events/map-rendered.event.mjs +0 -18
  207. package/dist/esm2022/src/map/messages/executors/calculate-area.executor.mjs +0 -17
  208. package/dist/esm2022/src/map/messages/executors/filter-features-in-area.executor.mjs +0 -20
  209. package/dist/esm2022/src/map/messages/executors/filter-features-in-point.executor.mjs +0 -28
  210. package/dist/esm2022/src/map/messages/executors/generate-draw.executor.mjs +0 -14
  211. package/dist/esm2022/src/map/messages/executors/generate-zoom-control.executor.mjs +0 -10
  212. package/dist/esm2022/src/map/messages/executors/get-geometry-length.executor.mjs +0 -18
  213. package/dist/esm2022/src/map/messages/executors/get-map-position.executor.mjs +0 -13
  214. package/dist/esm2022/src/map/messages/executors/polygon-self-intersection.executor.mjs +0 -10
  215. package/dist/esm2022/src/map/messages/index.mjs +0 -25
  216. package/dist/esm2022/src/map/messages/queries/get-features-in-area.query.mjs +0 -22
  217. package/dist/esm2022/src/map/messages/queries/get-features-in-point.query.mjs +0 -25
  218. package/dist/esm2022/src/map/messages/queries/get-layer.query.mjs +0 -10
  219. package/dist/esm2022/src/map/models/drawing-type.enum.mjs +0 -22
  220. package/dist/esm2022/src/map/models/feature-format.enum.mjs +0 -15
  221. package/dist/esm2022/src/map/models/i-identified.mjs +0 -2
  222. package/dist/esm2022/src/map/models/index.mjs +0 -10
  223. package/dist/esm2022/src/map/models/map-control.mjs +0 -15
  224. package/dist/esm2022/src/map/models/map-lyrs.enum.mjs +0 -19
  225. package/dist/esm2022/src/map/models/map-position.model.mjs +0 -2
  226. package/dist/esm2022/src/map/models/map-settings.mjs +0 -124
  227. package/dist/esm2022/src/map/models/map.constants.mjs +0 -6
  228. package/dist/esm2022/src/map/models/marker-model.mjs +0 -29
  229. package/dist/esm2022/src/map/models/polygon.model.mjs +0 -40
  230. package/dist/esm2022/src/map/ol-proxy.mjs +0 -6
  231. package/dist/esm2022/src/map/public-api.mjs +0 -17
  232. package/dist/esm2022/src/map/services/controls/controls.service.mjs +0 -37
  233. package/dist/esm2022/src/map/services/drawing/drawing-generation.service.mjs +0 -25
  234. package/dist/esm2022/src/map/services/drawing/drawing.service.mjs +0 -99
  235. package/dist/esm2022/src/map/services/drawing/feature-modification.service.mjs +0 -105
  236. package/dist/esm2022/src/map/services/feature.service.mjs +0 -77
  237. package/dist/esm2022/src/map/services/map-click.service.mjs +0 -55
  238. package/dist/esm2022/src/map/services/map-feature.service.mjs +0 -75
  239. package/dist/esm2022/src/map/services/map-management.service.mjs +0 -143
  240. package/dist/esm2022/src/map/services/map-postboy.service.mjs +0 -14
  241. package/dist/esm2022/src/map/services/map-state.service.mjs +0 -48
  242. package/dist/esm2022/src/map/services/message-registrator.service.mjs +0 -105
  243. package/dist/map/map.module.d.ts +0 -19
  244. package/dist/src/map/map.module.d.ts +0 -19
@@ -1,99 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { StartDrawingCommand } from '../../messages/commands/start-drawing.command';
3
- import { CancelDrawingCommand } from '../../messages/commands/cancel-drawing.command';
4
- import { first } from 'rxjs/operators';
5
- import { DrawingFinishedEvent } from '../../messages/events/drawing-finished.event';
6
- import { MapClickEvent, MapRenderedEvent } from '../../messages';
7
- import { GetLayerQuery } from '../../messages/queries/get-layer.query';
8
- import { MapConstants } from '../../models/map.constants';
9
- import { Vector as Source } from 'ol/source';
10
- import { FeatureOutputFormat, PolygonModel } from '../../models';
11
- import { GeoJSON, WKT } from 'ol/format';
12
- import { DrawSelectionAreaCommand } from '../../messages/commands/draw-selection-area.command';
13
- import { GetFeaturesInAreaQuery } from '../../messages/queries/get-features-in-area.query';
14
- import { GenerateDrawExecutor } from '../../messages/executors/generate-draw.executor';
15
- import { Dictionary } from '@artstesh/collections';
16
- import * as i0 from "@angular/core";
17
- import * as i1 from "../map-postboy.service";
18
- export class DrawingService {
19
- postboy;
20
- drawInteraction;
21
- map;
22
- constructor(postboy) {
23
- this.postboy = postboy;
24
- }
25
- up() {
26
- this.observeDrawing();
27
- this.observeSelectArea();
28
- this.observeMapRender();
29
- }
30
- observeSelectArea() {
31
- this.postboy.sub(DrawSelectionAreaCommand).subscribe((ev) => {
32
- this.postboy.lock(MapClickEvent);
33
- this.postboy.fireCallback(new StartDrawingCommand(ev.type, ev.style), (r) => {
34
- if (!r) {
35
- ev.finish(new Dictionary());
36
- return;
37
- }
38
- const area = PolygonModel.fromGeoJson(1, r).feature.getGeometry();
39
- this.postboy.fireCallback(new GetFeaturesInAreaQuery(area, ev.ignore), (result) => ev.finish(result));
40
- });
41
- });
42
- }
43
- observeDrawing() {
44
- this.postboy.sub(StartDrawingCommand).subscribe((ev) => {
45
- this.draw((l) => {
46
- if (!l || !this.map) {
47
- this.clearInteraction(l);
48
- return;
49
- }
50
- const cancelSub = this.observeCancelation(ev, l);
51
- this.drawInteraction = this.postboy.exec(new GenerateDrawExecutor(l, ev.style, ev.type));
52
- this.map?.addInteraction(this.drawInteraction);
53
- this.drawInteraction.on('drawend', (evt) => {
54
- cancelSub.unsubscribe();
55
- this.onEnd(evt, ev, l);
56
- });
57
- });
58
- });
59
- }
60
- onEnd(evt, command, layer) {
61
- command.finish(command.format === FeatureOutputFormat.GeoJson
62
- ? new GeoJSON().writeFeature(evt.feature)
63
- : command.format === FeatureOutputFormat.WKT
64
- ? new WKT().writeFeature(evt.feature)
65
- : new GeoJSON().writeGeometry(evt.feature.getGeometry()));
66
- this.clearInteraction(layer);
67
- }
68
- observeMapRender() {
69
- this.postboy.sub(MapRenderedEvent).subscribe((m) => {
70
- this.map = m.map;
71
- });
72
- }
73
- draw(action) {
74
- this.postboy.fireCallback(new GetLayerQuery(MapConstants.DrawingLayerId), (l) => action(l));
75
- }
76
- observeCancelation(ev, layer) {
77
- return this.postboy
78
- .sub(CancelDrawingCommand)
79
- .pipe(first())
80
- .subscribe(() => {
81
- ev.finish(null);
82
- this.clearInteraction(layer);
83
- });
84
- }
85
- clearInteraction(layer) {
86
- if (!!this.drawInteraction) {
87
- this.map?.removeInteraction(this.drawInteraction);
88
- layer?.setSource(new Source({}));
89
- }
90
- this.postboy.unlock(MapClickEvent);
91
- setTimeout(() => this.postboy.fire(new DrawingFinishedEvent()), 300);
92
- }
93
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: DrawingService, deps: [{ token: i1.MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
94
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: DrawingService });
95
- }
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: DrawingService, decorators: [{
97
- type: Injectable
98
- }], ctorParameters: () => [{ type: i1.MapPostboyService }] });
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwcy1jb21wb25lbnRzL3NyYy9tYXAvc2VydmljZXMvZHJhd2luZy9kcmF3aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFcEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHMUQsT0FBTyxFQUFFLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUlqRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUUzRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN2RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQUduRCxNQUFNLE9BQU8sY0FBYztJQUlMO0lB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QyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDbEQsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkUsQ0FBQzt1R0FsRlUsY0FBYzsyR0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVBvc3Rib3lEZXBlbmRpbmdTZXJ2aWNlIH0gZnJvbSAnQGFydHN0ZXNoL3Bvc3Rib3knO1xuaW1wb3J0IHsgTWFwUG9zdGJveVNlcnZpY2UgfSBmcm9tICcuLi9tYXAtcG9zdGJveS5zZXJ2aWNlJztcbmltcG9ydCB7IFN0YXJ0RHJhd2luZ0NvbW1hbmQgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9jb21tYW5kcy9zdGFydC1kcmF3aW5nLmNvbW1hbmQnO1xuaW1wb3J0IHsgQ2FuY2VsRHJhd2luZ0NvbW1hbmQgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9jb21tYW5kcy9jYW5jZWwtZHJhd2luZy5jb21tYW5kJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRHJhd2luZ0ZpbmlzaGVkRXZlbnQgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9ldmVudHMvZHJhd2luZy1maW5pc2hlZC5ldmVudCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1hcENsaWNrRXZlbnQsIE1hcFJlbmRlcmVkRXZlbnQgfSBmcm9tICcuLi8uLi9tZXNzYWdlcyc7XG5pbXBvcnQgeyBHZXRMYXllclF1ZXJ5IH0gZnJvbSAnLi4vLi4vbWVzc2FnZXMvcXVlcmllcy9nZXQtbGF5ZXIucXVlcnknO1xuaW1wb3J0IHsgTWFwQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL21hcC5jb25zdGFudHMnO1xuaW1wb3J0IHsgVmVjdG9yIGFzIExheWVyIH0gZnJvbSAnb2wvbGF5ZXInO1xuaW1wb3J0IFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcbmltcG9ydCB7IFZlY3RvciBhcyBTb3VyY2UgfSBmcm9tICdvbC9zb3VyY2UnO1xuaW1wb3J0IHsgRHJhdyB9IGZyb20gJ29sL2ludGVyYWN0aW9uJztcbmltcG9ydCB7IEZlYXR1cmVPdXRwdXRGb3JtYXQsIFBvbHlnb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBNYXAgfSBmcm9tICdvbCc7XG5pbXBvcnQgeyBEcmF3RXZlbnQgfSBmcm9tICdvbC9pbnRlcmFjdGlvbi9EcmF3JztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSc7XG5pbXBvcnQgeyBHZW9KU09OLCBXS1QgfSBmcm9tICdvbC9mb3JtYXQnO1xuaW1wb3J0IHsgRHJhd1NlbGVjdGlvbkFyZWFDb21tYW5kIH0gZnJvbSAnLi4vLi4vbWVzc2FnZXMvY29tbWFuZHMvZHJhdy1zZWxlY3Rpb24tYXJlYS5jb21tYW5kJztcbmltcG9ydCB7IEdldEZlYXR1cmVzSW5BcmVhUXVlcnkgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9xdWVyaWVzL2dldC1mZWF0dXJlcy1pbi1hcmVhLnF1ZXJ5JztcbmltcG9ydCB7IElJZGVudGlmaWVkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ktaWRlbnRpZmllZCc7XG5pbXBvcnQgeyBHZW5lcmF0ZURyYXdFeGVjdXRvciB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL2V4ZWN1dG9ycy9nZW5lcmF0ZS1kcmF3LmV4ZWN1dG9yJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdAYXJ0c3Rlc2gvY29sbGVjdGlvbnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRHJhd2luZ1NlcnZpY2UgaW1wbGVtZW50cyBJUG9zdGJveURlcGVuZGluZ1NlcnZpY2Uge1xuICBwcml2YXRlIGRyYXdJbnRlcmFjdGlvbj86IERyYXc7XG4gIHByaXZhdGUgbWFwPzogTWFwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9zdGJveTogTWFwUG9zdGJveVNlcnZpY2UpIHt9XG5cbiAgdXAoKTogdm9pZCB7XG4gICAgdGhpcy5vYnNlcnZlRHJhd2luZygpO1xuICAgIHRoaXMub2JzZXJ2ZVNlbGVjdEFyZWEoKTtcbiAgICB0aGlzLm9ic2VydmVNYXBSZW5kZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZVNlbGVjdEFyZWEoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YihEcmF3U2VsZWN0aW9uQXJlYUNvbW1hbmQpLnN1YnNjcmliZSgoZXYpID0+IHtcbiAgICAgIHRoaXMucG9zdGJveS5sb2NrKE1hcENsaWNrRXZlbnQpO1xuICAgICAgdGhpcy5wb3N0Ym95LmZpcmVDYWxsYmFjayhuZXcgU3RhcnREcmF3aW5nQ29tbWFuZChldi50eXBlLCBldi5zdHlsZSksIChyKSA9PiB7XG4gICAgICAgIGlmICghcikge1xuICAgICAgICAgIGV2LmZpbmlzaChuZXcgRGljdGlvbmFyeTxJSWRlbnRpZmllZFtdPigpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXJlYSA9IFBvbHlnb25Nb2RlbC5mcm9tR2VvSnNvbigxLCByKS5mZWF0dXJlLmdldEdlb21ldHJ5KCkhO1xuICAgICAgICB0aGlzLnBvc3Rib3kuZmlyZUNhbGxiYWNrKG5ldyBHZXRGZWF0dXJlc0luQXJlYVF1ZXJ5KGFyZWEsIGV2Lmlnbm9yZSksIChyZXN1bHQpID0+IGV2LmZpbmlzaChyZXN1bHQpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlRHJhd2luZygpIHtcbiAgICB0aGlzLnBvc3Rib3kuc3ViKFN0YXJ0RHJhd2luZ0NvbW1hbmQpLnN1YnNjcmliZSgoZXYpID0+IHtcbiAgICAgIHRoaXMuZHJhdygobCkgPT4ge1xuICAgICAgICBpZiAoIWwgfHwgIXRoaXMubWFwKSB7XG4gICAgICAgICAgdGhpcy5jbGVhckludGVyYWN0aW9uKGwpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjYW5jZWxTdWIgPSB0aGlzLm9ic2VydmVDYW5jZWxhdGlvbihldiwgbCk7XG4gICAgICAgIHRoaXMuZHJhd0ludGVyYWN0aW9uID0gdGhpcy5wb3N0Ym95LmV4ZWMobmV3IEdlbmVyYXRlRHJhd0V4ZWN1dG9yKGwsIGV2LnN0eWxlLCBldi50eXBlKSkhO1xuICAgICAgICB0aGlzLm1hcD8uYWRkSW50ZXJhY3Rpb24odGhpcy5kcmF3SW50ZXJhY3Rpb24pO1xuICAgICAgICB0aGlzLmRyYXdJbnRlcmFjdGlvbi5vbignZHJhd2VuZCcsIChldnQ6IERyYXdFdmVudCkgPT4ge1xuICAgICAgICAgIGNhbmNlbFN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHRoaXMub25FbmQoZXZ0LCBldiwgbCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uRW5kKGV2dDogRHJhd0V2ZW50LCBjb21tYW5kOiBTdGFydERyYXdpbmdDb21tYW5kLCBsYXllcjogTGF5ZXI8VmVjdG9yU291cmNlPEdlb21ldHJ5Pj4pOiB2b2lkIHtcbiAgICBjb21tYW5kLmZpbmlzaChcbiAgICAgIGNvbW1hbmQuZm9ybWF0ID09PSBGZWF0dXJlT3V0cHV0Rm9ybWF0Lkdlb0pzb25cbiAgICAgICAgPyBuZXcgR2VvSlNPTigpLndyaXRlRmVhdHVyZShldnQuZmVhdHVyZSlcbiAgICAgICAgOiBjb21tYW5kLmZvcm1hdCA9PT0gRmVhdHVyZU91dHB1dEZvcm1hdC5XS1RcbiAgICAgICAgPyBuZXcgV0tUKCkud3JpdGVGZWF0dXJlKGV2dC5mZWF0dXJlKVxuICAgICAgICA6IG5ldyBHZW9KU09OKCkud3JpdGVHZW9tZXRyeShldnQuZmVhdHVyZS5nZXRHZW9tZXRyeSgpISksXG4gICAgKTtcbiAgICB0aGlzLmNsZWFySW50ZXJhY3Rpb24obGF5ZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlTWFwUmVuZGVyKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWIoTWFwUmVuZGVyZWRFdmVudCkuc3Vic2NyaWJlKChtKSA9PiB7XG4gICAgICB0aGlzLm1hcCA9IG0ubWFwO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3KGFjdGlvbjogKGxheWVyOiBMYXllcjxWZWN0b3JTb3VyY2U8YW55Pj4gfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5wb3N0Ym95LmZpcmVDYWxsYmFjayhuZXcgR2V0TGF5ZXJRdWVyeShNYXBDb25zdGFudHMuRHJhd2luZ0xheWVySWQpLCAobCkgPT4gYWN0aW9uKGwpKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZUNhbmNlbGF0aW9uKGV2OiBTdGFydERyYXdpbmdDb21tYW5kLCBsYXllcjogTGF5ZXI8VmVjdG9yU291cmNlPGFueT4+IHwgbnVsbCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMucG9zdGJveVxuICAgICAgLnN1YihDYW5jZWxEcmF3aW5nQ29tbWFuZClcbiAgICAgIC5waXBlKGZpcnN0KCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgZXYuZmluaXNoKG51bGwpO1xuICAgICAgICB0aGlzLmNsZWFySW50ZXJhY3Rpb24obGF5ZXIpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFySW50ZXJhY3Rpb24obGF5ZXI6IExheWVyPFNvdXJjZTxHZW9tZXRyeT4+IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghIXRoaXMuZHJhd0ludGVyYWN0aW9uKSB7XG4gICAgICB0aGlzLm1hcD8ucmVtb3ZlSW50ZXJhY3Rpb24odGhpcy5kcmF3SW50ZXJhY3Rpb24pO1xuICAgICAgbGF5ZXI/LnNldFNvdXJjZShuZXcgU291cmNlKHt9KSk7XG4gICAgfVxuICAgIHRoaXMucG9zdGJveS51bmxvY2soTWFwQ2xpY2tFdmVudCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnBvc3Rib3kuZmlyZShuZXcgRHJhd2luZ0ZpbmlzaGVkRXZlbnQoKSksIDMwMCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,105 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Modify, Translate } from 'ol/interaction';
3
- import { Collection } from 'ol';
4
- import { MapRenderedEvent } from '../../messages';
5
- import { FeatureOutputFormat } from '../../models';
6
- import { GeoJSON, WKT } from 'ol/format';
7
- import { GetLayerQuery } from '../../messages/queries/get-layer.query';
8
- import { MapConstants } from '../../models/map.constants';
9
- import { first } from 'rxjs/operators';
10
- import { CancelFeatureModificationCommand } from '../../messages/commands/cancel-feature-modification.command';
11
- import { ModifyFeatureCommand } from '../../messages/commands/modify-feature.command';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "../map-postboy.service";
14
- export class FeatureModificationService {
15
- postboy;
16
- modify;
17
- translate;
18
- map;
19
- constructor(postboy) {
20
- this.postboy = postboy;
21
- }
22
- up() {
23
- this.observeModification();
24
- this.observeMapRender();
25
- }
26
- observeModification() {
27
- this.postboy.sub(ModifyFeatureCommand).subscribe((ev) => {
28
- this.defineLayer((l) => {
29
- if (!l || !this.map) {
30
- this.clearInteraction(l);
31
- return;
32
- }
33
- this.observeCancelation(ev, l);
34
- this.initFeature(l, ev.model.feature);
35
- this.addModify(ev);
36
- if (ev.draggable)
37
- this.addDragging(ev);
38
- });
39
- });
40
- }
41
- initFeature(layer, feature) {
42
- layer.getSource()?.clear();
43
- layer.getSource()?.addFeature(feature);
44
- }
45
- addModify(command) {
46
- this.modify = new Modify({
47
- features: new Collection([command.model.feature]),
48
- style: command.style,
49
- });
50
- this.modify.on('modifyend', () => {
51
- this.onModified(command);
52
- command.model.feature.changed();
53
- });
54
- this.map?.addInteraction(this.modify);
55
- }
56
- addDragging(command) {
57
- this.translate = new Translate({
58
- features: new Collection([command.model.feature]),
59
- condition: (ev) => {
60
- const clone = command.model.feature.clone();
61
- clone.getGeometry()?.scale(0.999);
62
- return clone.getGeometry().intersectsCoordinate(ev.coordinate);
63
- },
64
- });
65
- this.translate.on('translateend', () => this.onModified(command));
66
- this.map?.addInteraction(this.translate);
67
- }
68
- onModified(command) {
69
- command.next(command.format === FeatureOutputFormat.GeoJson
70
- ? new GeoJSON().writeFeature(command.model.feature)
71
- : command.format === FeatureOutputFormat.WKT
72
- ? new WKT().writeFeature(command.model.feature)
73
- : new GeoJSON().writeGeometry(command.model.feature.getGeometry()));
74
- }
75
- observeMapRender() {
76
- this.postboy.sub(MapRenderedEvent).subscribe((m) => {
77
- this.map = m.map;
78
- });
79
- }
80
- defineLayer(action) {
81
- this.postboy.fireCallback(new GetLayerQuery(MapConstants.DrawingLayerId), (l) => action(l));
82
- }
83
- observeCancelation(ev, layer) {
84
- return this.postboy
85
- .sub(CancelFeatureModificationCommand)
86
- .pipe(first())
87
- .subscribe(() => {
88
- ev.finish(null);
89
- this.clearInteraction(layer);
90
- });
91
- }
92
- clearInteraction(layer) {
93
- layer?.getSource()?.clear();
94
- if (this.modify)
95
- this.map?.removeInteraction(this.modify);
96
- if (this.translate)
97
- this.map?.removeInteraction(this.translate);
98
- }
99
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FeatureModificationService, deps: [{ token: i1.MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
100
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FeatureModificationService });
101
- }
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FeatureModificationService, decorators: [{
103
- type: Injectable
104
- }], ctorParameters: () => [{ type: i1.MapPostboyService }] });
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1tb2RpZmljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hcHMtY29tcG9uZW50cy9zcmMvbWFwL3NlcnZpY2VzL2RyYXdpbmcvZmVhdHVyZS1tb2RpZmljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxJQUFJLENBQUM7QUFFOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSW5ELE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQy9HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7QUFHdEYsTUFBTSxPQUFPLDBCQUEwQjtJQUtqQjtJQUpaLE1BQU0sQ0FBVTtJQUNoQixTQUFTLENBQWE7SUFDdEIsR0FBRyxDQUFPO0lBRWxCLFlBQW9CLE9BQTBCO1FBQTFCLFlBQU8sR0FBUCxPQUFPLENBQW1CO0lBQUcsQ0FBQztJQUVsRCxFQUFFO1FBQ0EsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixFQUFF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QUFnQixDQUFDLEtBQXFDO1FBQzVELEtBQUssRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM1QixJQUFJLElBQUksQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUQsSUFBSSxJQUFJLENBQUMsU0FBUztZQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7dUdBM0ZVLDBCQUEwQjsyR0FBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVBvc3Rib3lEZXBlbmRpbmdTZXJ2aWNlIH0gZnJvbSAnQGFydHN0ZXNoL3Bvc3Rib3knO1xuaW1wb3J0IHsgTW9kaWZ5LCBUcmFuc2xhdGUgfSBmcm9tICdvbC9pbnRlcmFjdGlvbic7XG5pbXBvcnQgeyBDb2xsZWN0aW9uLCBGZWF0dXJlLCBNYXAgfSBmcm9tICdvbCc7XG5pbXBvcnQgeyBNYXBQb3N0Ym95U2VydmljZSB9IGZyb20gJy4uL21hcC1wb3N0Ym95LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFwUmVuZGVyZWRFdmVudCB9IGZyb20gJy4uLy4uL21lc3NhZ2VzJztcbmltcG9ydCB7IEZlYXR1cmVPdXRwdXRGb3JtYXQgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVmVjdG9yIGFzIExheWVyIH0gZnJvbSAnb2wvbGF5ZXInO1xuaW1wb3J0IFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSc7XG5pbXBvcnQgeyBHZW9KU09OLCBXS1QgfSBmcm9tICdvbC9mb3JtYXQnO1xuaW1wb3J0IHsgR2V0TGF5ZXJRdWVyeSB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL3F1ZXJpZXMvZ2V0LWxheWVyLnF1ZXJ5JztcbmltcG9ydCB7IE1hcENvbnN0YW50cyB9IGZyb20gJy4uLy4uL21vZGVscy9tYXAuY29uc3RhbnRzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBWZWN0b3IgYXMgU291cmNlIH0gZnJvbSAnb2wvc291cmNlJztcbmltcG9ydCB7IENhbmNlbEZlYXR1cmVNb2RpZmljYXRpb25Db21tYW5kIH0gZnJvbSAnLi4vLi4vbWVzc2FnZXMvY29tbWFuZHMvY2FuY2VsLWZlYXR1cmUtbW9kaWZpY2F0aW9uLmNvbW1hbmQnO1xuaW1wb3J0IHsgTW9kaWZ5RmVhdHVyZUNvbW1hbmQgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9jb21tYW5kcy9tb2RpZnktZmVhdHVyZS5jb21tYW5kJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZlYXR1cmVNb2RpZmljYXRpb25TZXJ2aWNlIGltcGxlbWVudHMgSVBvc3Rib3lEZXBlbmRpbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtb2RpZnk/OiBNb2RpZnk7XG4gIHByaXZhdGUgdHJhbnNsYXRlPzogVHJhbnNsYXRlO1xuICBwcml2YXRlIG1hcD86IE1hcDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvc3Rib3k6IE1hcFBvc3Rib3lTZXJ2aWNlKSB7fVxuXG4gIHVwKCk6IHZvaWQge1xuICAgIHRoaXMub2JzZXJ2ZU1vZGlmaWNhdGlvbigpO1xuICAgIHRoaXMub2JzZXJ2ZU1hcFJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlTW9kaWZpY2F0aW9uKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWIoTW9kaWZ5RmVhdHVyZUNvbW1hbmQpLnN1YnNjcmliZSgoZXYpID0+IHtcbiAgICAgIHRoaXMuZGVmaW5lTGF5ZXIoKGwpID0+IHtcbiAgICAgICAgaWYgKCFsIHx8ICF0aGlzLm1hcCkge1xuICAgICAgICAgIHRoaXMuY2xlYXJJbnRlcmFjdGlvbihsKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vYnNlcnZlQ2FuY2VsYXRpb24oZXYsIGwpO1xuICAgICAgICB0aGlzLmluaXRGZWF0dXJlKGwsIGV2Lm1vZGVsLmZlYXR1cmUpO1xuICAgICAgICB0aGlzLmFkZE1vZGlmeShldik7XG4gICAgICAgIGlmIChldi5kcmFnZ2FibGUpIHRoaXMuYWRkRHJhZ2dpbmcoZXYpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGZWF0dXJlKGxheWVyOiBMYXllcjxWZWN0b3JTb3VyY2U8R2VvbWV0cnk+PiwgZmVhdHVyZTogRmVhdHVyZTxHZW9tZXRyeT4pOiB2b2lkIHtcbiAgICBsYXllci5nZXRTb3VyY2UoKT8uY2xlYXIoKTtcbiAgICBsYXllci5nZXRTb3VyY2UoKT8uYWRkRmVhdHVyZShmZWF0dXJlKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTW9kaWZ5KGNvbW1hbmQ6IE1vZGlmeUZlYXR1cmVDb21tYW5kKTogdm9pZCB7XG4gICAgdGhpcy5tb2RpZnkgPSBuZXcgTW9kaWZ5KHtcbiAgICAgIGZlYXR1cmVzOiBuZXcgQ29sbGVjdGlvbihbY29tbWFuZC5tb2RlbC5mZWF0dXJlXSksXG4gICAgICBzdHlsZTogY29tbWFuZC5zdHlsZSxcbiAgICB9KTtcbiAgICB0aGlzLm1vZGlmeS5vbignbW9kaWZ5ZW5kJywgKCkgPT4ge1xuICAgICAgdGhpcy5vbk1vZGlmaWVkKGNvbW1hbmQpO1xuICAgICAgY29tbWFuZC5tb2RlbC5mZWF0dXJlLmNoYW5nZWQoKTtcbiAgICB9KTtcbiAgICB0aGlzLm1hcD8uYWRkSW50ZXJhY3Rpb24odGhpcy5tb2RpZnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREcmFnZ2luZyhjb21tYW5kOiBNb2RpZnlGZWF0dXJlQ29tbWFuZCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNsYXRlID0gbmV3IFRyYW5zbGF0ZSh7XG4gICAgICBmZWF0dXJlczogbmV3IENvbGxlY3Rpb24oW2NvbW1hbmQubW9kZWwuZmVhdHVyZV0pLFxuICAgICAgY29uZGl0aW9uOiAoZXYpID0+IHtcbiAgICAgICAgY29uc3QgY2xvbmUgPSBjb21tYW5kLm1vZGVsLmZlYXR1cmUuY2xvbmUoKTtcbiAgICAgICAgY2xvbmUuZ2V0R2VvbWV0cnkoKT8uc2NhbGUoMC45OTkpO1xuICAgICAgICByZXR1cm4gY2xvbmUuZ2V0R2VvbWV0cnkoKSEuaW50ZXJzZWN0c0Nvb3JkaW5hdGUoZXYuY29vcmRpbmF0ZSk7XG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMudHJhbnNsYXRlLm9uKCd0cmFuc2xhdGVlbmQnLCAoKSA9PiB0aGlzLm9uTW9kaWZpZWQoY29tbWFuZCkpO1xuICAgIHRoaXMubWFwPy5hZGRJbnRlcmFjdGlvbih0aGlzLnRyYW5zbGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIG9uTW9kaWZpZWQoY29tbWFuZDogTW9kaWZ5RmVhdHVyZUNvbW1hbmQpOiB2b2lkIHtcbiAgICBjb21tYW5kLm5leHQoXG4gICAgICBjb21tYW5kLmZvcm1hdCA9PT0gRmVhdHVyZU91dHB1dEZvcm1hdC5HZW9Kc29uXG4gICAgICAgID8gbmV3IEdlb0pTT04oKS53cml0ZUZlYXR1cmUoY29tbWFuZC5tb2RlbC5mZWF0dXJlKVxuICAgICAgICA6IGNvbW1hbmQuZm9ybWF0ID09PSBGZWF0dXJlT3V0cHV0Rm9ybWF0LldLVFxuICAgICAgICA/IG5ldyBXS1QoKS53cml0ZUZlYXR1cmUoY29tbWFuZC5tb2RlbC5mZWF0dXJlKVxuICAgICAgICA6IG5ldyBHZW9KU09OKCkud3JpdGVHZW9tZXRyeShjb21tYW5kLm1vZGVsLmZlYXR1cmUuZ2V0R2VvbWV0cnkoKSEpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVNYXBSZW5kZXIoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YihNYXBSZW5kZXJlZEV2ZW50KS5zdWJzY3JpYmUoKG0pID0+IHtcbiAgICAgIHRoaXMubWFwID0gbS5tYXA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRlZmluZUxheWVyKGFjdGlvbjogKGxheWVyOiBMYXllcjxWZWN0b3JTb3VyY2U8YW55Pj4gfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5wb3N0Ym95LmZpcmVDYWxsYmFjayhuZXcgR2V0TGF5ZXJRdWVyeShNYXBDb25zdGFudHMuRHJhd2luZ0xheWVySWQpLCAobCkgPT4gYWN0aW9uKGwpKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZUNhbmNlbGF0aW9uKGV2OiBNb2RpZnlGZWF0dXJlQ29tbWFuZCwgbGF5ZXI6IExheWVyPFZlY3RvclNvdXJjZTxhbnk+PiB8IG51bGwpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLnBvc3Rib3lcbiAgICAgIC5zdWIoQ2FuY2VsRmVhdHVyZU1vZGlmaWNhdGlvbkNvbW1hbmQpXG4gICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGV2LmZpbmlzaChudWxsKTtcbiAgICAgICAgdGhpcy5jbGVhckludGVyYWN0aW9uKGxheWVyKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckludGVyYWN0aW9uKGxheWVyOiBMYXllcjxTb3VyY2U8R2VvbWV0cnk+PiB8IG51bGwpOiB2b2lkIHtcbiAgICBsYXllcj8uZ2V0U291cmNlKCk/LmNsZWFyKCk7XG4gICAgaWYgKHRoaXMubW9kaWZ5KSB0aGlzLm1hcD8ucmVtb3ZlSW50ZXJhY3Rpb24odGhpcy5tb2RpZnkpO1xuICAgIGlmICh0aGlzLnRyYW5zbGF0ZSkgdGhpcy5tYXA/LnJlbW92ZUludGVyYWN0aW9uKHRoaXMudHJhbnNsYXRlKTtcbiAgfVxufVxuIl19
@@ -1,77 +0,0 @@
1
- import { LineString, Point } from 'ol/geom';
2
- import * as Sphere from 'ol/sphere';
3
- export class FeatureService {
4
- constructor() { }
5
- static filterFeaturesInArea(query) {
6
- return query.features.filter((f) => FeatureService.booleanIntersects(query.area, f.getGeometry()));
7
- }
8
- static filterFeaturesInPoint(query) {
9
- return query.features.filter((f) => FeatureService.booleanIntersects(f.getGeometry(), new Point([query.lng, query.lat])));
10
- }
11
- static calculateArea(g) {
12
- if (!g)
13
- return 0;
14
- return Sphere.getArea(g, { projection: 'EPSG:4326' });
15
- }
16
- static polygonSelfIntersects(feature) {
17
- if (feature.getGeometry().getType() !== 'Polygon')
18
- return false;
19
- let intersections = 0;
20
- const segments = FeatureService.getSegmentsFromCoordinates(feature.getGeometry());
21
- for (let i = 0; i < segments.length; i++) {
22
- for (let z = i + 1; z < segments.length; z++) {
23
- if (!intersections && this.segmentIntersection(segments[i].getCoordinates(), segments[z].getCoordinates())) {
24
- intersections++;
25
- }
26
- }
27
- }
28
- return intersections !== 0;
29
- }
30
- static booleanIntersects(g1, g2) {
31
- if (g2.getType() === 'Point')
32
- return g1.intersectsCoordinate(g2.getCoordinates());
33
- if (g2.getType() === 'Circle')
34
- return g1.intersectsCoordinate(g2.getCenter());
35
- if (g2.getType() === 'Polygon')
36
- return g1.intersectsCoordinate(g2.getInteriorPoint().getCoordinates());
37
- return false;
38
- }
39
- static getSegmentsFromCoordinates(geom) {
40
- if (!geom)
41
- return [];
42
- const coords = geom.getCoordinates();
43
- const line = new LineString(coords[0]);
44
- const segments = [];
45
- line.forEachSegment((s1, s2) => {
46
- const l = new LineString([s1, s2]);
47
- l.scale(0.999); // bug of the OL, as I see
48
- segments.push(l);
49
- });
50
- return segments;
51
- }
52
- static segmentIntersection(s1, s2) {
53
- const a = s1[0], b = s1[1], c = s2[0], d = s2[1];
54
- const o1 = this.orientation(a, b, c);
55
- const o2 = this.orientation(a, b, d);
56
- const o3 = this.orientation(c, d, a);
57
- const o4 = this.orientation(c, d, b);
58
- return ((o1 != o2 && o3 != o4) ||
59
- (o1 == 0 && this.onSegment(a, d, b)) ||
60
- (o2 == 0 && this.onSegment(a, d, b)) ||
61
- (o3 == 0 && this.onSegment(d, a, d)) ||
62
- (o4 == 0 && this.onSegment(d, b, d)));
63
- }
64
- static orientation(p, q, r) {
65
- const val = (q[1] - p[1]) * (r[0] - q[0]) - (q[0] - p[0]) * (r[1] - q[1]);
66
- if (val == 0)
67
- return 0; // collinear
68
- return val > 0 ? 1 : 2; // clock or counterclock wise
69
- }
70
- static onSegment(p, q, r) {
71
- return (q[0] <= (p[0] > r[0] ? p[0] : r[0]) &&
72
- q[0] >= (p[0] < r[0] ? p[0] : r[0]) &&
73
- q[1] <= (p[1] > r[1] ? p[1] : r[1]) &&
74
- q[1] >= (p[1] < r[1] ? p[1] : r[1]));
75
- }
76
- }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwcy1jb21wb25lbnRzL3NyYy9tYXAvc2VydmljZXMvZmVhdHVyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0MsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUdsRixPQUFPLEtBQUssTUFBTSxNQUFNLFdBQVcsQ0FBQztBQUlwQyxNQUFNLE9BQU8sY0FBYztJQUN6QixnQkFBZSxDQUFDO0lBRVQsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEtBQW1DO1FBQ3BFLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVNLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFvQztRQUN0RSxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDakMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUcsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDdEYsQ0FBQztJQUNKLENBQUM7SUFFTSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQXVCO1FBQ2pELElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDakIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSxNQUFNLENBQUMscUJBQXFCLENB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QUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDckMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sQ0FDTCxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN0QixDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3JDLENBQUM7SUFDSixDQUFDO0lBRU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFXLEVBQUUsQ0FBVyxFQUFFLENBQVc7UUFDOUQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxHQUFHLElBQUksQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsWUFBWTtRQUNwQyxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsNkJBQTZCO0lBQ3ZELENBQUM7SUFFTyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQVcsRUFBRSxDQUFXLEVBQUUsQ0FBVztRQUM1RCxPQUFPLENBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDcEMsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENpcmNsZSwgR2VvbWV0cnksIEdlb21ldHJ5Q29sbGVjdGlvbiwgTGluZVN0cmluZywgUG9pbnQgfSBmcm9tICdvbC9nZW9tJztcbmltcG9ydCBQb2x5Z29uLCB7IGZyb21DaXJjbGUgfSBmcm9tICdvbC9nZW9tL1BvbHlnb24nO1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJ29sJztcbmltcG9ydCAqIGFzIFNwaGVyZSBmcm9tICdvbC9zcGhlcmUnO1xuaW1wb3J0IHsgRmlsdGVyRmVhdHVyZXNJbkFyZWFFeGVjdXRvciB9IGZyb20gJy4uL21lc3NhZ2VzL2V4ZWN1dG9ycy9maWx0ZXItZmVhdHVyZXMtaW4tYXJlYS5leGVjdXRvcic7XG5pbXBvcnQgeyBGaWx0ZXJGZWF0dXJlc0luUG9pbnRFeGVjdXRvciB9IGZyb20gJy4uL21lc3NhZ2VzJztcblxuZXhwb3J0IGNsYXNzIEZlYXR1cmVTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHB1YmxpYyBzdGF0aWMgZmlsdGVyRmVhdHVyZXNJbkFyZWEocXVlcnk6IEZpbHRlckZlYXR1cmVzSW5BcmVhRXhlY3V0b3IpOiBGZWF0dXJlPEdlb21ldHJ5PltdIHtcbiAgICByZXR1cm4gcXVlcnkuZmVhdHVyZXMuZmlsdGVyKChmKSA9PiBGZWF0dXJlU2VydmljZS5ib29sZWFuSW50ZXJzZWN0cyhxdWVyeS5hcmVhLCBmLmdldEdlb21ldHJ5KCkhKSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZpbHRlckZlYXR1cmVzSW5Qb2ludChxdWVyeTogRmlsdGVyRmVhdHVyZXNJblBvaW50RXhlY3V0b3IpOiBGZWF0dXJlPEdlb21ldHJ5PltdIHtcbiAgICByZXR1cm4gcXVlcnkuZmVhdHVyZXMuZmlsdGVyKChmKSA9PlxuICAgICAgRmVhdHVyZVNlcnZpY2UuYm9vbGVhbkludGVyc2VjdHMoZi5nZXRHZW9tZXRyeSgpISwgbmV3IFBvaW50KFtxdWVyeS5sbmcsIHF1ZXJ5LmxhdF0pKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjYWxjdWxhdGVBcmVhKGc6IEdlb21ldHJ5IHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgICBpZiAoIWcpIHJldHVybiAwO1xuICAgIHJldHVybiBTcGhlcmUuZ2V0QXJlYShnLCB7IHByb2plY3Rpb246ICdFUFNHOjQzMjYnIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwb2x5Z29uU2VsZkludGVyc2VjdHMoZmVhdHVyZTogRmVhdHVyZTxHZW9tZXRyeT4pOiBib29sZWFuIHtcbiAgICBpZiAoZmVhdHVyZS5nZXRHZW9tZXRyeSgpIS5nZXRUeXBlKCkgIT09ICdQb2x5Z29uJykgcmV0dXJuIGZhbHNlO1xuICAgIGxldCBpbnRlcnNlY3Rpb25zID0gMDtcbiAgICBjb25zdCBzZWdtZW50cyA9IEZlYXR1cmVTZXJ2aWNlLmdldFNlZ21lbnRzRnJvbUNvb3JkaW5hdGVzKGZlYXR1cmUuZ2V0R2VvbWV0cnkoKSEpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAobGV0IHogPSBpICsgMTsgeiA8IHNlZ21lbnRzLmxlbmd0aDsgeisrKSB7XG4gICAgICAgIGlmICghaW50ZXJzZWN0aW9ucyAmJiB0aGlzLnNlZ21lbnRJbnRlcnNlY3Rpb24oc2VnbWVudHNbaV0uZ2V0Q29vcmRpbmF0ZXMoKSwgc2VnbWVudHNbel0uZ2V0Q29vcmRpbmF0ZXMoKSkpIHtcbiAgICAgICAgICBpbnRlcnNlY3Rpb25zKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGludGVyc2VjdGlvbnMgIT09IDA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBib29sZWFuSW50ZXJzZWN0cyhnMTogR2VvbWV0cnksIGcyOiBHZW9tZXRyeSk6IGJvb2xlYW4ge1xuICAgIGlmIChnMi5nZXRUeXBlKCkgPT09ICdQb2ludCcpIHJldHVybiBnMS5pbnRlcnNlY3RzQ29vcmRpbmF0ZSgoZzIgYXMgUG9pbnQpLmdldENvb3JkaW5hdGVzKCkpO1xuICAgIGlmIChnMi5nZXRUeXBlKCkgPT09ICdDaXJjbGUnKSByZXR1cm4gZzEuaW50ZXJzZWN0c0Nvb3JkaW5hdGUoKGcyIGFzIENpcmNsZSkuZ2V0Q2VudGVyKCkpO1xuICAgIGlmIChnMi5nZXRUeXBlKCkgPT09ICdQb2x5Z29uJykgcmV0dXJuIGcxLmludGVyc2VjdHNDb29yZGluYXRlKChnMiBhcyBQb2x5Z29uKS5nZXRJbnRlcmlvclBvaW50KCkuZ2V0Q29vcmRpbmF0ZXMoKSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0U2VnbWVudHNGcm9tQ29vcmRpbmF0ZXMoZ2VvbTogR2VvbWV0cnkpOiBMaW5lU3RyaW5nW10ge1xuICAgIGlmICghZ2VvbSkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IGNvb3JkcyA9IChnZW9tIGFzIGFueSkuZ2V0Q29vcmRpbmF0ZXMoKTtcbiAgICBjb25zdCBsaW5lID0gbmV3IExpbmVTdHJpbmcoY29vcmRzWzBdKTtcbiAgICBjb25zdCBzZWdtZW50czogTGluZVN0cmluZ1tdID0gW107XG4gICAgbGluZS5mb3JFYWNoU2VnbWVudCgoczEsIHMyKSA9PiB7XG4gICAgICBjb25zdCBsID0gbmV3IExpbmVTdHJpbmcoW3MxLCBzMl0pO1xuICAgICAgbC5zY2FsZSgwLjk5OSk7IC8vIGJ1ZyBvZiB0aGUgT0wsIGFzIEkgc2VlXG4gICAgICBzZWdtZW50cy5wdXNoKGwpO1xuICAgIH0pO1xuICAgIHJldHVybiBzZWdtZW50cztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNlZ21lbnRJbnRlcnNlY3Rpb24oczE6IG51bWJlcltdW10sIHMyOiBudW1iZXJbXVtdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgYSA9IHMxWzBdLFxuICAgICAgYiA9IHMxWzFdLFxuICAgICAgYyA9IHMyWzBdLFxuICAgICAgZCA9IHMyWzFdO1xuICAgIGNvbnN0IG8xID0gdGhpcy5vcmllbnRhdGlvbihhLCBiLCBjKTtcbiAgICBjb25zdCBvMiA9IHRoaXMub3JpZW50YXRpb24oYSwgYiwgZCk7XG4gICAgY29uc3QgbzMgPSB0aGlzLm9yaWVudGF0aW9uKGMsIGQsIGEpO1xuICAgIGNvbnN0IG80ID0gdGhpcy5vcmllbnRhdGlvbihjLCBkLCBiKTtcbiAgICByZXR1cm4gKFxuICAgICAgKG8xICE9IG8yICYmIG8zICE9IG80KSB8fFxuICAgICAgKG8xID09IDAgJiYgdGhpcy5vblNlZ21lbnQoYSwgZCwgYikpIHx8XG4gICAgICAobzIgPT0gMCAmJiB0aGlzLm9uU2VnbWVudChhLCBkLCBiKSkgfHxcbiAgICAgIChvMyA9PSAwICYmIHRoaXMub25TZWdtZW50KGQsIGEsIGQpKSB8fFxuICAgICAgKG80ID09IDAgJiYgdGhpcy5vblNlZ21lbnQoZCwgYiwgZCkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG9yaWVudGF0aW9uKHA6IG51bWJlcltdLCBxOiBudW1iZXJbXSwgcjogbnVtYmVyW10pOiBudW1iZXIge1xuICAgIGNvbnN0IHZhbCA9IChxWzFdIC0gcFsxXSkgKiAoclswXSAtIHFbMF0pIC0gKHFbMF0gLSBwWzBdKSAqIChyWzFdIC0gcVsxXSk7XG4gICAgaWYgKHZhbCA9PSAwKSByZXR1cm4gMDsgLy8gY29sbGluZWFyXG4gICAgcmV0dXJuIHZhbCA+IDAgPyAxIDogMjsgLy8gY2xvY2sgb3IgY291bnRlcmNsb2NrIHdpc2VcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG9uU2VnbWVudChwOiBudW1iZXJbXSwgcTogbnVtYmVyW10sIHI6IG51bWJlcltdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHFbMF0gPD0gKHBbMF0gPiByWzBdID8gcFswXSA6IHJbMF0pICYmXG4gICAgICBxWzBdID49IChwWzBdIDwgclswXSA/IHBbMF0gOiByWzBdKSAmJlxuICAgICAgcVsxXSA8PSAocFsxXSA+IHJbMV0gPyBwWzFdIDogclsxXSkgJiZcbiAgICAgIHFbMV0gPj0gKHBbMV0gPCByWzFdID8gcFsxXSA6IHJbMV0pXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -1,55 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { MapRenderedEvent } from '../messages';
3
- import { MapClickEvent } from '../messages/events/map-click.event';
4
- import { MapConstants } from '../models/map.constants';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "./map-postboy.service";
7
- export class MapClickService {
8
- postboy;
9
- map;
10
- constructor(postboy) {
11
- this.postboy = postboy;
12
- }
13
- up() {
14
- this.observeMapRender();
15
- }
16
- onClick(ev) {
17
- const model = new MapClickEvent(ev.coordinate, {}, {});
18
- this.map?.forEachFeatureAtPixel(ev.pixel, (f, l) => {
19
- this.getFeatureCollectionWithInner([f])
20
- .filter((f) => f.getId() != null && !!l)
21
- .forEach((fs) => {
22
- let layerName = l.get('name');
23
- if (!model.entities[layerName])
24
- model.entities[layerName] = [];
25
- if (!model.features[layerName])
26
- model.features[layerName] = [];
27
- model.entities[layerName].push({ id: fs.getId(), ...fs.get(MapConstants.FeatureInfo) });
28
- model.features[layerName].push(fs);
29
- });
30
- });
31
- return model;
32
- }
33
- observeMapRender() {
34
- this.postboy.sub(MapRenderedEvent).subscribe((m) => {
35
- this.map = m.map;
36
- this.map?.on('singleclick', (e) => {
37
- this.postboy.fire(this.onClick(e));
38
- });
39
- });
40
- }
41
- getFeatureCollectionWithInner(features) {
42
- const result = [];
43
- features?.forEach((f) => {
44
- const innerFeatures = f.get('features');
45
- innerFeatures?.length ? result.push(...innerFeatures) : result.push(f);
46
- });
47
- return result;
48
- }
49
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: MapClickService, deps: [{ token: i1.MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
50
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: MapClickService });
51
- }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: MapClickService, decorators: [{
53
- type: Injectable
54
- }], ctorParameters: () => [{ type: i1.MapPostboyService }] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWNsaWNrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBzLWNvbXBvbmVudHMvc3JjL21hcC9zZXJ2aWNlcy9tYXAtY2xpY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7QUFHdkQsTUFBTSxPQUFPLGVBQWU7SUFHTjtJQUZaLEdBQUcsQ0FBTztJQUVsQixZQUFvQixPQUEwQjtRQUExQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtJQUFHLENBQUM7SUFFbEQsRUFBRTtRQUNBLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPLENBQUMsRUFBNEI7UUFDbEMsTUFBTSxLQUFLLEdBQWtCLElBQUksYUFBYSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNqRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUFzQixDQUFDLENBQUM7aUJBQ3pELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN2QyxPQUFPLENBQUMsQ0FBQyxFQUFxQixFQUFFLEVBQUU7Z0JBQ2pDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztvQkFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO29CQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUMvRCxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pGLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNqRCxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDakIsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLDZCQUE2QixDQUFDLFFBQTZCO1FBQ2pFLE1BQU0sTUFBTSxHQUF3QixFQUFFLENBQUM7UUFDdkMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3RCLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUF3QixDQUFDO1lBQy9ELGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7dUdBekNVLGVBQWU7MkdBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQb3N0Ym95RGVwZW5kaW5nU2VydmljZSB9IGZyb20gJ0BhcnRzdGVzaC9wb3N0Ym95JztcbmltcG9ydCB7IEZlYXR1cmUsIE1hcCwgTWFwQnJvd3NlckV2ZW50IH0gZnJvbSAnb2wnO1xuaW1wb3J0IHsgTWFwUG9zdGJveVNlcnZpY2UgfSBmcm9tICcuL21hcC1wb3N0Ym95LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFwUmVuZGVyZWRFdmVudCB9IGZyb20gJy4uL21lc3NhZ2VzJztcbmltcG9ydCB7IE1hcENsaWNrRXZlbnQgfSBmcm9tICcuLi9tZXNzYWdlcy9ldmVudHMvbWFwLWNsaWNrLmV2ZW50JztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSc7XG5pbXBvcnQgeyBNYXBDb25zdGFudHMgfSBmcm9tICcuLi9tb2RlbHMvbWFwLmNvbnN0YW50cyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNYXBDbGlja1NlcnZpY2UgaW1wbGVtZW50cyBJUG9zdGJveURlcGVuZGluZ1NlcnZpY2Uge1xuICBwcml2YXRlIG1hcD86IE1hcDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvc3Rib3k6IE1hcFBvc3Rib3lTZXJ2aWNlKSB7fVxuXG4gIHVwKCk6IHZvaWQge1xuICAgIHRoaXMub2JzZXJ2ZU1hcFJlbmRlcigpO1xuICB9XG5cbiAgb25DbGljayhldjogTWFwQnJvd3NlckV2ZW50PFVJRXZlbnQ+KTogTWFwQ2xpY2tFdmVudCB7XG4gICAgY29uc3QgbW9kZWw6IE1hcENsaWNrRXZlbnQgPSBuZXcgTWFwQ2xpY2tFdmVudChldi5jb29yZGluYXRlLCB7fSwge30pO1xuICAgIHRoaXMubWFwPy5mb3JFYWNoRmVhdHVyZUF0UGl4ZWwoZXYucGl4ZWwsIChmLCBsKSA9PiB7XG4gICAgICB0aGlzLmdldEZlYXR1cmVDb2xsZWN0aW9uV2l0aElubmVyKFtmIGFzIEZlYXR1cmU8R2VvbWV0cnk+XSlcbiAgICAgICAgLmZpbHRlcigoZikgPT4gZi5nZXRJZCgpICE9IG51bGwgJiYgISFsKVxuICAgICAgICAuZm9yRWFjaCgoZnM6IEZlYXR1cmU8R2VvbWV0cnk+KSA9PiB7XG4gICAgICAgICAgbGV0IGxheWVyTmFtZSA9IGwuZ2V0KCduYW1lJyk7XG4gICAgICAgICAgaWYgKCFtb2RlbC5lbnRpdGllc1tsYXllck5hbWVdKSBtb2RlbC5lbnRpdGllc1tsYXllck5hbWVdID0gW107XG4gICAgICAgICAgaWYgKCFtb2RlbC5mZWF0dXJlc1tsYXllck5hbWVdKSBtb2RlbC5mZWF0dXJlc1tsYXllck5hbWVdID0gW107XG4gICAgICAgICAgbW9kZWwuZW50aXRpZXNbbGF5ZXJOYW1lXS5wdXNoKHsgaWQ6IGZzLmdldElkKCkhLCAuLi5mcy5nZXQoTWFwQ29uc3RhbnRzLkZlYXR1cmVJbmZvKSB9KTtcbiAgICAgICAgICBtb2RlbC5mZWF0dXJlc1tsYXllck5hbWVdLnB1c2goZnMpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gbW9kZWw7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVNYXBSZW5kZXIoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YihNYXBSZW5kZXJlZEV2ZW50KS5zdWJzY3JpYmUoKG0pID0+IHtcbiAgICAgIHRoaXMubWFwID0gbS5tYXA7XG4gICAgICB0aGlzLm1hcD8ub24oJ3NpbmdsZWNsaWNrJywgKGUpID0+IHtcbiAgICAgICAgdGhpcy5wb3N0Ym95LmZpcmUodGhpcy5vbkNsaWNrKGUpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGZWF0dXJlQ29sbGVjdGlvbldpdGhJbm5lcihmZWF0dXJlczogRmVhdHVyZTxHZW9tZXRyeT5bXSk6IEZlYXR1cmU8R2VvbWV0cnk+W10ge1xuICAgIGNvbnN0IHJlc3VsdDogRmVhdHVyZTxHZW9tZXRyeT5bXSA9IFtdO1xuICAgIGZlYXR1cmVzPy5mb3JFYWNoKChmKSA9PiB7XG4gICAgICBjb25zdCBpbm5lckZlYXR1cmVzID0gZi5nZXQoJ2ZlYXR1cmVzJykgYXMgRmVhdHVyZTxHZW9tZXRyeT5bXTtcbiAgICAgIGlubmVyRmVhdHVyZXM/Lmxlbmd0aCA/IHJlc3VsdC5wdXNoKC4uLmlubmVyRmVhdHVyZXMpIDogcmVzdWx0LnB1c2goZik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19
@@ -1,75 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { Feature } from 'ol';
3
- import { FitToPolygonsCommand, MapPointerMoveEvent, MapRenderedEvent } from '../messages';
4
- import { FitToFeaturesCommand } from '../messages/commands/fit-to-features.command';
5
- import { createEmpty, extend } from 'ol/extent';
6
- import { MapFeatureHoveredEvent } from '../messages/events/map-feature-hovered.event';
7
- import { MapConstants } from '../models';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "./map-postboy.service";
10
- export class MapFeatureService {
11
- postboy;
12
- map;
13
- fitPolygonsWaiting;
14
- constructor(postboy) {
15
- this.postboy = postboy;
16
- }
17
- up() {
18
- this.observeMapRender();
19
- this.observeFitToFeatures();
20
- this.observeFitToPolygons();
21
- this.observePointerMove();
22
- }
23
- observeMapRender() {
24
- this.postboy.sub(MapRenderedEvent).subscribe((m) => {
25
- this.map = m.map;
26
- if (this.fitPolygonsWaiting)
27
- this.postboy.fire(this.fitPolygonsWaiting);
28
- });
29
- }
30
- observePointerMove() {
31
- this.postboy.sub(MapPointerMoveEvent).subscribe((ev) => {
32
- if (!this.map)
33
- return;
34
- let featureFound = false;
35
- this.map.forEachFeatureAtPixel(ev.point, (f) => {
36
- if (f instanceof Feature) {
37
- this.postboy.fire(new MapFeatureHoveredEvent(f, f.get(MapConstants.FeatureLayerName)));
38
- featureFound = true;
39
- }
40
- return true;
41
- });
42
- if (!featureFound)
43
- this.postboy.fire(new MapFeatureHoveredEvent(null, null));
44
- });
45
- }
46
- observeFitToFeatures() {
47
- this.postboy.sub(FitToFeaturesCommand).subscribe((cmd) => {
48
- this.fitToGeometries(cmd.features.map((f) => f.getGeometry()), cmd.zoomAfter);
49
- });
50
- }
51
- observeFitToPolygons() {
52
- this.postboy.sub(FitToPolygonsCommand).subscribe((cmd) => {
53
- if (!this.map) {
54
- this.fitPolygonsWaiting = cmd;
55
- return;
56
- }
57
- this.fitPolygonsWaiting = undefined;
58
- this.fitToGeometries(cmd.features.map((f) => f.feature.getGeometry()), cmd.zoomAfter);
59
- });
60
- }
61
- fitToGeometries(geometries, zoomAfter) {
62
- if (!geometries?.length || !this.map)
63
- return;
64
- const extent = createEmpty();
65
- geometries.forEach((g) => extend(extent, g.getExtent()));
66
- this.map.getView().fit(extent);
67
- this.map.getView().setZoom(this.map.getView().getZoom() + zoomAfter);
68
- }
69
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: MapFeatureService, deps: [{ token: i1.MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
70
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: MapFeatureService });
71
- }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: MapFeatureService, decorators: [{
73
- type: Injectable
74
- }], ctorParameters: () => [{ type: i1.MapPostboyService }] });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLWZlYXR1cmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hcHMtY29tcG9uZW50cy9zcmMvbWFwL3NlcnZpY2VzL21hcC1mZWF0dXJlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsT0FBTyxFQUFPLE1BQU0sSUFBSSxDQUFDO0FBRWxDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUVwRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFHekMsTUFBTSxPQUFPLGlCQUFpQjtJQUlSO0lBSFosR0FBRyxDQUFPO0lBQ1Ysa0JBQWtCLENBQXdCO0lBRWxELFlBQW9CLE9BQTBCO1FBQTFCLFlBQU8sR0FBUCxPQUFPLENBQW1CO0lBQUcsQ0FBQztJQUVsRCxFQUFFO1FBQ0EsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNqQixJQUFJLElBQUksQ0FBQyxrQkFBa0I7Z0JBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7WUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU87WUFDdEIsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUM3QyxJQUFJLENBQUMsWUFBWSxPQUFPLEVBQUUsQ0FBQztvQkFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxDQUFzQixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM1RyxZQUFZLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsWUFBWTtnQkFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLHNCQUFzQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQy9FLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3ZELElBQUksQ0FBQyxlQUFlLENBQ2xCLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFHLENBQUMsRUFDekMsR0FBRyxDQUFDLFNBQVMsQ0FDZCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUFDO2dCQUM5QixPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUM7WUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FDbEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFHLENBQUMsRUFDakQsR0FBRyxDQUFDLFNBQVMsQ0FDZCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZSxDQUFDLFVBQXNCLEVBQUUsU0FBaUI7UUFDL0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRztZQUFFLE9BQU87UUFDN0MsTUFBTSxNQUFNLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDN0IsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFHLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDeEUsQ0FBQzt1R0FoRVUsaUJBQWlCOzJHQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUG9zdGJveURlcGVuZGluZ1NlcnZpY2UgfSBmcm9tICdAYXJ0c3Rlc2gvcG9zdGJveSc7XG5pbXBvcnQgeyBGZWF0dXJlLCBNYXAgfSBmcm9tICdvbCc7XG5pbXBvcnQgeyBNYXBQb3N0Ym95U2VydmljZSB9IGZyb20gJy4vbWFwLXBvc3Rib3kuc2VydmljZSc7XG5pbXBvcnQgeyBGaXRUb1BvbHlnb25zQ29tbWFuZCwgTWFwUG9pbnRlck1vdmVFdmVudCwgTWFwUmVuZGVyZWRFdmVudCB9IGZyb20gJy4uL21lc3NhZ2VzJztcbmltcG9ydCB7IEZpdFRvRmVhdHVyZXNDb21tYW5kIH0gZnJvbSAnLi4vbWVzc2FnZXMvY29tbWFuZHMvZml0LXRvLWZlYXR1cmVzLmNvbW1hbmQnO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tJztcbmltcG9ydCB7IGNyZWF0ZUVtcHR5LCBleHRlbmQgfSBmcm9tICdvbC9leHRlbnQnO1xuaW1wb3J0IHsgTWFwRmVhdHVyZUhvdmVyZWRFdmVudCB9IGZyb20gJy4uL21lc3NhZ2VzL2V2ZW50cy9tYXAtZmVhdHVyZS1ob3ZlcmVkLmV2ZW50JztcbmltcG9ydCB7IE1hcENvbnN0YW50cyB9IGZyb20gJy4uL21vZGVscyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNYXBGZWF0dXJlU2VydmljZSBpbXBsZW1lbnRzIElQb3N0Ym95RGVwZW5kaW5nU2VydmljZSB7XG4gIHByaXZhdGUgbWFwPzogTWFwO1xuICBwcml2YXRlIGZpdFBvbHlnb25zV2FpdGluZz86IEZpdFRvUG9seWdvbnNDb21tYW5kO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9zdGJveTogTWFwUG9zdGJveVNlcnZpY2UpIHt9XG5cbiAgdXAoKTogdm9pZCB7XG4gICAgdGhpcy5vYnNlcnZlTWFwUmVuZGVyKCk7XG4gICAgdGhpcy5vYnNlcnZlRml0VG9GZWF0dXJlcygpO1xuICAgIHRoaXMub2JzZXJ2ZUZpdFRvUG9seWdvbnMoKTtcbiAgICB0aGlzLm9ic2VydmVQb2ludGVyTW92ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlTWFwUmVuZGVyKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWIoTWFwUmVuZGVyZWRFdmVudCkuc3Vic2NyaWJlKChtKSA9PiB7XG4gICAgICB0aGlzLm1hcCA9IG0ubWFwO1xuICAgICAgaWYgKHRoaXMuZml0UG9seWdvbnNXYWl0aW5nKSB0aGlzLnBvc3Rib3kuZmlyZSh0aGlzLmZpdFBvbHlnb25zV2FpdGluZyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVQb2ludGVyTW92ZSgpIHtcbiAgICB0aGlzLnBvc3Rib3kuc3ViKE1hcFBvaW50ZXJNb3ZlRXZlbnQpLnN1YnNjcmliZSgoZXYpID0+IHtcbiAgICAgIGlmICghdGhpcy5tYXApIHJldHVybjtcbiAgICAgIGxldCBmZWF0dXJlRm91bmQgPSBmYWxzZTtcbiAgICAgIHRoaXMubWFwLmZvckVhY2hGZWF0dXJlQXRQaXhlbChldi5wb2ludCwgKGYpID0+IHtcbiAgICAgICAgaWYgKGYgaW5zdGFuY2VvZiBGZWF0dXJlKSB7XG4gICAgICAgICAgdGhpcy5wb3N0Ym95LmZpcmUobmV3IE1hcEZlYXR1cmVIb3ZlcmVkRXZlbnQoZiBhcyBGZWF0dXJlPEdlb21ldHJ5PiwgZi5nZXQoTWFwQ29uc3RhbnRzLkZlYXR1cmVMYXllck5hbWUpKSk7XG4gICAgICAgICAgZmVhdHVyZUZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgICAgaWYgKCFmZWF0dXJlRm91bmQpIHRoaXMucG9zdGJveS5maXJlKG5ldyBNYXBGZWF0dXJlSG92ZXJlZEV2ZW50KG51bGwsIG51bGwpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZUZpdFRvRmVhdHVyZXMoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YihGaXRUb0ZlYXR1cmVzQ29tbWFuZCkuc3Vic2NyaWJlKChjbWQpID0+IHtcbiAgICAgIHRoaXMuZml0VG9HZW9tZXRyaWVzKFxuICAgICAgICBjbWQuZmVhdHVyZXMubWFwKChmKSA9PiBmLmdldEdlb21ldHJ5KCkhKSxcbiAgICAgICAgY21kLnpvb21BZnRlcixcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVGaXRUb1BvbHlnb25zKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWIoRml0VG9Qb2x5Z29uc0NvbW1hbmQpLnN1YnNjcmliZSgoY21kKSA9PiB7XG4gICAgICBpZiAoIXRoaXMubWFwKSB7XG4gICAgICAgIHRoaXMuZml0UG9seWdvbnNXYWl0aW5nID0gY21kO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmZpdFBvbHlnb25zV2FpdGluZyA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZml0VG9HZW9tZXRyaWVzKFxuICAgICAgICBjbWQuZmVhdHVyZXMubWFwKChmKSA9PiBmLmZlYXR1cmUuZ2V0R2VvbWV0cnkoKSEpLFxuICAgICAgICBjbWQuem9vbUFmdGVyLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZml0VG9HZW9tZXRyaWVzKGdlb21ldHJpZXM6IEdlb21ldHJ5W10sIHpvb21BZnRlcjogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCFnZW9tZXRyaWVzPy5sZW5ndGggfHwgIXRoaXMubWFwKSByZXR1cm47XG4gICAgY29uc3QgZXh0ZW50ID0gY3JlYXRlRW1wdHkoKTtcbiAgICBnZW9tZXRyaWVzLmZvckVhY2goKGcpID0+IGV4dGVuZChleHRlbnQsIGcuZ2V0RXh0ZW50KCkpKTtcbiAgICB0aGlzLm1hcC5nZXRWaWV3KCkuZml0KGV4dGVudCk7XG4gICAgdGhpcy5tYXAuZ2V0VmlldygpLnNldFpvb20odGhpcy5tYXAuZ2V0VmlldygpLmdldFpvb20oKSEgKyB6b29tQWZ0ZXIpO1xuICB9XG59XG4iXX0=