@artstesh/maps 5.1.7 → 6.0.1

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 (338) hide show
  1. package/README.md +13 -13
  2. package/dist/README.md +24 -24
  3. package/dist/esm2022/map/common/destructible.component.mjs +18 -18
  4. package/dist/esm2022/map/common/id.generator.mjs +14 -14
  5. package/dist/esm2022/map/helpers/index.mjs +4 -4
  6. package/dist/esm2022/map/helpers/marker-style.helper.mjs +28 -28
  7. package/dist/esm2022/map/helpers/polygon-style.helper.mjs +32 -32
  8. package/dist/esm2022/map/helpers/stringify-feature.helper.mjs +58 -58
  9. package/dist/esm2022/map/helpers/text-style.helper.mjs +13 -13
  10. package/dist/esm2022/map/map-plate/controls/index.mjs +2 -2
  11. package/dist/esm2022/map/map-plate/controls/map-control-zoom/map-control-zoom.component.mjs +52 -52
  12. package/dist/esm2022/map/map-plate/controls/map-control-zoom/zoom-control.factory.mjs +12 -12
  13. package/dist/esm2022/map/map-plate/controls/map-control-zoom/zoom-control.settings.mjs +44 -44
  14. package/dist/esm2022/map/map-plate/features/index.mjs +2 -2
  15. package/dist/esm2022/map/map-plate/features/markers/markers.component.mjs +42 -42
  16. package/dist/esm2022/map/map-plate/features/polygons/polygons.component.mjs +42 -42
  17. package/dist/esm2022/map/map-plate/layers/cluster-layer/cluster-layer-factory.service.mjs +59 -59
  18. package/dist/esm2022/map/map-plate/layers/cluster-layer/cluster-layer.component.mjs +52 -52
  19. package/dist/esm2022/map/map-plate/layers/cluster-layer/cluster-layer.manager.mjs +38 -38
  20. package/dist/esm2022/map/map-plate/layers/cluster-layer/cluster-layer.settings.mjs +66 -66
  21. package/dist/esm2022/map/map-plate/layers/feature-layer/feature-layer.component.mjs +52 -52
  22. package/dist/esm2022/map/map-plate/layers/feature-layer/feature-layer.factory.mjs +28 -28
  23. package/dist/esm2022/map/map-plate/layers/feature-layer/feature-layer.settings.mjs +91 -91
  24. package/dist/esm2022/map/map-plate/layers/index.mjs +7 -7
  25. package/dist/esm2022/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.mjs +57 -57
  26. package/dist/esm2022/map/map-plate/layers/tile-layer/tile-layer.component.mjs +52 -52
  27. package/dist/esm2022/map/map-plate/layers/tile-layer/tile-layer.factory.mjs +50 -50
  28. package/dist/esm2022/map/map-plate/layers/tile-layer/tile-layer.settings.mjs +44 -44
  29. package/dist/esm2022/map/map-plate/map-plate.component.mjs +102 -102
  30. package/dist/esm2022/map/map-plate/map-plate.factory.service.mjs +27 -27
  31. package/dist/esm2022/map/map-plate/tooltips/index.mjs +2 -2
  32. package/dist/esm2022/map/map-plate/tooltips/tooltip/tooltip.component.mjs +81 -81
  33. package/dist/esm2022/map/map-plate/tooltips/tooltip/tooltip.settings.mjs +30 -30
  34. package/dist/esm2022/map/map.module.mjs +63 -63
  35. package/dist/esm2022/map/messages/commands/add-control.command.mjs +12 -12
  36. package/dist/esm2022/map/messages/commands/add-layer.command.mjs +12 -12
  37. package/dist/esm2022/map/messages/commands/add-tile.command.mjs +12 -12
  38. package/dist/esm2022/map/messages/commands/cancel-drawing.command.mjs +7 -7
  39. package/dist/esm2022/map/messages/commands/cancel-feature-modification.command.mjs +7 -7
  40. package/dist/esm2022/map/messages/commands/close-tooltip.command.mjs +12 -12
  41. package/dist/esm2022/map/messages/commands/draw-selection-area.command.mjs +16 -16
  42. package/dist/esm2022/map/messages/commands/fit-to-features.command.mjs +14 -14
  43. package/dist/esm2022/map/messages/commands/fit-to-polygons.command.mjs +14 -14
  44. package/dist/esm2022/map/messages/commands/modify-feature.command.mjs +17 -17
  45. package/dist/esm2022/map/messages/commands/place-layer-features.command.mjs +14 -14
  46. package/dist/esm2022/map/messages/commands/remove-control.command.mjs +12 -12
  47. package/dist/esm2022/map/messages/commands/remove-layer.command.mjs +12 -12
  48. package/dist/esm2022/map/messages/commands/remove-tile.command.mjs +12 -12
  49. package/dist/esm2022/map/messages/commands/set-map-center.command.mjs +25 -25
  50. package/dist/esm2022/map/messages/commands/start-drawing.command.mjs +17 -17
  51. package/dist/esm2022/map/messages/events/drawing-finished.event.mjs +10 -10
  52. package/dist/esm2022/map/messages/events/map-click.event.mjs +16 -16
  53. package/dist/esm2022/map/messages/events/map-move-end.event.mjs +14 -14
  54. package/dist/esm2022/map/messages/events/map-rendered.event.mjs +12 -12
  55. package/dist/esm2022/map/messages/executors/calculate-area.executor.mjs +12 -12
  56. package/dist/esm2022/map/messages/executors/filter-features-in-area.executor.mjs +14 -14
  57. package/dist/esm2022/map/messages/executors/generate-draw.executor.mjs +16 -16
  58. package/dist/esm2022/map/messages/executors/generate-zoom-control.executor.mjs +12 -12
  59. package/dist/esm2022/map/messages/index.mjs +14 -14
  60. package/dist/esm2022/map/messages/queries/get-features-in-area.query.mjs +14 -14
  61. package/dist/esm2022/map/messages/queries/get-layer.query.mjs +12 -12
  62. package/dist/esm2022/map/models/drawing-type.enum.mjs +7 -7
  63. package/dist/esm2022/map/models/feature-format.enum.mjs +5 -5
  64. package/dist/esm2022/map/models/i-identified.mjs +1 -1
  65. package/dist/esm2022/map/models/index.mjs +7 -7
  66. package/dist/esm2022/map/models/map-control.mjs +14 -14
  67. package/dist/esm2022/map/models/map-lyrs.enum.mjs +18 -18
  68. package/dist/esm2022/map/models/map-settings.mjs +50 -50
  69. package/dist/esm2022/map/models/map.constants.mjs +4 -4
  70. package/dist/esm2022/map/models/marker-model.mjs +28 -28
  71. package/dist/esm2022/map/models/polygon.model.mjs +32 -32
  72. package/dist/esm2022/map/public-api.mjs +15 -15
  73. package/dist/esm2022/map/services/controls/controls.service.mjs +39 -39
  74. package/dist/esm2022/map/services/drawing/drawing-generation.service.mjs +25 -25
  75. package/dist/esm2022/map/services/drawing/drawing.service.mjs +101 -101
  76. package/dist/esm2022/map/services/drawing/feature-modification.service.mjs +103 -103
  77. package/dist/esm2022/map/services/feature.service.mjs +21 -21
  78. package/dist/esm2022/map/services/map-click.service.mjs +55 -55
  79. package/dist/esm2022/map/services/map-feature.service.mjs +55 -55
  80. package/dist/esm2022/map/services/map-management.service.mjs +103 -103
  81. package/dist/esm2022/map/services/map-postboy.service.mjs +18 -18
  82. package/dist/esm2022/map/services/map-state.service.mjs +43 -43
  83. package/dist/esm2022/map/services/message-registrator.service.mjs +82 -82
  84. package/dist/esm2022/maps-components.mjs +4 -4
  85. package/dist/esm2022/public-api.mjs +4 -4
  86. package/dist/esm2022/src/map/common/destructible.component.mjs +18 -18
  87. package/dist/esm2022/src/map/common/id.generator.mjs +14 -14
  88. package/dist/esm2022/src/map/helpers/index.mjs +4 -4
  89. package/dist/esm2022/src/map/helpers/marker-style.helper.mjs +28 -28
  90. package/dist/esm2022/src/map/helpers/polygon-style.helper.mjs +32 -32
  91. package/dist/esm2022/src/map/helpers/stringify-feature.helper.mjs +58 -58
  92. package/dist/esm2022/src/map/helpers/text-style.helper.mjs +13 -13
  93. package/dist/esm2022/src/map/map-plate/controls/index.mjs +2 -2
  94. package/dist/esm2022/src/map/map-plate/controls/map-control-zoom/map-control-zoom.component.mjs +52 -52
  95. package/dist/esm2022/src/map/map-plate/controls/map-control-zoom/zoom-control.factory.mjs +12 -12
  96. package/dist/esm2022/src/map/map-plate/controls/map-control-zoom/zoom-control.settings.mjs +44 -44
  97. package/dist/esm2022/src/map/map-plate/features/index.mjs +2 -2
  98. package/dist/esm2022/src/map/map-plate/features/markers/markers.component.mjs +42 -42
  99. package/dist/esm2022/src/map/map-plate/features/polygons/polygons.component.mjs +42 -42
  100. package/dist/esm2022/src/map/map-plate/layers/cluster-layer/cluster-layer-factory.service.mjs +59 -59
  101. package/dist/esm2022/src/map/map-plate/layers/cluster-layer/cluster-layer.component.mjs +52 -52
  102. package/dist/esm2022/src/map/map-plate/layers/cluster-layer/cluster-layer.manager.mjs +38 -38
  103. package/dist/esm2022/src/map/map-plate/layers/cluster-layer/cluster-layer.settings.mjs +66 -66
  104. package/dist/esm2022/src/map/map-plate/layers/feature-layer/feature-layer.component.mjs +52 -52
  105. package/dist/esm2022/src/map/map-plate/layers/feature-layer/feature-layer.factory.mjs +28 -28
  106. package/dist/esm2022/src/map/map-plate/layers/feature-layer/feature-layer.settings.mjs +91 -91
  107. package/dist/esm2022/src/map/map-plate/layers/index.mjs +7 -7
  108. package/dist/esm2022/src/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.mjs +57 -57
  109. package/dist/esm2022/src/map/map-plate/layers/tile-layer/tile-layer.component.mjs +52 -52
  110. package/dist/esm2022/src/map/map-plate/layers/tile-layer/tile-layer.factory.mjs +50 -50
  111. package/dist/esm2022/src/map/map-plate/layers/tile-layer/tile-layer.settings.mjs +44 -44
  112. package/dist/esm2022/src/map/map-plate/map-plate.component.mjs +102 -102
  113. package/dist/esm2022/src/map/map-plate/map-plate.factory.service.mjs +27 -27
  114. package/dist/esm2022/src/map/map-plate/tooltips/index.mjs +2 -2
  115. package/dist/esm2022/src/map/map-plate/tooltips/tooltip/tooltip.component.mjs +81 -81
  116. package/dist/esm2022/src/map/map-plate/tooltips/tooltip/tooltip.settings.mjs +30 -30
  117. package/dist/esm2022/src/map/map.module.mjs +63 -63
  118. package/dist/esm2022/src/map/maps-components-src-map.mjs +4 -4
  119. package/dist/esm2022/src/map/messages/commands/add-control.command.mjs +12 -12
  120. package/dist/esm2022/src/map/messages/commands/add-layer.command.mjs +12 -12
  121. package/dist/esm2022/src/map/messages/commands/add-tile.command.mjs +12 -12
  122. package/dist/esm2022/src/map/messages/commands/cancel-drawing.command.mjs +7 -7
  123. package/dist/esm2022/src/map/messages/commands/cancel-feature-modification.command.mjs +7 -7
  124. package/dist/esm2022/src/map/messages/commands/close-tooltip.command.mjs +12 -12
  125. package/dist/esm2022/src/map/messages/commands/draw-selection-area.command.mjs +16 -16
  126. package/dist/esm2022/src/map/messages/commands/fit-to-features.command.mjs +14 -14
  127. package/dist/esm2022/src/map/messages/commands/fit-to-polygons.command.mjs +14 -14
  128. package/dist/esm2022/src/map/messages/commands/modify-feature.command.mjs +17 -17
  129. package/dist/esm2022/src/map/messages/commands/place-layer-features.command.mjs +14 -14
  130. package/dist/esm2022/src/map/messages/commands/remove-control.command.mjs +12 -12
  131. package/dist/esm2022/src/map/messages/commands/remove-layer.command.mjs +12 -12
  132. package/dist/esm2022/src/map/messages/commands/remove-tile.command.mjs +12 -12
  133. package/dist/esm2022/src/map/messages/commands/set-map-center.command.mjs +25 -25
  134. package/dist/esm2022/src/map/messages/commands/start-drawing.command.mjs +17 -17
  135. package/dist/esm2022/src/map/messages/events/drawing-finished.event.mjs +10 -10
  136. package/dist/esm2022/src/map/messages/events/map-click.event.mjs +16 -16
  137. package/dist/esm2022/src/map/messages/events/map-move-end.event.mjs +14 -14
  138. package/dist/esm2022/src/map/messages/events/map-rendered.event.mjs +12 -12
  139. package/dist/esm2022/src/map/messages/executors/calculate-area.executor.mjs +12 -12
  140. package/dist/esm2022/src/map/messages/executors/filter-features-in-area.executor.mjs +14 -14
  141. package/dist/esm2022/src/map/messages/executors/generate-draw.executor.mjs +16 -16
  142. package/dist/esm2022/src/map/messages/executors/generate-zoom-control.executor.mjs +12 -12
  143. package/dist/esm2022/src/map/messages/index.mjs +14 -14
  144. package/dist/esm2022/src/map/messages/queries/get-features-in-area.query.mjs +14 -14
  145. package/dist/esm2022/src/map/messages/queries/get-layer.query.mjs +12 -12
  146. package/dist/esm2022/src/map/models/drawing-type.enum.mjs +7 -7
  147. package/dist/esm2022/src/map/models/feature-format.enum.mjs +5 -5
  148. package/dist/esm2022/src/map/models/i-identified.mjs +1 -1
  149. package/dist/esm2022/src/map/models/index.mjs +7 -7
  150. package/dist/esm2022/src/map/models/map-control.mjs +14 -14
  151. package/dist/esm2022/src/map/models/map-lyrs.enum.mjs +18 -18
  152. package/dist/esm2022/src/map/models/map-settings.mjs +50 -50
  153. package/dist/esm2022/src/map/models/map.constants.mjs +4 -4
  154. package/dist/esm2022/src/map/models/marker-model.mjs +28 -28
  155. package/dist/esm2022/src/map/models/polygon.model.mjs +32 -32
  156. package/dist/esm2022/src/map/public-api.mjs +15 -15
  157. package/dist/esm2022/src/map/services/controls/controls.service.mjs +39 -39
  158. package/dist/esm2022/src/map/services/drawing/drawing-generation.service.mjs +25 -25
  159. package/dist/esm2022/src/map/services/drawing/drawing.service.mjs +101 -101
  160. package/dist/esm2022/src/map/services/drawing/feature-modification.service.mjs +103 -103
  161. package/dist/esm2022/src/map/services/feature.service.mjs +21 -21
  162. package/dist/esm2022/src/map/services/map-click.service.mjs +55 -55
  163. package/dist/esm2022/src/map/services/map-feature.service.mjs +55 -55
  164. package/dist/esm2022/src/map/services/map-management.service.mjs +103 -103
  165. package/dist/esm2022/src/map/services/map-postboy.service.mjs +18 -18
  166. package/dist/esm2022/src/map/services/map-state.service.mjs +43 -43
  167. package/dist/esm2022/src/map/services/message-registrator.service.mjs +82 -82
  168. package/dist/fesm2022/maps-components-src-map.mjs +2109 -2109
  169. package/dist/fesm2022/maps-components-src-map.mjs.map +1 -1
  170. package/dist/fesm2022/maps-components.mjs +2111 -2111
  171. package/dist/fesm2022/maps-components.mjs.map +1 -1
  172. package/dist/index.d.ts +5 -5
  173. package/dist/map/common/destructible.component.d.ts +10 -10
  174. package/dist/map/common/id.generator.d.ts +4 -4
  175. package/dist/map/helpers/index.d.ts +4 -4
  176. package/dist/map/helpers/marker-style.helper.d.ts +7 -7
  177. package/dist/map/helpers/polygon-style.helper.d.ts +5 -5
  178. package/dist/map/helpers/stringify-feature.helper.d.ts +8 -8
  179. package/dist/map/helpers/text-style.helper.d.ts +4 -4
  180. package/dist/map/map-plate/controls/index.d.ts +2 -2
  181. package/dist/map/map-plate/controls/map-control-zoom/map-control-zoom.component.d.ts +19 -19
  182. package/dist/map/map-plate/controls/map-control-zoom/zoom-control.factory.d.ts +5 -5
  183. package/dist/map/map-plate/controls/map-control-zoom/zoom-control.settings.d.ts +14 -14
  184. package/dist/map/map-plate/features/index.d.ts +2 -2
  185. package/dist/map/map-plate/features/markers/markers.component.d.ts +16 -16
  186. package/dist/map/map-plate/features/polygons/polygons.component.d.ts +16 -16
  187. package/dist/map/map-plate/layers/cluster-layer/cluster-layer-factory.service.d.ts +11 -11
  188. package/dist/map/map-plate/layers/cluster-layer/cluster-layer.component.d.ts +21 -21
  189. package/dist/map/map-plate/layers/cluster-layer/cluster-layer.manager.d.ts +13 -13
  190. package/dist/map/map-plate/layers/cluster-layer/cluster-layer.settings.d.ts +22 -22
  191. package/dist/map/map-plate/layers/feature-layer/feature-layer.component.d.ts +22 -22
  192. package/dist/map/map-plate/layers/feature-layer/feature-layer.factory.d.ts +9 -9
  193. package/dist/map/map-plate/layers/feature-layer/feature-layer.settings.d.ts +61 -61
  194. package/dist/map/map-plate/layers/index.d.ts +7 -7
  195. package/dist/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.d.ts +19 -19
  196. package/dist/map/map-plate/layers/tile-layer/tile-layer.component.d.ts +21 -21
  197. package/dist/map/map-plate/layers/tile-layer/tile-layer.factory.d.ts +11 -11
  198. package/dist/map/map-plate/layers/tile-layer/tile-layer.settings.d.ts +14 -14
  199. package/dist/map/map-plate/map-plate.component.d.ts +27 -27
  200. package/dist/map/map-plate/map-plate.factory.service.d.ts +8 -8
  201. package/dist/map/map-plate/tooltips/index.d.ts +2 -2
  202. package/dist/map/map-plate/tooltips/tooltip/tooltip.component.d.ts +26 -26
  203. package/dist/map/map-plate/tooltips/tooltip/tooltip.settings.d.ts +11 -11
  204. package/dist/map/map.module.d.ts +17 -17
  205. package/dist/map/messages/commands/add-control.command.d.ts +8 -8
  206. package/dist/map/messages/commands/add-layer.command.d.ts +10 -10
  207. package/dist/map/messages/commands/add-tile.command.d.ts +9 -9
  208. package/dist/map/messages/commands/cancel-drawing.command.d.ts +5 -5
  209. package/dist/map/messages/commands/cancel-feature-modification.command.d.ts +5 -5
  210. package/dist/map/messages/commands/close-tooltip.command.d.ts +7 -7
  211. package/dist/map/messages/commands/draw-selection-area.command.d.ts +13 -13
  212. package/dist/map/messages/commands/fit-to-features.command.d.ts +10 -10
  213. package/dist/map/messages/commands/fit-to-polygons.command.d.ts +9 -9
  214. package/dist/map/messages/commands/modify-feature.command.d.ts +11 -11
  215. package/dist/map/messages/commands/place-layer-features.command.d.ts +10 -10
  216. package/dist/map/messages/commands/remove-control.command.d.ts +8 -8
  217. package/dist/map/messages/commands/remove-layer.command.d.ts +8 -8
  218. package/dist/map/messages/commands/remove-tile.command.d.ts +9 -9
  219. package/dist/map/messages/commands/set-map-center.command.d.ts +18 -18
  220. package/dist/map/messages/commands/start-drawing.command.d.ts +11 -11
  221. package/dist/map/messages/events/drawing-finished.event.d.ts +6 -6
  222. package/dist/map/messages/events/map-click.event.d.ts +20 -20
  223. package/dist/map/messages/events/map-move-end.event.d.ts +8 -8
  224. package/dist/map/messages/events/map-rendered.event.d.ts +8 -8
  225. package/dist/map/messages/executors/calculate-area.executor.d.ts +10 -10
  226. package/dist/map/messages/executors/filter-features-in-area.executor.d.ts +10 -10
  227. package/dist/map/messages/executors/generate-draw.executor.d.ts +14 -14
  228. package/dist/map/messages/executors/generate-zoom-control.executor.d.ts +9 -9
  229. package/dist/map/messages/index.d.ts +14 -14
  230. package/dist/map/messages/queries/get-features-in-area.query.d.ts +11 -11
  231. package/dist/map/messages/queries/get-layer.query.d.ts +10 -10
  232. package/dist/map/models/drawing-type.enum.d.ts +6 -6
  233. package/dist/map/models/feature-format.enum.d.ts +4 -4
  234. package/dist/map/models/i-identified.d.ts +3 -3
  235. package/dist/map/models/index.d.ts +7 -7
  236. package/dist/map/models/map-control.d.ts +13 -13
  237. package/dist/map/models/map-lyrs.enum.d.ts +10 -10
  238. package/dist/map/models/map-settings.d.ts +17 -17
  239. package/dist/map/models/map.constants.d.ts +4 -4
  240. package/dist/map/models/marker-model.d.ts +16 -16
  241. package/dist/map/models/polygon.model.d.ts +19 -19
  242. package/dist/map/public-api.d.ts +12 -12
  243. package/dist/map/services/controls/controls.service.d.ts +14 -14
  244. package/dist/map/services/drawing/drawing-generation.service.d.ts +6 -6
  245. package/dist/map/services/drawing/drawing.service.d.ts +19 -19
  246. package/dist/map/services/drawing/feature-modification.service.d.ts +22 -22
  247. package/dist/map/services/feature.service.d.ts +9 -9
  248. package/dist/map/services/map-click.service.d.ts +16 -16
  249. package/dist/map/services/map-feature.service.d.ts +16 -16
  250. package/dist/map/services/map-management.service.d.ts +20 -20
  251. package/dist/map/services/map-postboy.service.d.ts +7 -7
  252. package/dist/map/services/map-state.service.d.ts +13 -13
  253. package/dist/map/services/message-registrator.service.d.ts +17 -17
  254. package/dist/public-api.d.ts +1 -1
  255. package/dist/src/map/common/destructible.component.d.ts +10 -10
  256. package/dist/src/map/common/id.generator.d.ts +4 -4
  257. package/dist/src/map/helpers/index.d.ts +4 -4
  258. package/dist/src/map/helpers/marker-style.helper.d.ts +7 -7
  259. package/dist/src/map/helpers/polygon-style.helper.d.ts +5 -5
  260. package/dist/src/map/helpers/stringify-feature.helper.d.ts +8 -8
  261. package/dist/src/map/helpers/text-style.helper.d.ts +4 -4
  262. package/dist/src/map/index.d.ts +5 -5
  263. package/dist/src/map/map-plate/controls/index.d.ts +2 -2
  264. package/dist/src/map/map-plate/controls/map-control-zoom/map-control-zoom.component.d.ts +19 -19
  265. package/dist/src/map/map-plate/controls/map-control-zoom/zoom-control.factory.d.ts +5 -5
  266. package/dist/src/map/map-plate/controls/map-control-zoom/zoom-control.settings.d.ts +14 -14
  267. package/dist/src/map/map-plate/features/index.d.ts +2 -2
  268. package/dist/src/map/map-plate/features/markers/markers.component.d.ts +16 -16
  269. package/dist/src/map/map-plate/features/polygons/polygons.component.d.ts +16 -16
  270. package/dist/src/map/map-plate/layers/cluster-layer/cluster-layer-factory.service.d.ts +11 -11
  271. package/dist/src/map/map-plate/layers/cluster-layer/cluster-layer.component.d.ts +21 -21
  272. package/dist/src/map/map-plate/layers/cluster-layer/cluster-layer.manager.d.ts +13 -13
  273. package/dist/src/map/map-plate/layers/cluster-layer/cluster-layer.settings.d.ts +22 -22
  274. package/dist/src/map/map-plate/layers/feature-layer/feature-layer.component.d.ts +22 -22
  275. package/dist/src/map/map-plate/layers/feature-layer/feature-layer.factory.d.ts +9 -9
  276. package/dist/src/map/map-plate/layers/feature-layer/feature-layer.settings.d.ts +61 -61
  277. package/dist/src/map/map-plate/layers/index.d.ts +7 -7
  278. package/dist/src/map/map-plate/layers/osm-tile-layer/osm-tile-layer.component.d.ts +19 -19
  279. package/dist/src/map/map-plate/layers/tile-layer/tile-layer.component.d.ts +21 -21
  280. package/dist/src/map/map-plate/layers/tile-layer/tile-layer.factory.d.ts +11 -11
  281. package/dist/src/map/map-plate/layers/tile-layer/tile-layer.settings.d.ts +14 -14
  282. package/dist/src/map/map-plate/map-plate.component.d.ts +27 -27
  283. package/dist/src/map/map-plate/map-plate.factory.service.d.ts +8 -8
  284. package/dist/src/map/map-plate/tooltips/index.d.ts +2 -2
  285. package/dist/src/map/map-plate/tooltips/tooltip/tooltip.component.d.ts +26 -26
  286. package/dist/src/map/map-plate/tooltips/tooltip/tooltip.settings.d.ts +11 -11
  287. package/dist/src/map/map.module.d.ts +17 -17
  288. package/dist/src/map/messages/commands/add-control.command.d.ts +8 -8
  289. package/dist/src/map/messages/commands/add-layer.command.d.ts +10 -10
  290. package/dist/src/map/messages/commands/add-tile.command.d.ts +9 -9
  291. package/dist/src/map/messages/commands/cancel-drawing.command.d.ts +5 -5
  292. package/dist/src/map/messages/commands/cancel-feature-modification.command.d.ts +5 -5
  293. package/dist/src/map/messages/commands/close-tooltip.command.d.ts +7 -7
  294. package/dist/src/map/messages/commands/draw-selection-area.command.d.ts +13 -13
  295. package/dist/src/map/messages/commands/fit-to-features.command.d.ts +10 -10
  296. package/dist/src/map/messages/commands/fit-to-polygons.command.d.ts +9 -9
  297. package/dist/src/map/messages/commands/modify-feature.command.d.ts +11 -11
  298. package/dist/src/map/messages/commands/place-layer-features.command.d.ts +10 -10
  299. package/dist/src/map/messages/commands/remove-control.command.d.ts +8 -8
  300. package/dist/src/map/messages/commands/remove-layer.command.d.ts +8 -8
  301. package/dist/src/map/messages/commands/remove-tile.command.d.ts +9 -9
  302. package/dist/src/map/messages/commands/set-map-center.command.d.ts +18 -18
  303. package/dist/src/map/messages/commands/start-drawing.command.d.ts +11 -11
  304. package/dist/src/map/messages/events/drawing-finished.event.d.ts +6 -6
  305. package/dist/src/map/messages/events/map-click.event.d.ts +20 -20
  306. package/dist/src/map/messages/events/map-move-end.event.d.ts +8 -8
  307. package/dist/src/map/messages/events/map-rendered.event.d.ts +8 -8
  308. package/dist/src/map/messages/executors/calculate-area.executor.d.ts +10 -10
  309. package/dist/src/map/messages/executors/filter-features-in-area.executor.d.ts +10 -10
  310. package/dist/src/map/messages/executors/generate-draw.executor.d.ts +14 -14
  311. package/dist/src/map/messages/executors/generate-zoom-control.executor.d.ts +9 -9
  312. package/dist/src/map/messages/index.d.ts +14 -14
  313. package/dist/src/map/messages/queries/get-features-in-area.query.d.ts +11 -11
  314. package/dist/src/map/messages/queries/get-layer.query.d.ts +10 -10
  315. package/dist/src/map/models/drawing-type.enum.d.ts +6 -6
  316. package/dist/src/map/models/feature-format.enum.d.ts +4 -4
  317. package/dist/src/map/models/i-identified.d.ts +3 -3
  318. package/dist/src/map/models/index.d.ts +7 -7
  319. package/dist/src/map/models/map-control.d.ts +13 -13
  320. package/dist/src/map/models/map-lyrs.enum.d.ts +10 -10
  321. package/dist/src/map/models/map-settings.d.ts +17 -17
  322. package/dist/src/map/models/map.constants.d.ts +4 -4
  323. package/dist/src/map/models/marker-model.d.ts +16 -16
  324. package/dist/src/map/models/polygon.model.d.ts +19 -19
  325. package/dist/src/map/public-api.d.ts +12 -12
  326. package/dist/src/map/services/controls/controls.service.d.ts +14 -14
  327. package/dist/src/map/services/drawing/drawing-generation.service.d.ts +6 -6
  328. package/dist/src/map/services/drawing/drawing.service.d.ts +19 -19
  329. package/dist/src/map/services/drawing/feature-modification.service.d.ts +22 -22
  330. package/dist/src/map/services/feature.service.d.ts +9 -9
  331. package/dist/src/map/services/map-click.service.d.ts +16 -16
  332. package/dist/src/map/services/map-feature.service.d.ts +16 -16
  333. package/dist/src/map/services/map-management.service.d.ts +20 -20
  334. package/dist/src/map/services/map-postboy.service.d.ts +7 -7
  335. package/dist/src/map/services/map-state.service.d.ts +13 -13
  336. package/dist/src/map/services/message-registrator.service.d.ts +17 -17
  337. package/package.json +23 -24
  338. package/dist/package.json +0 -35
@@ -1,25 +1,25 @@
1
- import { Draw } from 'ol/interaction';
2
- import { DrawingType } from '../../models';
3
- import { createBox, createRegularPolygon } from 'ol/interaction/Draw';
4
- export class DrawingGenerationService {
5
- static getDraw(ev) {
6
- return new Draw({
7
- source: ev.layer.getSource(),
8
- type: ev.type === DrawingType.Polygon ? 'Polygon' : 'Circle',
9
- style: ev.style,
10
- geometryFunction: DrawingGenerationService.geometryFunc(ev.type),
11
- });
12
- }
13
- static geometryFunc(type) {
14
- switch (type) {
15
- case DrawingType.Circle:
16
- return createRegularPolygon(32);
17
- case DrawingType.Box:
18
- return createBox();
19
- case DrawingType.Square:
20
- return createRegularPolygon(4);
21
- }
22
- return undefined;
23
- }
24
- }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2luZy1nZW5lcmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBzLWNvbXBvbmVudHMvc3JjL21hcC9zZXJ2aWNlcy9kcmF3aW5nL2RyYXdpbmctZ2VuZXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFHeEYsTUFBTSxPQUFPLHdCQUF3QjtJQUM1QixNQUFNLENBQUMsT0FBTyxDQUFDLEVBQXdCO1FBQzVDLE9BQU8sSUFBSSxJQUFJLENBQUM7WUFDZCxNQUFNLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUc7WUFDN0IsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRO1lBQzVELEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSztZQUNmLGdCQUFnQixFQUFFLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO1NBQ2pFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQWlCO1FBQzNDLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxXQUFXLENBQUMsTUFBTTtnQkFDckIsT0FBTyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsQyxLQUFLLFdBQVcsQ0FBQyxHQUFHO2dCQUNsQixPQUFPLFNBQVMsRUFBRSxDQUFDO1lBQ3JCLEtBQUssV0FBVyxDQUFDLE1BQU07Z0JBQ3JCLE9BQU8sb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEcmF3IH0gZnJvbSAnb2wvaW50ZXJhY3Rpb24nO1xuaW1wb3J0IHsgRHJhd2luZ1R5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgY3JlYXRlQm94LCBjcmVhdGVSZWd1bGFyUG9seWdvbiwgR2VvbWV0cnlGdW5jdGlvbiB9IGZyb20gJ29sL2ludGVyYWN0aW9uL0RyYXcnO1xuaW1wb3J0IHsgR2VuZXJhdGVEcmF3RXhlY3V0b3IgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9leGVjdXRvcnMvZ2VuZXJhdGUtZHJhdy5leGVjdXRvcic7XG5cbmV4cG9ydCBjbGFzcyBEcmF3aW5nR2VuZXJhdGlvblNlcnZpY2Uge1xuICBwdWJsaWMgc3RhdGljIGdldERyYXcoZXY6IEdlbmVyYXRlRHJhd0V4ZWN1dG9yKSB7XG4gICAgcmV0dXJuIG5ldyBEcmF3KHtcbiAgICAgIHNvdXJjZTogZXYubGF5ZXIuZ2V0U291cmNlKCkhLFxuICAgICAgdHlwZTogZXYudHlwZSA9PT0gRHJhd2luZ1R5cGUuUG9seWdvbiA/ICdQb2x5Z29uJyA6ICdDaXJjbGUnLFxuICAgICAgc3R5bGU6IGV2LnN0eWxlLFxuICAgICAgZ2VvbWV0cnlGdW5jdGlvbjogRHJhd2luZ0dlbmVyYXRpb25TZXJ2aWNlLmdlb21ldHJ5RnVuYyhldi50eXBlKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdlb21ldHJ5RnVuYyh0eXBlOiBEcmF3aW5nVHlwZSk6IEdlb21ldHJ5RnVuY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBEcmF3aW5nVHlwZS5DaXJjbGU6XG4gICAgICAgIHJldHVybiBjcmVhdGVSZWd1bGFyUG9seWdvbigzMik7XG4gICAgICBjYXNlIERyYXdpbmdUeXBlLkJveDpcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUJveCgpO1xuICAgICAgY2FzZSBEcmF3aW5nVHlwZS5TcXVhcmU6XG4gICAgICAgIHJldHVybiBjcmVhdGVSZWd1bGFyUG9seWdvbig0KTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuIl19
1
+ import { Draw } from 'ol/interaction';
2
+ import { DrawingType } from '../../models';
3
+ import { createBox, createRegularPolygon } from 'ol/interaction/Draw';
4
+ export class DrawingGenerationService {
5
+ static getDraw(ev) {
6
+ return new Draw({
7
+ source: ev.layer.getSource(),
8
+ type: ev.type === DrawingType.Polygon ? 'Polygon' : 'Circle',
9
+ style: ev.style,
10
+ geometryFunction: DrawingGenerationService.geometryFunc(ev.type),
11
+ });
12
+ }
13
+ static geometryFunc(type) {
14
+ switch (type) {
15
+ case DrawingType.Circle:
16
+ return createRegularPolygon(32);
17
+ case DrawingType.Box:
18
+ return createBox();
19
+ case DrawingType.Square:
20
+ return createRegularPolygon(4);
21
+ }
22
+ return undefined;
23
+ }
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2luZy1nZW5lcmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBzLWNvbXBvbmVudHMvc3JjL21hcC9zZXJ2aWNlcy9kcmF3aW5nL2RyYXdpbmctZ2VuZXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7QUFHeEYsTUFBTSxPQUFPLHdCQUF3QjtJQUM1QixNQUFNLENBQUMsT0FBTyxDQUFDLEVBQXdCO1FBQzVDLE9BQU8sSUFBSSxJQUFJLENBQUM7WUFDZCxNQUFNLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUc7WUFDN0IsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRO1lBQzVELEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSztZQUNmLGdCQUFnQixFQUFFLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO1NBQ2pFLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQWlCO1FBQzNDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLFdBQVcsQ0FBQyxNQUFNO2dCQUNyQixPQUFPLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2xDLEtBQUssV0FBVyxDQUFDLEdBQUc7Z0JBQ2xCLE9BQU8sU0FBUyxFQUFFLENBQUM7WUFDckIsS0FBSyxXQUFXLENBQUMsTUFBTTtnQkFDckIsT0FBTyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHJhdyB9IGZyb20gJ29sL2ludGVyYWN0aW9uJztcbmltcG9ydCB7IERyYXdpbmdUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IGNyZWF0ZUJveCwgY3JlYXRlUmVndWxhclBvbHlnb24sIEdlb21ldHJ5RnVuY3Rpb24gfSBmcm9tICdvbC9pbnRlcmFjdGlvbi9EcmF3JztcbmltcG9ydCB7IEdlbmVyYXRlRHJhd0V4ZWN1dG9yIH0gZnJvbSAnLi4vLi4vbWVzc2FnZXMvZXhlY3V0b3JzL2dlbmVyYXRlLWRyYXcuZXhlY3V0b3InO1xuXG5leHBvcnQgY2xhc3MgRHJhd2luZ0dlbmVyYXRpb25TZXJ2aWNlIHtcbiAgcHVibGljIHN0YXRpYyBnZXREcmF3KGV2OiBHZW5lcmF0ZURyYXdFeGVjdXRvcikge1xuICAgIHJldHVybiBuZXcgRHJhdyh7XG4gICAgICBzb3VyY2U6IGV2LmxheWVyLmdldFNvdXJjZSgpISxcbiAgICAgIHR5cGU6IGV2LnR5cGUgPT09IERyYXdpbmdUeXBlLlBvbHlnb24gPyAnUG9seWdvbicgOiAnQ2lyY2xlJyxcbiAgICAgIHN0eWxlOiBldi5zdHlsZSxcbiAgICAgIGdlb21ldHJ5RnVuY3Rpb246IERyYXdpbmdHZW5lcmF0aW9uU2VydmljZS5nZW9tZXRyeUZ1bmMoZXYudHlwZSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZW9tZXRyeUZ1bmModHlwZTogRHJhd2luZ1R5cGUpOiBHZW9tZXRyeUZ1bmN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgRHJhd2luZ1R5cGUuQ2lyY2xlOlxuICAgICAgICByZXR1cm4gY3JlYXRlUmVndWxhclBvbHlnb24oMzIpO1xuICAgICAgY2FzZSBEcmF3aW5nVHlwZS5Cb3g6XG4gICAgICAgIHJldHVybiBjcmVhdGVCb3goKTtcbiAgICAgIGNhc2UgRHJhd2luZ1R5cGUuU3F1YXJlOlxuICAgICAgICByZXR1cm4gY3JlYXRlUmVndWxhclBvbHlnb24oNCk7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
@@ -1,101 +1,101 @@
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 { 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.subscribe(DrawSelectionAreaCommand.ID).subscribe((ev) => {
32
- const drawingCommand = new StartDrawingCommand(ev.type, ev.style);
33
- drawingCommand.result.subscribe((r) => {
34
- if (!r) {
35
- ev.finish(new Dictionary());
36
- return;
37
- }
38
- const area = PolygonModel.fromGeoJson(1, r).feature.getGeometry();
39
- const getFeaturesCommand = new GetFeaturesInAreaQuery(area, ev.ignore);
40
- getFeaturesCommand.result.subscribe((result) => ev.finish(result));
41
- this.postboy.fire(getFeaturesCommand);
42
- });
43
- this.postboy.fire(drawingCommand);
44
- });
45
- }
46
- observeDrawing() {
47
- this.postboy.subscribe(StartDrawingCommand.ID).subscribe((ev) => {
48
- this.draw((l) => {
49
- if (!l || !this.map) {
50
- this.clearInteraction(l);
51
- return;
52
- }
53
- const cancelSub = this.observeCancelation(ev, l);
54
- this.drawInteraction = this.postboy.execute(new GenerateDrawExecutor(l, ev.style, ev.type));
55
- this.map?.addInteraction(this.drawInteraction);
56
- this.drawInteraction.on('drawend', (evt) => {
57
- cancelSub.unsubscribe();
58
- this.onEnd(evt, ev, l);
59
- });
60
- });
61
- });
62
- }
63
- onEnd(evt, command, layer) {
64
- command.finish(command.format === FeatureOutputFormat.GeoJson
65
- ? new GeoJSON().writeFeature(evt.feature)
66
- : new WKT().writeFeature(evt.feature));
67
- this.clearInteraction(layer);
68
- }
69
- observeMapRender() {
70
- this.postboy.subscribe(MapRenderedEvent.ID).subscribe((m) => {
71
- this.map = m.map;
72
- });
73
- }
74
- draw(action) {
75
- const query = new GetLayerQuery(MapConstants.DrawingLayerId);
76
- query.result.subscribe((l) => action(l));
77
- this.postboy.fire(query);
78
- }
79
- observeCancelation(ev, layer) {
80
- return this.postboy
81
- .subscribe(CancelDrawingCommand.ID)
82
- .pipe(first())
83
- .subscribe(() => {
84
- ev.finish(null);
85
- this.clearInteraction(layer);
86
- });
87
- }
88
- clearInteraction(layer) {
89
- if (!!this.drawInteraction) {
90
- this.map?.removeInteraction(this.drawInteraction);
91
- layer?.setSource(new Source({}));
92
- }
93
- setTimeout(() => this.postboy.fire(new DrawingFinishedEvent()), 300);
94
- }
95
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrawingService, deps: [{ token: i1.MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
96
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrawingService });
97
- }
98
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DrawingService, decorators: [{
99
- type: Injectable
100
- }], ctorParameters: function () { return [{ type: i1.MapPostboyService }]; } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwcy1jb21wb25lbnRzL3NyYy9tYXAvc2VydmljZXMvZHJhd2luZy9kcmF3aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFcEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSWpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBR25ELE1BQU0sT0FBTyxjQUFjO0lBSUw7SUFIWixlQUFl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QztJQUNQLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUFxQztRQUM1RCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQzFCLElBQUksQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2xELEtBQUssRUFBRSxTQUFTLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNsQztRQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN2RSxDQUFDO3dHQXBGVSxjQUFjOzRHQUFkLGNBQWM7OzRGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUG9zdGJveURlcGVuZGluZ1NlcnZpY2UgfSBmcm9tICdAYXJ0c3Rlc2gvcG9zdGJveSc7XG5pbXBvcnQgeyBNYXBQb3N0Ym95U2VydmljZSB9IGZyb20gJy4uL21hcC1wb3N0Ym95LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhcnREcmF3aW5nQ29tbWFuZCB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL2NvbW1hbmRzL3N0YXJ0LWRyYXdpbmcuY29tbWFuZCc7XG5pbXBvcnQgeyBDYW5jZWxEcmF3aW5nQ29tbWFuZCB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL2NvbW1hbmRzL2NhbmNlbC1kcmF3aW5nLmNvbW1hbmQnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEcmF3aW5nRmluaXNoZWRFdmVudCB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL2V2ZW50cy9kcmF3aW5nLWZpbmlzaGVkLmV2ZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWFwUmVuZGVyZWRFdmVudCB9IGZyb20gJy4uLy4uL21lc3NhZ2VzJztcbmltcG9ydCB7IEdldExheWVyUXVlcnkgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9xdWVyaWVzL2dldC1sYXllci5xdWVyeSc7XG5pbXBvcnQgeyBNYXBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWFwLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBWZWN0b3IgYXMgTGF5ZXIgfSBmcm9tICdvbC9sYXllcic7XG5pbXBvcnQgVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0IHsgVmVjdG9yIGFzIFNvdXJjZSB9IGZyb20gJ29sL3NvdXJjZSc7XG5pbXBvcnQgeyBEcmF3IH0gZnJvbSAnb2wvaW50ZXJhY3Rpb24nO1xuaW1wb3J0IHsgRmVhdHVyZU91dHB1dEZvcm1hdCwgUG9seWdvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IE1hcCB9IGZyb20gJ29sJztcbmltcG9ydCB7IERyYXdFdmVudCB9IGZyb20gJ29sL2ludGVyYWN0aW9uL0RyYXcnO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tJztcbmltcG9ydCB7IEdlb0pTT04sIFdLVCB9IGZyb20gJ29sL2Zvcm1hdCc7XG5pbXBvcnQgeyBEcmF3U2VsZWN0aW9uQXJlYUNvbW1hbmQgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9jb21tYW5kcy9kcmF3LXNlbGVjdGlvbi1hcmVhLmNvbW1hbmQnO1xuaW1wb3J0IHsgR2V0RmVhdHVyZXNJbkFyZWFRdWVyeSB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL3F1ZXJpZXMvZ2V0LWZlYXR1cmVzLWluLWFyZWEucXVlcnknO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQgfSBmcm9tICcuLi8uLi9tb2RlbHMvaS1pZGVudGlmaWVkJztcbmltcG9ydCB7IEdlbmVyYXRlRHJhd0V4ZWN1dG9yIH0gZnJvbSAnLi4vLi4vbWVzc2FnZXMvZXhlY3V0b3JzL2dlbmVyYXRlLWRyYXcuZXhlY3V0b3InO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ0BhcnRzdGVzaC9jb2xsZWN0aW9ucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEcmF3aW5nU2VydmljZSBpbXBsZW1lbnRzIElQb3N0Ym95RGVwZW5kaW5nU2VydmljZSB7XG4gIHByaXZhdGUgZHJhd0ludGVyYWN0aW9uPzogRHJhdztcbiAgcHJpdmF0ZSBtYXA/OiBNYXA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb3N0Ym95OiBNYXBQb3N0Ym95U2VydmljZSkge31cblxuICB1cCgpOiB2b2lkIHtcbiAgICB0aGlzLm9ic2VydmVEcmF3aW5nKCk7XG4gICAgdGhpcy5vYnNlcnZlU2VsZWN0QXJlYSgpO1xuICAgIHRoaXMub2JzZXJ2ZU1hcFJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlU2VsZWN0QXJlYSgpIHtcbiAgICB0aGlzLnBvc3Rib3kuc3Vic2NyaWJlPERyYXdTZWxlY3Rpb25BcmVhQ29tbWFuZD4oRHJhd1NlbGVjdGlvbkFyZWFDb21tYW5kLklEKS5zdWJzY3JpYmUoKGV2KSA9PiB7XG4gICAgICBjb25zdCBkcmF3aW5nQ29tbWFuZCA9IG5ldyBTdGFydERyYXdpbmdDb21tYW5kKGV2LnR5cGUsIGV2LnN0eWxlKTtcbiAgICAgIGRyYXdpbmdDb21tYW5kLnJlc3VsdC5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgaWYgKCFyKSB7XG4gICAgICAgICAgZXYuZmluaXNoKG5ldyBEaWN0aW9uYXJ5PElJZGVudGlmaWVkW10+KCkpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcmVhID0gUG9seWdvbk1vZGVsLmZyb21HZW9Kc29uKDEsIHIpLmZlYXR1cmUuZ2V0R2VvbWV0cnkoKSE7XG4gICAgICAgIGNvbnN0IGdldEZlYXR1cmVzQ29tbWFuZCA9IG5ldyBHZXRGZWF0dXJlc0luQXJlYVF1ZXJ5KGFyZWEsIGV2Lmlnbm9yZSk7XG4gICAgICAgIGdldEZlYXR1cmVzQ29tbWFuZC5yZXN1bHQuc3Vic2NyaWJlKChyZXN1bHQpID0+IGV2LmZpbmlzaChyZXN1bHQpKTtcbiAgICAgICAgdGhpcy5wb3N0Ym95LmZpcmUoZ2V0RmVhdHVyZXNDb21tYW5kKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wb3N0Ym95LmZpcmUoZHJhd2luZ0NvbW1hbmQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlRHJhd2luZygpIHtcbiAgICB0aGlzLnBvc3Rib3kuc3Vic2NyaWJlPFN0YXJ0RHJhd2luZ0NvbW1hbmQ+KFN0YXJ0RHJhd2luZ0NvbW1hbmQuSUQpLnN1YnNjcmliZSgoZXYpID0+IHtcbiAgICAgIHRoaXMuZHJhdygobCkgPT4ge1xuICAgICAgICBpZiAoIWwgfHwgIXRoaXMubWFwKSB7XG4gICAgICAgICAgdGhpcy5jbGVhckludGVyYWN0aW9uKGwpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjYW5jZWxTdWIgPSB0aGlzLm9ic2VydmVDYW5jZWxhdGlvbihldiwgbCk7XG4gICAgICAgIHRoaXMuZHJhd0ludGVyYWN0aW9uID0gdGhpcy5wb3N0Ym95LmV4ZWN1dGUobmV3IEdlbmVyYXRlRHJhd0V4ZWN1dG9yKGwsIGV2LnN0eWxlLCBldi50eXBlKSkhO1xuICAgICAgICB0aGlzLm1hcD8uYWRkSW50ZXJhY3Rpb24odGhpcy5kcmF3SW50ZXJhY3Rpb24pO1xuICAgICAgICB0aGlzLmRyYXdJbnRlcmFjdGlvbi5vbignZHJhd2VuZCcsIChldnQ6IERyYXdFdmVudCkgPT4ge1xuICAgICAgICAgIGNhbmNlbFN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHRoaXMub25FbmQoZXZ0LCBldiwgbCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uRW5kKGV2dDogRHJhd0V2ZW50LCBjb21tYW5kOiBTdGFydERyYXdpbmdDb21tYW5kLCBsYXllcjogTGF5ZXI8VmVjdG9yU291cmNlPEdlb21ldHJ5Pj4pOiB2b2lkIHtcbiAgICBjb21tYW5kLmZpbmlzaChcbiAgICAgIGNvbW1hbmQuZm9ybWF0ID09PSBGZWF0dXJlT3V0cHV0Rm9ybWF0Lkdlb0pzb25cbiAgICAgICAgPyBuZXcgR2VvSlNPTigpLndyaXRlRmVhdHVyZShldnQuZmVhdHVyZSlcbiAgICAgICAgOiBuZXcgV0tUKCkud3JpdGVGZWF0dXJlKGV2dC5mZWF0dXJlKSxcbiAgICApO1xuICAgIHRoaXMuY2xlYXJJbnRlcmFjdGlvbihsYXllcik7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVNYXBSZW5kZXIoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YnNjcmliZTxNYXBSZW5kZXJlZEV2ZW50PihNYXBSZW5kZXJlZEV2ZW50LklEKS5zdWJzY3JpYmUoKG0pID0+IHtcbiAgICAgIHRoaXMubWFwID0gbS5tYXA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRyYXcoYWN0aW9uOiAobGF5ZXI6IExheWVyPFZlY3RvclNvdXJjZTxhbnk+PiB8IG51bGwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCBxdWVyeSA9IG5ldyBHZXRMYXllclF1ZXJ5KE1hcENvbnN0YW50cy5EcmF3aW5nTGF5ZXJJZCk7XG4gICAgcXVlcnkucmVzdWx0LnN1YnNjcmliZSgobCkgPT4gYWN0aW9uKGwpKTtcbiAgICB0aGlzLnBvc3Rib3kuZmlyZShxdWVyeSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVDYW5jZWxhdGlvbihldjogU3RhcnREcmF3aW5nQ29tbWFuZCwgbGF5ZXI6IExheWVyPFZlY3RvclNvdXJjZTxhbnk+PiB8IG51bGwpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLnBvc3Rib3lcbiAgICAgIC5zdWJzY3JpYmU8Q2FuY2VsRHJhd2luZ0NvbW1hbmQ+KENhbmNlbERyYXdpbmdDb21tYW5kLklEKVxuICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBldi5maW5pc2gobnVsbCk7XG4gICAgICAgIHRoaXMuY2xlYXJJbnRlcmFjdGlvbihsYXllcik7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJJbnRlcmFjdGlvbihsYXllcjogTGF5ZXI8U291cmNlPEdlb21ldHJ5Pj4gfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCEhdGhpcy5kcmF3SW50ZXJhY3Rpb24pIHtcbiAgICAgIHRoaXMubWFwPy5yZW1vdmVJbnRlcmFjdGlvbih0aGlzLmRyYXdJbnRlcmFjdGlvbik7XG4gICAgICBsYXllcj8uc2V0U291cmNlKG5ldyBTb3VyY2Uoe30pKTtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnBvc3Rib3kuZmlyZShuZXcgRHJhd2luZ0ZpbmlzaGVkRXZlbnQoKSksIDMwMCk7XG4gIH1cbn1cbiJdfQ==
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 { 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.subscribe(DrawSelectionAreaCommand.ID).subscribe((ev) => {
32
+ const drawingCommand = new StartDrawingCommand(ev.type, ev.style);
33
+ drawingCommand.result.subscribe((r) => {
34
+ if (!r) {
35
+ ev.finish(new Dictionary());
36
+ return;
37
+ }
38
+ const area = PolygonModel.fromGeoJson(1, r).feature.getGeometry();
39
+ const getFeaturesCommand = new GetFeaturesInAreaQuery(area, ev.ignore);
40
+ getFeaturesCommand.result.subscribe((result) => ev.finish(result));
41
+ this.postboy.fire(getFeaturesCommand);
42
+ });
43
+ this.postboy.fire(drawingCommand);
44
+ });
45
+ }
46
+ observeDrawing() {
47
+ this.postboy.subscribe(StartDrawingCommand.ID).subscribe((ev) => {
48
+ this.draw((l) => {
49
+ if (!l || !this.map) {
50
+ this.clearInteraction(l);
51
+ return;
52
+ }
53
+ const cancelSub = this.observeCancelation(ev, l);
54
+ this.drawInteraction = this.postboy.execute(new GenerateDrawExecutor(l, ev.style, ev.type));
55
+ this.map?.addInteraction(this.drawInteraction);
56
+ this.drawInteraction.on('drawend', (evt) => {
57
+ cancelSub.unsubscribe();
58
+ this.onEnd(evt, ev, l);
59
+ });
60
+ });
61
+ });
62
+ }
63
+ onEnd(evt, command, layer) {
64
+ command.finish(command.format === FeatureOutputFormat.GeoJson
65
+ ? new GeoJSON().writeFeature(evt.feature)
66
+ : new WKT().writeFeature(evt.feature));
67
+ this.clearInteraction(layer);
68
+ }
69
+ observeMapRender() {
70
+ this.postboy.subscribe(MapRenderedEvent.ID).subscribe((m) => {
71
+ this.map = m.map;
72
+ });
73
+ }
74
+ draw(action) {
75
+ const query = new GetLayerQuery(MapConstants.DrawingLayerId);
76
+ query.result.subscribe((l) => action(l));
77
+ this.postboy.fire(query);
78
+ }
79
+ observeCancelation(ev, layer) {
80
+ return this.postboy
81
+ .subscribe(CancelDrawingCommand.ID)
82
+ .pipe(first())
83
+ .subscribe(() => {
84
+ ev.finish(null);
85
+ this.clearInteraction(layer);
86
+ });
87
+ }
88
+ clearInteraction(layer) {
89
+ if (!!this.drawInteraction) {
90
+ this.map?.removeInteraction(this.drawInteraction);
91
+ layer?.setSource(new Source({}));
92
+ }
93
+ setTimeout(() => this.postboy.fire(new DrawingFinishedEvent()), 300);
94
+ }
95
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: DrawingService, deps: [{ token: i1.MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
96
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: DrawingService });
97
+ }
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: DrawingService, decorators: [{
99
+ type: Injectable
100
+ }], ctorParameters: () => [{ type: i1.MapPostboyService }] });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwcy1jb21wb25lbnRzL3NyYy9tYXAvc2VydmljZXMvZHJhd2luZy9kcmF3aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFcEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSWpFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRTNGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBR25ELE1BQU0sT0FBTyxjQUFjO0lBSUw7SUFIWixlQUFl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O1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQXFDO1FBQzVELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNsRCxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsQ0FBQztRQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN2RSxDQUFDO3VHQXBGVSxjQUFjOzJHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUG9zdGJveURlcGVuZGluZ1NlcnZpY2UgfSBmcm9tICdAYXJ0c3Rlc2gvcG9zdGJveSc7XG5pbXBvcnQgeyBNYXBQb3N0Ym95U2VydmljZSB9IGZyb20gJy4uL21hcC1wb3N0Ym95LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhcnREcmF3aW5nQ29tbWFuZCB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL2NvbW1hbmRzL3N0YXJ0LWRyYXdpbmcuY29tbWFuZCc7XG5pbXBvcnQgeyBDYW5jZWxEcmF3aW5nQ29tbWFuZCB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL2NvbW1hbmRzL2NhbmNlbC1kcmF3aW5nLmNvbW1hbmQnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEcmF3aW5nRmluaXNoZWRFdmVudCB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL2V2ZW50cy9kcmF3aW5nLWZpbmlzaGVkLmV2ZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWFwUmVuZGVyZWRFdmVudCB9IGZyb20gJy4uLy4uL21lc3NhZ2VzJztcbmltcG9ydCB7IEdldExheWVyUXVlcnkgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9xdWVyaWVzL2dldC1sYXllci5xdWVyeSc7XG5pbXBvcnQgeyBNYXBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvbWFwLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBWZWN0b3IgYXMgTGF5ZXIgfSBmcm9tICdvbC9sYXllcic7XG5pbXBvcnQgVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0IHsgVmVjdG9yIGFzIFNvdXJjZSB9IGZyb20gJ29sL3NvdXJjZSc7XG5pbXBvcnQgeyBEcmF3IH0gZnJvbSAnb2wvaW50ZXJhY3Rpb24nO1xuaW1wb3J0IHsgRmVhdHVyZU91dHB1dEZvcm1hdCwgUG9seWdvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IE1hcCB9IGZyb20gJ29sJztcbmltcG9ydCB7IERyYXdFdmVudCB9IGZyb20gJ29sL2ludGVyYWN0aW9uL0RyYXcnO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tJztcbmltcG9ydCB7IEdlb0pTT04sIFdLVCB9IGZyb20gJ29sL2Zvcm1hdCc7XG5pbXBvcnQgeyBEcmF3U2VsZWN0aW9uQXJlYUNvbW1hbmQgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9jb21tYW5kcy9kcmF3LXNlbGVjdGlvbi1hcmVhLmNvbW1hbmQnO1xuaW1wb3J0IHsgR2V0RmVhdHVyZXNJbkFyZWFRdWVyeSB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL3F1ZXJpZXMvZ2V0LWZlYXR1cmVzLWluLWFyZWEucXVlcnknO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQgfSBmcm9tICcuLi8uLi9tb2RlbHMvaS1pZGVudGlmaWVkJztcbmltcG9ydCB7IEdlbmVyYXRlRHJhd0V4ZWN1dG9yIH0gZnJvbSAnLi4vLi4vbWVzc2FnZXMvZXhlY3V0b3JzL2dlbmVyYXRlLWRyYXcuZXhlY3V0b3InO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ0BhcnRzdGVzaC9jb2xsZWN0aW9ucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEcmF3aW5nU2VydmljZSBpbXBsZW1lbnRzIElQb3N0Ym95RGVwZW5kaW5nU2VydmljZSB7XG4gIHByaXZhdGUgZHJhd0ludGVyYWN0aW9uPzogRHJhdztcbiAgcHJpdmF0ZSBtYXA/OiBNYXA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwb3N0Ym95OiBNYXBQb3N0Ym95U2VydmljZSkge31cblxuICB1cCgpOiB2b2lkIHtcbiAgICB0aGlzLm9ic2VydmVEcmF3aW5nKCk7XG4gICAgdGhpcy5vYnNlcnZlU2VsZWN0QXJlYSgpO1xuICAgIHRoaXMub2JzZXJ2ZU1hcFJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlU2VsZWN0QXJlYSgpIHtcbiAgICB0aGlzLnBvc3Rib3kuc3Vic2NyaWJlPERyYXdTZWxlY3Rpb25BcmVhQ29tbWFuZD4oRHJhd1NlbGVjdGlvbkFyZWFDb21tYW5kLklEKS5zdWJzY3JpYmUoKGV2KSA9PiB7XG4gICAgICBjb25zdCBkcmF3aW5nQ29tbWFuZCA9IG5ldyBTdGFydERyYXdpbmdDb21tYW5kKGV2LnR5cGUsIGV2LnN0eWxlKTtcbiAgICAgIGRyYXdpbmdDb21tYW5kLnJlc3VsdC5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgaWYgKCFyKSB7XG4gICAgICAgICAgZXYuZmluaXNoKG5ldyBEaWN0aW9uYXJ5PElJZGVudGlmaWVkW10+KCkpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhcmVhID0gUG9seWdvbk1vZGVsLmZyb21HZW9Kc29uKDEsIHIpLmZlYXR1cmUuZ2V0R2VvbWV0cnkoKSE7XG4gICAgICAgIGNvbnN0IGdldEZlYXR1cmVzQ29tbWFuZCA9IG5ldyBHZXRGZWF0dXJlc0luQXJlYVF1ZXJ5KGFyZWEsIGV2Lmlnbm9yZSk7XG4gICAgICAgIGdldEZlYXR1cmVzQ29tbWFuZC5yZXN1bHQuc3Vic2NyaWJlKChyZXN1bHQpID0+IGV2LmZpbmlzaChyZXN1bHQpKTtcbiAgICAgICAgdGhpcy5wb3N0Ym95LmZpcmUoZ2V0RmVhdHVyZXNDb21tYW5kKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wb3N0Ym95LmZpcmUoZHJhd2luZ0NvbW1hbmQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlRHJhd2luZygpIHtcbiAgICB0aGlzLnBvc3Rib3kuc3Vic2NyaWJlPFN0YXJ0RHJhd2luZ0NvbW1hbmQ+KFN0YXJ0RHJhd2luZ0NvbW1hbmQuSUQpLnN1YnNjcmliZSgoZXYpID0+IHtcbiAgICAgIHRoaXMuZHJhdygobCkgPT4ge1xuICAgICAgICBpZiAoIWwgfHwgIXRoaXMubWFwKSB7XG4gICAgICAgICAgdGhpcy5jbGVhckludGVyYWN0aW9uKGwpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjYW5jZWxTdWIgPSB0aGlzLm9ic2VydmVDYW5jZWxhdGlvbihldiwgbCk7XG4gICAgICAgIHRoaXMuZHJhd0ludGVyYWN0aW9uID0gdGhpcy5wb3N0Ym95LmV4ZWN1dGUobmV3IEdlbmVyYXRlRHJhd0V4ZWN1dG9yKGwsIGV2LnN0eWxlLCBldi50eXBlKSkhO1xuICAgICAgICB0aGlzLm1hcD8uYWRkSW50ZXJhY3Rpb24odGhpcy5kcmF3SW50ZXJhY3Rpb24pO1xuICAgICAgICB0aGlzLmRyYXdJbnRlcmFjdGlvbi5vbignZHJhd2VuZCcsIChldnQ6IERyYXdFdmVudCkgPT4ge1xuICAgICAgICAgIGNhbmNlbFN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHRoaXMub25FbmQoZXZ0LCBldiwgbCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uRW5kKGV2dDogRHJhd0V2ZW50LCBjb21tYW5kOiBTdGFydERyYXdpbmdDb21tYW5kLCBsYXllcjogTGF5ZXI8VmVjdG9yU291cmNlPEdlb21ldHJ5Pj4pOiB2b2lkIHtcbiAgICBjb21tYW5kLmZpbmlzaChcbiAgICAgIGNvbW1hbmQuZm9ybWF0ID09PSBGZWF0dXJlT3V0cHV0Rm9ybWF0Lkdlb0pzb25cbiAgICAgICAgPyBuZXcgR2VvSlNPTigpLndyaXRlRmVhdHVyZShldnQuZmVhdHVyZSlcbiAgICAgICAgOiBuZXcgV0tUKCkud3JpdGVGZWF0dXJlKGV2dC5mZWF0dXJlKSxcbiAgICApO1xuICAgIHRoaXMuY2xlYXJJbnRlcmFjdGlvbihsYXllcik7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVNYXBSZW5kZXIoKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YnNjcmliZTxNYXBSZW5kZXJlZEV2ZW50PihNYXBSZW5kZXJlZEV2ZW50LklEKS5zdWJzY3JpYmUoKG0pID0+IHtcbiAgICAgIHRoaXMubWFwID0gbS5tYXA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRyYXcoYWN0aW9uOiAobGF5ZXI6IExheWVyPFZlY3RvclNvdXJjZTxhbnk+PiB8IG51bGwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCBxdWVyeSA9IG5ldyBHZXRMYXllclF1ZXJ5KE1hcENvbnN0YW50cy5EcmF3aW5nTGF5ZXJJZCk7XG4gICAgcXVlcnkucmVzdWx0LnN1YnNjcmliZSgobCkgPT4gYWN0aW9uKGwpKTtcbiAgICB0aGlzLnBvc3Rib3kuZmlyZShxdWVyeSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVDYW5jZWxhdGlvbihldjogU3RhcnREcmF3aW5nQ29tbWFuZCwgbGF5ZXI6IExheWVyPFZlY3RvclNvdXJjZTxhbnk+PiB8IG51bGwpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLnBvc3Rib3lcbiAgICAgIC5zdWJzY3JpYmU8Q2FuY2VsRHJhd2luZ0NvbW1hbmQ+KENhbmNlbERyYXdpbmdDb21tYW5kLklEKVxuICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBldi5maW5pc2gobnVsbCk7XG4gICAgICAgIHRoaXMuY2xlYXJJbnRlcmFjdGlvbihsYXllcik7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJJbnRlcmFjdGlvbihsYXllcjogTGF5ZXI8U291cmNlPEdlb21ldHJ5Pj4gfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKCEhdGhpcy5kcmF3SW50ZXJhY3Rpb24pIHtcbiAgICAgIHRoaXMubWFwPy5yZW1vdmVJbnRlcmFjdGlvbih0aGlzLmRyYXdJbnRlcmFjdGlvbik7XG4gICAgICBsYXllcj8uc2V0U291cmNlKG5ldyBTb3VyY2Uoe30pKTtcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnBvc3Rib3kuZmlyZShuZXcgRHJhd2luZ0ZpbmlzaGVkRXZlbnQoKSksIDMwMCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,103 +1,103 @@
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.subscribe(ModifyFeatureCommand.ID).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
- this.addDragging(ev);
37
- });
38
- });
39
- }
40
- initFeature(layer, feature) {
41
- layer.getSource()?.clear();
42
- layer.getSource()?.addFeature(feature);
43
- }
44
- addModify(command) {
45
- this.modify = new Modify({
46
- features: new Collection([command.model.feature]),
47
- style: command.style,
48
- });
49
- this.modify.on('modifyend', () => {
50
- this.onModified(command);
51
- command.model.feature.changed();
52
- });
53
- this.map?.addInteraction(this.modify);
54
- }
55
- addDragging(command) {
56
- this.translate = new Translate({
57
- features: new Collection([command.model.feature]),
58
- condition: (ev) => {
59
- const clone = command.model.feature.clone();
60
- clone.getGeometry()?.scale(0.999);
61
- return clone.getGeometry().intersectsCoordinate(ev.coordinate);
62
- },
63
- });
64
- this.translate.on('translateend', () => this.onModified(command));
65
- this.map?.addInteraction(this.translate);
66
- }
67
- onModified(command) {
68
- command.next(command.format === FeatureOutputFormat.GeoJson
69
- ? new GeoJSON().writeFeature(command.model.feature)
70
- : new WKT().writeFeature(command.model.feature));
71
- }
72
- observeMapRender() {
73
- this.postboy.subscribe(MapRenderedEvent.ID).subscribe((m) => {
74
- this.map = m.map;
75
- });
76
- }
77
- defineLayer(action) {
78
- const query = new GetLayerQuery(MapConstants.DrawingLayerId);
79
- query.result.subscribe((l) => action(l));
80
- this.postboy.fire(query);
81
- }
82
- observeCancelation(ev, layer) {
83
- return this.postboy
84
- .subscribe(CancelFeatureModificationCommand.ID)
85
- .pipe(first())
86
- .subscribe(() => {
87
- ev.finish(null);
88
- this.clearInteraction(layer);
89
- });
90
- }
91
- clearInteraction(layer) {
92
- if (this.modify)
93
- this.map?.removeInteraction(this.modify);
94
- if (this.translate)
95
- this.map?.removeInteraction(this.translate);
96
- }
97
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureModificationService, deps: [{ token: i1.MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
98
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureModificationService });
99
- }
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FeatureModificationService, decorators: [{
101
- type: Injectable
102
- }], ctorParameters: function () { return [{ type: i1.MapPostboyService }]; } });
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1tb2RpZmljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hcHMtY29tcG9uZW50cy9zcmMvbWFwL3NlcnZpY2VzL2RyYXdpbmcvZmVhdHVyZS1tb2RpZmljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxJQUFJLENBQUM7QUFFOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSW5ELE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQy9HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7QUFHdEYsTUFBTSxPQUFPLDBCQUEwQjtJQUtqQjtJQUpaLE1BQU0sQ0FBVTtJQUNoQixTQUFTLENBQWE7SUFDdEIsR0FBRyxDQUFPO0lBRWxCLFlBQW9CLE9BQTBCO1FBQTFCLFlBQU8sR0FBUCxPQUFPLENBQW1CO0lBQUcsQ0FBQztJQUVsRCxFQUFFO1FBQ0EsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixF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QUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxTQUFTO1lBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEUsQ0FBQzt3R0ExRlUsMEJBQTBCOzRHQUExQiwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUG9zdGJveURlcGVuZGluZ1NlcnZpY2UgfSBmcm9tICdAYXJ0c3Rlc2gvcG9zdGJveSc7XG5pbXBvcnQgeyBNb2RpZnksIFRyYW5zbGF0ZSB9IGZyb20gJ29sL2ludGVyYWN0aW9uJztcbmltcG9ydCB7IENvbGxlY3Rpb24sIEZlYXR1cmUsIE1hcCB9IGZyb20gJ29sJztcbmltcG9ydCB7IE1hcFBvc3Rib3lTZXJ2aWNlIH0gZnJvbSAnLi4vbWFwLXBvc3Rib3kuc2VydmljZSc7XG5pbXBvcnQgeyBNYXBSZW5kZXJlZEV2ZW50IH0gZnJvbSAnLi4vLi4vbWVzc2FnZXMnO1xuaW1wb3J0IHsgRmVhdHVyZU91dHB1dEZvcm1hdCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBWZWN0b3IgYXMgTGF5ZXIgfSBmcm9tICdvbC9sYXllcic7XG5pbXBvcnQgVmVjdG9yU291cmNlIGZyb20gJ29sL3NvdXJjZS9WZWN0b3InO1xuaW1wb3J0IHsgR2VvbWV0cnkgfSBmcm9tICdvbC9nZW9tJztcbmltcG9ydCB7IEdlb0pTT04sIFdLVCB9IGZyb20gJ29sL2Zvcm1hdCc7XG5pbXBvcnQgeyBHZXRMYXllclF1ZXJ5IH0gZnJvbSAnLi4vLi4vbWVzc2FnZXMvcXVlcmllcy9nZXQtbGF5ZXIucXVlcnknO1xuaW1wb3J0IHsgTWFwQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL21hcC5jb25zdGFudHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFZlY3RvciBhcyBTb3VyY2UgfSBmcm9tICdvbC9zb3VyY2UnO1xuaW1wb3J0IHsgQ2FuY2VsRmVhdHVyZU1vZGlmaWNhdGlvbkNvbW1hbmQgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9jb21tYW5kcy9jYW5jZWwtZmVhdHVyZS1tb2RpZmljYXRpb24uY29tbWFuZCc7XG5pbXBvcnQgeyBNb2RpZnlGZWF0dXJlQ29tbWFuZCB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL2NvbW1hbmRzL21vZGlmeS1mZWF0dXJlLmNvbW1hbmQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmVhdHVyZU1vZGlmaWNhdGlvblNlcnZpY2UgaW1wbGVtZW50cyBJUG9zdGJveURlcGVuZGluZ1NlcnZpY2Uge1xuICBwcml2YXRlIG1vZGlmeT86IE1vZGlmeTtcbiAgcHJpdmF0ZSB0cmFuc2xhdGU/OiBUcmFuc2xhdGU7XG4gIHByaXZhdGUgbWFwPzogTWFwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcG9zdGJveTogTWFwUG9zdGJveVNlcnZpY2UpIHt9XG5cbiAgdXAoKTogdm9pZCB7XG4gICAgdGhpcy5vYnNlcnZlTW9kaWZpY2F0aW9uKCk7XG4gICAgdGhpcy5vYnNlcnZlTWFwUmVuZGVyKCk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVNb2RpZmljYXRpb24oKSB7XG4gICAgdGhpcy5wb3N0Ym95LnN1YnNjcmliZTxNb2RpZnlGZWF0dXJlQ29tbWFuZD4oTW9kaWZ5RmVhdHVyZUNvbW1hbmQuSUQpLnN1YnNjcmliZSgoZXYpID0+IHtcbiAgICAgIHRoaXMuZGVmaW5lTGF5ZXIoKGwpID0+IHtcbiAgICAgICAgaWYgKCFsIHx8ICF0aGlzLm1hcCkge1xuICAgICAgICAgIHRoaXMuY2xlYXJJbnRlcmFjdGlvbihsKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vYnNlcnZlQ2FuY2VsYXRpb24oZXYsIGwpO1xuICAgICAgICB0aGlzLmluaXRGZWF0dXJlKGwsIGV2Lm1vZGVsLmZlYXR1cmUpO1xuICAgICAgICB0aGlzLmFkZE1vZGlmeShldik7XG4gICAgICAgIHRoaXMuYWRkRHJhZ2dpbmcoZXYpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGZWF0dXJlKGxheWVyOiBMYXllcjxWZWN0b3JTb3VyY2U8R2VvbWV0cnk+PiwgZmVhdHVyZTogRmVhdHVyZTxHZW9tZXRyeT4pOiB2b2lkIHtcbiAgICBsYXllci5nZXRTb3VyY2UoKT8uY2xlYXIoKTtcbiAgICBsYXllci5nZXRTb3VyY2UoKT8uYWRkRmVhdHVyZShmZWF0dXJlKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTW9kaWZ5KGNvbW1hbmQ6IE1vZGlmeUZlYXR1cmVDb21tYW5kKTogdm9pZCB7XG4gICAgdGhpcy5tb2RpZnkgPSBuZXcgTW9kaWZ5KHtcbiAgICAgIGZlYXR1cmVzOiBuZXcgQ29sbGVjdGlvbihbY29tbWFuZC5tb2RlbC5mZWF0dXJlXSksXG4gICAgICBzdHlsZTogY29tbWFuZC5zdHlsZSxcbiAgICB9KTtcbiAgICB0aGlzLm1vZGlmeS5vbignbW9kaWZ5ZW5kJywgKCkgPT4ge1xuICAgICAgdGhpcy5vbk1vZGlmaWVkKGNvbW1hbmQpO1xuICAgICAgY29tbWFuZC5tb2RlbC5mZWF0dXJlLmNoYW5nZWQoKTtcbiAgICB9KTtcbiAgICB0aGlzLm1hcD8uYWRkSW50ZXJhY3Rpb24odGhpcy5tb2RpZnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGREcmFnZ2luZyhjb21tYW5kOiBNb2RpZnlGZWF0dXJlQ29tbWFuZCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNsYXRlID0gbmV3IFRyYW5zbGF0ZSh7XG4gICAgICBmZWF0dXJlczogbmV3IENvbGxlY3Rpb24oW2NvbW1hbmQubW9kZWwuZmVhdHVyZV0pLFxuICAgICAgY29uZGl0aW9uOiAoZXYpID0+IHtcbiAgICAgICAgY29uc3QgY2xvbmUgPSBjb21tYW5kLm1vZGVsLmZlYXR1cmUuY2xvbmUoKTtcbiAgICAgICAgY2xvbmUuZ2V0R2VvbWV0cnkoKT8uc2NhbGUoMC45OTkpO1xuICAgICAgICByZXR1cm4gY2xvbmUuZ2V0R2VvbWV0cnkoKSEuaW50ZXJzZWN0c0Nvb3JkaW5hdGUoZXYuY29vcmRpbmF0ZSk7XG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMudHJhbnNsYXRlLm9uKCd0cmFuc2xhdGVlbmQnLCAoKSA9PiB0aGlzLm9uTW9kaWZpZWQoY29tbWFuZCkpO1xuICAgIHRoaXMubWFwPy5hZGRJbnRlcmFjdGlvbih0aGlzLnRyYW5zbGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIG9uTW9kaWZpZWQoY29tbWFuZDogTW9kaWZ5RmVhdHVyZUNvbW1hbmQpOiB2b2lkIHtcbiAgICBjb21tYW5kLm5leHQoXG4gICAgICBjb21tYW5kLmZvcm1hdCA9PT0gRmVhdHVyZU91dHB1dEZvcm1hdC5HZW9Kc29uXG4gICAgICAgID8gbmV3IEdlb0pTT04oKS53cml0ZUZlYXR1cmUoY29tbWFuZC5tb2RlbC5mZWF0dXJlKVxuICAgICAgICA6IG5ldyBXS1QoKS53cml0ZUZlYXR1cmUoY29tbWFuZC5tb2RlbC5mZWF0dXJlKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlTWFwUmVuZGVyKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWJzY3JpYmU8TWFwUmVuZGVyZWRFdmVudD4oTWFwUmVuZGVyZWRFdmVudC5JRCkuc3Vic2NyaWJlKChtKSA9PiB7XG4gICAgICB0aGlzLm1hcCA9IG0ubWFwO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWZpbmVMYXllcihhY3Rpb246IChsYXllcjogTGF5ZXI8VmVjdG9yU291cmNlPGFueT4+IHwgbnVsbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHF1ZXJ5ID0gbmV3IEdldExheWVyUXVlcnkoTWFwQ29uc3RhbnRzLkRyYXdpbmdMYXllcklkKTtcbiAgICBxdWVyeS5yZXN1bHQuc3Vic2NyaWJlKChsKSA9PiBhY3Rpb24obCkpO1xuICAgIHRoaXMucG9zdGJveS5maXJlKHF1ZXJ5KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZUNhbmNlbGF0aW9uKGV2OiBNb2RpZnlGZWF0dXJlQ29tbWFuZCwgbGF5ZXI6IExheWVyPFZlY3RvclNvdXJjZTxhbnk+PiB8IG51bGwpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLnBvc3Rib3lcbiAgICAgIC5zdWJzY3JpYmUoQ2FuY2VsRmVhdHVyZU1vZGlmaWNhdGlvbkNvbW1hbmQuSUQpXG4gICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGV2LmZpbmlzaChudWxsKTtcbiAgICAgICAgdGhpcy5jbGVhckludGVyYWN0aW9uKGxheWVyKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhckludGVyYWN0aW9uKGxheWVyOiBMYXllcjxTb3VyY2U8R2VvbWV0cnk+PiB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RpZnkpIHRoaXMubWFwPy5yZW1vdmVJbnRlcmFjdGlvbih0aGlzLm1vZGlmeSk7XG4gICAgaWYgKHRoaXMudHJhbnNsYXRlKSB0aGlzLm1hcD8ucmVtb3ZlSW50ZXJhY3Rpb24odGhpcy50cmFuc2xhdGUpO1xuICB9XG59XG4iXX0=
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.subscribe(ModifyFeatureCommand.ID).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
+ this.addDragging(ev);
37
+ });
38
+ });
39
+ }
40
+ initFeature(layer, feature) {
41
+ layer.getSource()?.clear();
42
+ layer.getSource()?.addFeature(feature);
43
+ }
44
+ addModify(command) {
45
+ this.modify = new Modify({
46
+ features: new Collection([command.model.feature]),
47
+ style: command.style,
48
+ });
49
+ this.modify.on('modifyend', () => {
50
+ this.onModified(command);
51
+ command.model.feature.changed();
52
+ });
53
+ this.map?.addInteraction(this.modify);
54
+ }
55
+ addDragging(command) {
56
+ this.translate = new Translate({
57
+ features: new Collection([command.model.feature]),
58
+ condition: (ev) => {
59
+ const clone = command.model.feature.clone();
60
+ clone.getGeometry()?.scale(0.999);
61
+ return clone.getGeometry().intersectsCoordinate(ev.coordinate);
62
+ },
63
+ });
64
+ this.translate.on('translateend', () => this.onModified(command));
65
+ this.map?.addInteraction(this.translate);
66
+ }
67
+ onModified(command) {
68
+ command.next(command.format === FeatureOutputFormat.GeoJson
69
+ ? new GeoJSON().writeFeature(command.model.feature)
70
+ : new WKT().writeFeature(command.model.feature));
71
+ }
72
+ observeMapRender() {
73
+ this.postboy.subscribe(MapRenderedEvent.ID).subscribe((m) => {
74
+ this.map = m.map;
75
+ });
76
+ }
77
+ defineLayer(action) {
78
+ const query = new GetLayerQuery(MapConstants.DrawingLayerId);
79
+ query.result.subscribe((l) => action(l));
80
+ this.postboy.fire(query);
81
+ }
82
+ observeCancelation(ev, layer) {
83
+ return this.postboy
84
+ .subscribe(CancelFeatureModificationCommand.ID)
85
+ .pipe(first())
86
+ .subscribe(() => {
87
+ ev.finish(null);
88
+ this.clearInteraction(layer);
89
+ });
90
+ }
91
+ clearInteraction(layer) {
92
+ if (this.modify)
93
+ this.map?.removeInteraction(this.modify);
94
+ if (this.translate)
95
+ this.map?.removeInteraction(this.translate);
96
+ }
97
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FeatureModificationService, deps: [{ token: i1.MapPostboyService }], target: i0.ɵɵFactoryTarget.Injectable });
98
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FeatureModificationService });
99
+ }
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FeatureModificationService, decorators: [{
101
+ type: Injectable
102
+ }], ctorParameters: () => [{ type: i1.MapPostboyService }] });
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1tb2RpZmljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21hcHMtY29tcG9uZW50cy9zcmMvbWFwL3NlcnZpY2VzL2RyYXdpbmcvZmVhdHVyZS1tb2RpZmljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxJQUFJLENBQUM7QUFFOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSW5ELE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZDLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQy9HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7QUFHdEYsTUFBTSxPQUFPLDBCQUEwQjtJQUtqQjtJQUpaLE1BQU0sQ0FBVTtJQUNoQixTQUFTLENBQWE7SUFDdEIsR0FBRyxDQUFPO0lBRWxCLFlBQW9CLE9BQTBCO1FBQTFCLFlBQU8sR0FBUCxPQUFPLENBQW1CO0lBQUcsQ0FBQztJQUVsRCxFQUFFO1FBQ0EsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixF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RSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUQsSUFBSSxJQUFJLENBQUMsU0FBUztZQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7dUdBMUZVLDBCQUEwQjsyR0FBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVBvc3Rib3lEZXBlbmRpbmdTZXJ2aWNlIH0gZnJvbSAnQGFydHN0ZXNoL3Bvc3Rib3knO1xuaW1wb3J0IHsgTW9kaWZ5LCBUcmFuc2xhdGUgfSBmcm9tICdvbC9pbnRlcmFjdGlvbic7XG5pbXBvcnQgeyBDb2xsZWN0aW9uLCBGZWF0dXJlLCBNYXAgfSBmcm9tICdvbCc7XG5pbXBvcnQgeyBNYXBQb3N0Ym95U2VydmljZSB9IGZyb20gJy4uL21hcC1wb3N0Ym95LnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFwUmVuZGVyZWRFdmVudCB9IGZyb20gJy4uLy4uL21lc3NhZ2VzJztcbmltcG9ydCB7IEZlYXR1cmVPdXRwdXRGb3JtYXQgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgVmVjdG9yIGFzIExheWVyIH0gZnJvbSAnb2wvbGF5ZXInO1xuaW1wb3J0IFZlY3RvclNvdXJjZSBmcm9tICdvbC9zb3VyY2UvVmVjdG9yJztcbmltcG9ydCB7IEdlb21ldHJ5IH0gZnJvbSAnb2wvZ2VvbSc7XG5pbXBvcnQgeyBHZW9KU09OLCBXS1QgfSBmcm9tICdvbC9mb3JtYXQnO1xuaW1wb3J0IHsgR2V0TGF5ZXJRdWVyeSB9IGZyb20gJy4uLy4uL21lc3NhZ2VzL3F1ZXJpZXMvZ2V0LWxheWVyLnF1ZXJ5JztcbmltcG9ydCB7IE1hcENvbnN0YW50cyB9IGZyb20gJy4uLy4uL21vZGVscy9tYXAuY29uc3RhbnRzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlyc3QgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBWZWN0b3IgYXMgU291cmNlIH0gZnJvbSAnb2wvc291cmNlJztcbmltcG9ydCB7IENhbmNlbEZlYXR1cmVNb2RpZmljYXRpb25Db21tYW5kIH0gZnJvbSAnLi4vLi4vbWVzc2FnZXMvY29tbWFuZHMvY2FuY2VsLWZlYXR1cmUtbW9kaWZpY2F0aW9uLmNvbW1hbmQnO1xuaW1wb3J0IHsgTW9kaWZ5RmVhdHVyZUNvbW1hbmQgfSBmcm9tICcuLi8uLi9tZXNzYWdlcy9jb21tYW5kcy9tb2RpZnktZmVhdHVyZS5jb21tYW5kJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZlYXR1cmVNb2RpZmljYXRpb25TZXJ2aWNlIGltcGxlbWVudHMgSVBvc3Rib3lEZXBlbmRpbmdTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBtb2RpZnk/OiBNb2RpZnk7XG4gIHByaXZhdGUgdHJhbnNsYXRlPzogVHJhbnNsYXRlO1xuICBwcml2YXRlIG1hcD86IE1hcDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvc3Rib3k6IE1hcFBvc3Rib3lTZXJ2aWNlKSB7fVxuXG4gIHVwKCk6IHZvaWQge1xuICAgIHRoaXMub2JzZXJ2ZU1vZGlmaWNhdGlvbigpO1xuICAgIHRoaXMub2JzZXJ2ZU1hcFJlbmRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlTW9kaWZpY2F0aW9uKCkge1xuICAgIHRoaXMucG9zdGJveS5zdWJzY3JpYmU8TW9kaWZ5RmVhdHVyZUNvbW1hbmQ+KE1vZGlmeUZlYXR1cmVDb21tYW5kLklEKS5zdWJzY3JpYmUoKGV2KSA9PiB7XG4gICAgICB0aGlzLmRlZmluZUxheWVyKChsKSA9PiB7XG4gICAgICAgIGlmICghbCB8fCAhdGhpcy5tYXApIHtcbiAgICAgICAgICB0aGlzLmNsZWFySW50ZXJhY3Rpb24obCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2JzZXJ2ZUNhbmNlbGF0aW9uKGV2LCBsKTtcbiAgICAgICAgdGhpcy5pbml0RmVhdHVyZShsLCBldi5tb2RlbC5mZWF0dXJlKTtcbiAgICAgICAgdGhpcy5hZGRNb2RpZnkoZXYpO1xuICAgICAgICB0aGlzLmFkZERyYWdnaW5nKGV2KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0RmVhdHVyZShsYXllcjogTGF5ZXI8VmVjdG9yU291cmNlPEdlb21ldHJ5Pj4sIGZlYXR1cmU6IEZlYXR1cmU8R2VvbWV0cnk+KTogdm9pZCB7XG4gICAgbGF5ZXIuZ2V0U291cmNlKCk/LmNsZWFyKCk7XG4gICAgbGF5ZXIuZ2V0U291cmNlKCk/LmFkZEZlYXR1cmUoZmVhdHVyZSk7XG4gIH1cblxuICBwcml2YXRlIGFkZE1vZGlmeShjb21tYW5kOiBNb2RpZnlGZWF0dXJlQ29tbWFuZCk6IHZvaWQge1xuICAgIHRoaXMubW9kaWZ5ID0gbmV3IE1vZGlmeSh7XG4gICAgICBmZWF0dXJlczogbmV3IENvbGxlY3Rpb24oW2NvbW1hbmQubW9kZWwuZmVhdHVyZV0pLFxuICAgICAgc3R5bGU6IGNvbW1hbmQuc3R5bGUsXG4gICAgfSk7XG4gICAgdGhpcy5tb2RpZnkub24oJ21vZGlmeWVuZCcsICgpID0+IHtcbiAgICAgIHRoaXMub25Nb2RpZmllZChjb21tYW5kKTtcbiAgICAgIGNvbW1hbmQubW9kZWwuZmVhdHVyZS5jaGFuZ2VkKCk7XG4gICAgfSk7XG4gICAgdGhpcy5tYXA/LmFkZEludGVyYWN0aW9uKHRoaXMubW9kaWZ5KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRHJhZ2dpbmcoY29tbWFuZDogTW9kaWZ5RmVhdHVyZUNvbW1hbmQpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zbGF0ZSA9IG5ldyBUcmFuc2xhdGUoe1xuICAgICAgZmVhdHVyZXM6IG5ldyBDb2xsZWN0aW9uKFtjb21tYW5kLm1vZGVsLmZlYXR1cmVdKSxcbiAgICAgIGNvbmRpdGlvbjogKGV2KSA9PiB7XG4gICAgICAgIGNvbnN0IGNsb25lID0gY29tbWFuZC5tb2RlbC5mZWF0dXJlLmNsb25lKCk7XG4gICAgICAgIGNsb25lLmdldEdlb21ldHJ5KCk/LnNjYWxlKDAuOTk5KTtcbiAgICAgICAgcmV0dXJuIGNsb25lLmdldEdlb21ldHJ5KCkhLmludGVyc2VjdHNDb29yZGluYXRlKGV2LmNvb3JkaW5hdGUpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLnRyYW5zbGF0ZS5vbigndHJhbnNsYXRlZW5kJywgKCkgPT4gdGhpcy5vbk1vZGlmaWVkKGNvbW1hbmQpKTtcbiAgICB0aGlzLm1hcD8uYWRkSW50ZXJhY3Rpb24odGhpcy50cmFuc2xhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1vZGlmaWVkKGNvbW1hbmQ6IE1vZGlmeUZlYXR1cmVDb21tYW5kKTogdm9pZCB7XG4gICAgY29tbWFuZC5uZXh0KFxuICAgICAgY29tbWFuZC5mb3JtYXQgPT09IEZlYXR1cmVPdXRwdXRGb3JtYXQuR2VvSnNvblxuICAgICAgICA/IG5ldyBHZW9KU09OKCkud3JpdGVGZWF0dXJlKGNvbW1hbmQubW9kZWwuZmVhdHVyZSlcbiAgICAgICAgOiBuZXcgV0tUKCkud3JpdGVGZWF0dXJlKGNvbW1hbmQubW9kZWwuZmVhdHVyZSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZU1hcFJlbmRlcigpIHtcbiAgICB0aGlzLnBvc3Rib3kuc3Vic2NyaWJlPE1hcFJlbmRlcmVkRXZlbnQ+KE1hcFJlbmRlcmVkRXZlbnQuSUQpLnN1YnNjcmliZSgobSkgPT4ge1xuICAgICAgdGhpcy5tYXAgPSBtLm1hcDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGVmaW5lTGF5ZXIoYWN0aW9uOiAobGF5ZXI6IExheWVyPFZlY3RvclNvdXJjZTxhbnk+PiB8IG51bGwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCBxdWVyeSA9IG5ldyBHZXRMYXllclF1ZXJ5KE1hcENvbnN0YW50cy5EcmF3aW5nTGF5ZXJJZCk7XG4gICAgcXVlcnkucmVzdWx0LnN1YnNjcmliZSgobCkgPT4gYWN0aW9uKGwpKTtcbiAgICB0aGlzLnBvc3Rib3kuZmlyZShxdWVyeSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVDYW5jZWxhdGlvbihldjogTW9kaWZ5RmVhdHVyZUNvbW1hbmQsIGxheWVyOiBMYXllcjxWZWN0b3JTb3VyY2U8YW55Pj4gfCBudWxsKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5wb3N0Ym95XG4gICAgICAuc3Vic2NyaWJlKENhbmNlbEZlYXR1cmVNb2RpZmljYXRpb25Db21tYW5kLklEKVxuICAgICAgLnBpcGUoZmlyc3QoKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBldi5maW5pc2gobnVsbCk7XG4gICAgICAgIHRoaXMuY2xlYXJJbnRlcmFjdGlvbihsYXllcik7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJJbnRlcmFjdGlvbihsYXllcjogTGF5ZXI8U291cmNlPEdlb21ldHJ5Pj4gfCBudWxsKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kaWZ5KSB0aGlzLm1hcD8ucmVtb3ZlSW50ZXJhY3Rpb24odGhpcy5tb2RpZnkpO1xuICAgIGlmICh0aGlzLnRyYW5zbGF0ZSkgdGhpcy5tYXA/LnJlbW92ZUludGVyYWN0aW9uKHRoaXMudHJhbnNsYXRlKTtcbiAgfVxufVxuIl19
@@ -1,22 +1,22 @@
1
- import * as Sphere from 'ol/sphere';
2
- export class FeatureService {
3
- constructor() { }
4
- static filterFeaturesInArea(query) {
5
- return query.features.filter((f) => FeatureService.booleanIntersects(query.area, f.getGeometry()));
6
- }
7
- static booleanIntersects(g1, g2) {
8
- if (g2.getType() === 'Point')
9
- return g1.intersectsCoordinate(g2.getCoordinates());
10
- if (g2.getType() === 'Circle')
11
- return g1.intersectsCoordinate(g2.getCenter());
12
- if (g2.getType() === 'Polygon')
13
- return g1.intersectsCoordinate(g2.getInteriorPoint().getCoordinates());
14
- return false;
15
- }
16
- static calculateArea(g) {
17
- if (!g)
18
- return 0;
19
- return Sphere.getArea(g, { projection: 'EPSG:4326' });
20
- }
21
- }
1
+ import * as Sphere from 'ol/sphere';
2
+ export class FeatureService {
3
+ constructor() { }
4
+ static filterFeaturesInArea(query) {
5
+ return query.features.filter((f) => FeatureService.booleanIntersects(query.area, f.getGeometry()));
6
+ }
7
+ static booleanIntersects(g1, g2) {
8
+ if (g2.getType() === 'Point')
9
+ return g1.intersectsCoordinate(g2.getCoordinates());
10
+ if (g2.getType() === 'Circle')
11
+ return g1.intersectsCoordinate(g2.getCenter());
12
+ if (g2.getType() === 'Polygon')
13
+ return g1.intersectsCoordinate(g2.getInteriorPoint().getCoordinates());
14
+ return false;
15
+ }
16
+ static calculateArea(g) {
17
+ if (!g)
18
+ return 0;
19
+ return Sphere.getArea(g, { projection: 'EPSG:4326' });
20
+ }
21
+ }
22
22
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWFwcy1jb21wb25lbnRzL3NyYy9tYXAvc2VydmljZXMvZmVhdHVyZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxNQUFNLE1BQU0sV0FBVyxDQUFDO0FBSXBDLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLGdCQUFlLENBQUM7SUFFVCxNQUFNLENBQUMsb0JBQW9CLENBQUMsS0FBbUM7UUFDcEUsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRyxDQUFDLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQixDQUFDLEVBQVksRUFBRSxFQUFZO1FBQ3pELElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLE9BQU87WUFBRSxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBRSxFQUFZLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUM3RixJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxRQUFRO1lBQUUsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUUsRUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDMUYsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssU0FBUztZQUFFLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixDQUFFLEVBQWMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDcEgsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUF1QjtRQUNqRCxJQUFJLENBQUMsQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaXJjbGUsIEdlb21ldHJ5LCBQb2ludCB9IGZyb20gJ29sL2dlb20nO1xuaW1wb3J0IFBvbHlnb24gZnJvbSAnb2wvZ2VvbS9Qb2x5Z29uJztcbmltcG9ydCB7IEZlYXR1cmUgfSBmcm9tICdvbCc7XG5pbXBvcnQgKiBhcyBTcGhlcmUgZnJvbSAnb2wvc3BoZXJlJztcbmltcG9ydCB7IEZpbHRlckZlYXR1cmVzSW5BcmVhRXhlY3V0b3IgfSBmcm9tICcuLi9tZXNzYWdlcy9leGVjdXRvcnMvZmlsdGVyLWZlYXR1cmVzLWluLWFyZWEuZXhlY3V0b3InO1xuaW1wb3J0IHsgUG9seWdvbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGNsYXNzIEZlYXR1cmVTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHB1YmxpYyBzdGF0aWMgZmlsdGVyRmVhdHVyZXNJbkFyZWEocXVlcnk6IEZpbHRlckZlYXR1cmVzSW5BcmVhRXhlY3V0b3IpOiBGZWF0dXJlPEdlb21ldHJ5PltdIHtcbiAgICByZXR1cm4gcXVlcnkuZmVhdHVyZXMuZmlsdGVyKChmKSA9PiBGZWF0dXJlU2VydmljZS5ib29sZWFuSW50ZXJzZWN0cyhxdWVyeS5hcmVhLCBmLmdldEdlb21ldHJ5KCkhKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBib29sZWFuSW50ZXJzZWN0cyhnMTogR2VvbWV0cnksIGcyOiBHZW9tZXRyeSk6IGJvb2xlYW4ge1xuICAgIGlmIChnMi5nZXRUeXBlKCkgPT09ICdQb2ludCcpIHJldHVybiBnMS5pbnRlcnNlY3RzQ29vcmRpbmF0ZSgoZzIgYXMgUG9pbnQpLmdldENvb3JkaW5hdGVzKCkpO1xuICAgIGlmIChnMi5nZXRUeXBlKCkgPT09ICdDaXJjbGUnKSByZXR1cm4gZzEuaW50ZXJzZWN0c0Nvb3JkaW5hdGUoKGcyIGFzIENpcmNsZSkuZ2V0Q2VudGVyKCkpO1xuICAgIGlmIChnMi5nZXRUeXBlKCkgPT09ICdQb2x5Z29uJykgcmV0dXJuIGcxLmludGVyc2VjdHNDb29yZGluYXRlKChnMiBhcyBQb2x5Z29uKS5nZXRJbnRlcmlvclBvaW50KCkuZ2V0Q29vcmRpbmF0ZXMoKSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjYWxjdWxhdGVBcmVhKGc6IEdlb21ldHJ5IHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcbiAgICBpZiAoIWcpIHJldHVybiAwO1xuICAgIHJldHVybiBTcGhlcmUuZ2V0QXJlYShnLCB7IHByb2plY3Rpb246ICdFUFNHOjQzMjYnIH0pO1xuICB9XG59XG4iXX0=