@deck.gl-community/editable-layers 9.2.0-beta.5 → 9.2.0-beta.8

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 (304) hide show
  1. package/dist/edit-modes/draw-90degree-polygon-mode.d.ts +2 -2
  2. package/dist/edit-modes/draw-90degree-polygon-mode.d.ts.map +1 -1
  3. package/dist/edit-modes/draw-90degree-polygon-mode.js.map +1 -1
  4. package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts +2 -2
  5. package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts.map +1 -1
  6. package/dist/edit-modes/draw-circle-by-diameter-mode.js +0 -1
  7. package/dist/edit-modes/draw-circle-by-diameter-mode.js.map +1 -1
  8. package/dist/edit-modes/draw-circle-from-center-mode.d.ts +2 -2
  9. package/dist/edit-modes/draw-circle-from-center-mode.d.ts.map +1 -1
  10. package/dist/edit-modes/draw-circle-from-center-mode.js +0 -1
  11. package/dist/edit-modes/draw-circle-from-center-mode.js.map +1 -1
  12. package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts +2 -2
  13. package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts.map +1 -1
  14. package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.js +1 -2
  15. package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.js.map +1 -1
  16. package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts +2 -2
  17. package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts.map +1 -1
  18. package/dist/edit-modes/draw-ellipse-using-three-points-mode.js +0 -2
  19. package/dist/edit-modes/draw-ellipse-using-three-points-mode.js.map +1 -1
  20. package/dist/edit-modes/draw-line-string-mode.d.ts +5 -5
  21. package/dist/edit-modes/draw-line-string-mode.d.ts.map +1 -1
  22. package/dist/edit-modes/draw-line-string-mode.js.map +1 -1
  23. package/dist/edit-modes/draw-point-mode.d.ts +2 -2
  24. package/dist/edit-modes/draw-point-mode.d.ts.map +1 -1
  25. package/dist/edit-modes/draw-point-mode.js.map +1 -1
  26. package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts +8 -8
  27. package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts.map +1 -1
  28. package/dist/edit-modes/draw-polygon-by-dragging-mode.js.map +1 -1
  29. package/dist/edit-modes/draw-polygon-mode.d.ts +9 -5
  30. package/dist/edit-modes/draw-polygon-mode.d.ts.map +1 -1
  31. package/dist/edit-modes/draw-polygon-mode.js +226 -81
  32. package/dist/edit-modes/draw-polygon-mode.js.map +1 -1
  33. package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts +2 -2
  34. package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts.map +1 -1
  35. package/dist/edit-modes/draw-rectangle-from-center-mode.js +0 -1
  36. package/dist/edit-modes/draw-rectangle-from-center-mode.js.map +1 -1
  37. package/dist/edit-modes/draw-rectangle-mode.d.ts +2 -2
  38. package/dist/edit-modes/draw-rectangle-mode.d.ts.map +1 -1
  39. package/dist/edit-modes/draw-rectangle-mode.js +0 -1
  40. package/dist/edit-modes/draw-rectangle-mode.js.map +1 -1
  41. package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts +2 -2
  42. package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts.map +1 -1
  43. package/dist/edit-modes/draw-square-from-center-mode.d.ts +2 -2
  44. package/dist/edit-modes/draw-square-from-center-mode.d.ts.map +1 -1
  45. package/dist/edit-modes/draw-square-from-center-mode.js +0 -1
  46. package/dist/edit-modes/draw-square-from-center-mode.js.map +1 -1
  47. package/dist/edit-modes/draw-square-mode.d.ts +2 -2
  48. package/dist/edit-modes/draw-square-mode.d.ts.map +1 -1
  49. package/dist/edit-modes/draw-square-mode.js +0 -1
  50. package/dist/edit-modes/draw-square-mode.js.map +1 -1
  51. package/dist/edit-modes/duplicate-mode.d.ts +2 -2
  52. package/dist/edit-modes/duplicate-mode.d.ts.map +1 -1
  53. package/dist/edit-modes/duplicate-mode.js.map +1 -1
  54. package/dist/edit-modes/extend-line-string-mode.d.ts +4 -4
  55. package/dist/edit-modes/extend-line-string-mode.d.ts.map +1 -1
  56. package/dist/edit-modes/extend-line-string-mode.js.map +1 -1
  57. package/dist/edit-modes/extrude-mode.d.ts +7 -7
  58. package/dist/edit-modes/extrude-mode.d.ts.map +1 -1
  59. package/dist/edit-modes/extrude-mode.js.map +1 -1
  60. package/dist/edit-modes/geojson-edit-mode.d.ts +9 -9
  61. package/dist/edit-modes/geojson-edit-mode.d.ts.map +1 -1
  62. package/dist/edit-modes/geojson-edit-mode.js +4 -7
  63. package/dist/edit-modes/geojson-edit-mode.js.map +1 -1
  64. package/dist/edit-modes/immutable-feature-collection.d.ts +7 -7
  65. package/dist/edit-modes/immutable-feature-collection.d.ts.map +1 -1
  66. package/dist/edit-modes/immutable-feature-collection.js.map +1 -1
  67. package/dist/edit-modes/measure-area-mode.d.ts +3 -3
  68. package/dist/edit-modes/measure-area-mode.d.ts.map +1 -1
  69. package/dist/edit-modes/measure-area-mode.js.map +1 -1
  70. package/dist/edit-modes/modify-mode.d.ts +8 -8
  71. package/dist/edit-modes/modify-mode.d.ts.map +1 -1
  72. package/dist/edit-modes/modify-mode.js +2 -4
  73. package/dist/edit-modes/modify-mode.js.map +1 -1
  74. package/dist/edit-modes/resize-circle-mode.d.ts +3 -3
  75. package/dist/edit-modes/resize-circle-mode.d.ts.map +1 -1
  76. package/dist/edit-modes/resize-circle-mode.js +1 -5
  77. package/dist/edit-modes/resize-circle-mode.js.map +1 -1
  78. package/dist/edit-modes/rotate-mode.d.ts +7 -7
  79. package/dist/edit-modes/rotate-mode.d.ts.map +1 -1
  80. package/dist/edit-modes/rotate-mode.js +2 -9
  81. package/dist/edit-modes/rotate-mode.js.map +1 -1
  82. package/dist/edit-modes/scale-mode.d.ts +11 -11
  83. package/dist/edit-modes/scale-mode.d.ts.map +1 -1
  84. package/dist/edit-modes/scale-mode.js +1 -6
  85. package/dist/edit-modes/scale-mode.js.map +1 -1
  86. package/dist/edit-modes/snappable-mode.d.ts +5 -5
  87. package/dist/edit-modes/snappable-mode.d.ts.map +1 -1
  88. package/dist/edit-modes/snappable-mode.js.map +1 -1
  89. package/dist/edit-modes/split-polygon-mode.d.ts +5 -5
  90. package/dist/edit-modes/split-polygon-mode.d.ts.map +1 -1
  91. package/dist/edit-modes/split-polygon-mode.js +2 -5
  92. package/dist/edit-modes/split-polygon-mode.js.map +1 -1
  93. package/dist/edit-modes/three-click-polygon-mode.d.ts +3 -3
  94. package/dist/edit-modes/three-click-polygon-mode.d.ts.map +1 -1
  95. package/dist/edit-modes/three-click-polygon-mode.js.map +1 -1
  96. package/dist/edit-modes/translate-mode.d.ts +6 -6
  97. package/dist/edit-modes/translate-mode.d.ts.map +1 -1
  98. package/dist/edit-modes/translate-mode.js +1 -2
  99. package/dist/edit-modes/translate-mode.js.map +1 -1
  100. package/dist/edit-modes/two-click-polygon-mode.d.ts +6 -6
  101. package/dist/edit-modes/two-click-polygon-mode.d.ts.map +1 -1
  102. package/dist/edit-modes/two-click-polygon-mode.js.map +1 -1
  103. package/dist/edit-modes/types.d.ts +3 -3
  104. package/dist/edit-modes/types.d.ts.map +1 -1
  105. package/dist/edit-modes/utils.d.ts +7 -7
  106. package/dist/edit-modes/utils.d.ts.map +1 -1
  107. package/dist/edit-modes/utils.js +0 -3
  108. package/dist/edit-modes/utils.js.map +1 -1
  109. package/dist/editable-layers/editable-geojson-layer.d.ts +5 -13
  110. package/dist/editable-layers/editable-geojson-layer.d.ts.map +1 -1
  111. package/dist/editable-layers/editable-geojson-layer.js +4 -4
  112. package/dist/editable-layers/editable-geojson-layer.js.map +1 -1
  113. package/dist/editable-layers/selection-layer.d.ts +1 -2
  114. package/dist/editable-layers/selection-layer.d.ts.map +1 -1
  115. package/dist/editable-layers/selection-layer.js +2 -2
  116. package/dist/editable-layers/selection-layer.js.map +1 -1
  117. package/dist/index.cjs +369 -995
  118. package/dist/index.cjs.map +4 -4
  119. package/dist/index.d.ts +3 -11
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +1 -10
  122. package/dist/index.js.map +1 -1
  123. package/dist/mode-handlers/composite-mode-handler.d.ts +3 -3
  124. package/dist/mode-handlers/composite-mode-handler.d.ts.map +1 -1
  125. package/dist/mode-handlers/composite-mode-handler.js.map +1 -1
  126. package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts.map +1 -1
  127. package/dist/mode-handlers/draw-90degree-polygon-handler.js +4 -2
  128. package/dist/mode-handlers/draw-90degree-polygon-handler.js.map +1 -1
  129. package/dist/mode-handlers/draw-circle-by-bounding-box-handler.d.ts.map +1 -1
  130. package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js +0 -1
  131. package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js.map +1 -1
  132. package/dist/mode-handlers/draw-circle-from-center-handler.d.ts.map +1 -1
  133. package/dist/mode-handlers/draw-circle-from-center-handler.js +0 -1
  134. package/dist/mode-handlers/draw-circle-from-center-handler.js.map +1 -1
  135. package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts.map +1 -1
  136. package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js +1 -2
  137. package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js.map +1 -1
  138. package/dist/mode-handlers/draw-ellipse-using-three-points-handler.d.ts.map +1 -1
  139. package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js +2 -2
  140. package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js.map +1 -1
  141. package/dist/mode-handlers/draw-point-handler.js.map +1 -1
  142. package/dist/mode-handlers/draw-polygon-handler.d.ts.map +1 -1
  143. package/dist/mode-handlers/draw-polygon-handler.js +4 -2
  144. package/dist/mode-handlers/draw-polygon-handler.js.map +1 -1
  145. package/dist/mode-handlers/draw-rectangle-handler.d.ts.map +1 -1
  146. package/dist/mode-handlers/draw-rectangle-handler.js +0 -1
  147. package/dist/mode-handlers/draw-rectangle-handler.js.map +1 -1
  148. package/dist/mode-handlers/draw-rectangle-using-three-points-handler.d.ts.map +1 -1
  149. package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js +4 -2
  150. package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js.map +1 -1
  151. package/dist/mode-handlers/mode-handler.d.ts +12 -12
  152. package/dist/mode-handlers/mode-handler.d.ts.map +1 -1
  153. package/dist/mode-handlers/mode-handler.js +6 -7
  154. package/dist/mode-handlers/mode-handler.js.map +1 -1
  155. package/dist/mode-handlers/modify-handler.d.ts +2 -2
  156. package/dist/mode-handlers/modify-handler.d.ts.map +1 -1
  157. package/dist/mode-handlers/modify-handler.js +1 -4
  158. package/dist/mode-handlers/modify-handler.js.map +1 -1
  159. package/dist/mode-handlers/rotate-handler.d.ts +2 -2
  160. package/dist/mode-handlers/rotate-handler.d.ts.map +1 -1
  161. package/dist/mode-handlers/rotate-handler.js +2 -7
  162. package/dist/mode-handlers/rotate-handler.js.map +1 -1
  163. package/dist/mode-handlers/scale-handler.d.ts +2 -2
  164. package/dist/mode-handlers/scale-handler.d.ts.map +1 -1
  165. package/dist/mode-handlers/scale-handler.js +2 -7
  166. package/dist/mode-handlers/scale-handler.js.map +1 -1
  167. package/dist/mode-handlers/snappable-handler.d.ts +3 -3
  168. package/dist/mode-handlers/snappable-handler.d.ts.map +1 -1
  169. package/dist/mode-handlers/snappable-handler.js.map +1 -1
  170. package/dist/mode-handlers/split-polygon-handler.d.ts.map +1 -1
  171. package/dist/mode-handlers/split-polygon-handler.js +4 -5
  172. package/dist/mode-handlers/split-polygon-handler.js.map +1 -1
  173. package/dist/mode-handlers/translate-handler.d.ts +2 -2
  174. package/dist/mode-handlers/translate-handler.d.ts.map +1 -1
  175. package/dist/mode-handlers/translate-handler.js +1 -4
  176. package/dist/mode-handlers/translate-handler.js.map +1 -1
  177. package/dist/utils/geojson-types.d.ts +13 -34
  178. package/dist/utils/geojson-types.d.ts.map +1 -1
  179. package/dist/utils/translate-from-center.d.ts +2 -4
  180. package/dist/utils/translate-from-center.d.ts.map +1 -1
  181. package/dist/utils/translate-from-center.js.map +1 -1
  182. package/dist/utils/utils.d.ts +3 -3
  183. package/dist/utils/utils.d.ts.map +1 -1
  184. package/dist/utils/utils.js.map +1 -1
  185. package/package.json +33 -33
  186. package/src/edit-modes/draw-90degree-polygon-mode.ts +2 -2
  187. package/src/edit-modes/draw-circle-by-diameter-mode.ts +3 -3
  188. package/src/edit-modes/draw-circle-from-center-mode.ts +3 -3
  189. package/src/edit-modes/draw-ellipse-by-bounding-box-mode.ts +4 -4
  190. package/src/edit-modes/draw-ellipse-using-three-points-mode.ts +3 -4
  191. package/src/edit-modes/draw-line-string-mode.ts +5 -5
  192. package/src/edit-modes/draw-point-mode.ts +2 -2
  193. package/src/edit-modes/draw-polygon-by-dragging-mode.ts +8 -8
  194. package/src/edit-modes/draw-polygon-mode.ts +304 -100
  195. package/src/edit-modes/draw-rectangle-from-center-mode.ts +2 -3
  196. package/src/edit-modes/draw-rectangle-mode.ts +2 -3
  197. package/src/edit-modes/draw-rectangle-using-three-points-mode.ts +2 -2
  198. package/src/edit-modes/draw-square-from-center-mode.ts +2 -3
  199. package/src/edit-modes/draw-square-mode.ts +3 -3
  200. package/src/edit-modes/duplicate-mode.ts +2 -2
  201. package/src/edit-modes/extend-line-string-mode.ts +4 -4
  202. package/src/edit-modes/extrude-mode.ts +7 -7
  203. package/src/edit-modes/geojson-edit-mode.ts +16 -19
  204. package/src/edit-modes/immutable-feature-collection.ts +10 -11
  205. package/src/edit-modes/measure-area-mode.ts +3 -3
  206. package/src/edit-modes/modify-mode.ts +13 -13
  207. package/src/edit-modes/resize-circle-mode.ts +6 -8
  208. package/src/edit-modes/rotate-mode.ts +9 -15
  209. package/src/edit-modes/scale-mode.ts +11 -15
  210. package/src/edit-modes/snappable-mode.ts +5 -5
  211. package/src/edit-modes/split-polygon-mode.ts +12 -16
  212. package/src/edit-modes/three-click-polygon-mode.ts +3 -3
  213. package/src/edit-modes/translate-mode.ts +10 -12
  214. package/src/edit-modes/two-click-polygon-mode.ts +7 -7
  215. package/src/edit-modes/types.ts +4 -4
  216. package/src/edit-modes/utils.ts +12 -16
  217. package/src/editable-layers/editable-geojson-layer.ts +19 -18
  218. package/src/editable-layers/selection-layer.ts +3 -3
  219. package/src/index.ts +8 -28
  220. package/src/mode-handlers/composite-mode-handler.ts +3 -3
  221. package/src/mode-handlers/draw-90degree-polygon-handler.ts +4 -2
  222. package/src/mode-handlers/draw-circle-by-bounding-box-handler.ts +0 -1
  223. package/src/mode-handlers/draw-circle-from-center-handler.ts +0 -1
  224. package/src/mode-handlers/draw-ellipse-by-bounding-box-handler.ts +1 -2
  225. package/src/mode-handlers/draw-ellipse-using-three-points-handler.ts +3 -2
  226. package/src/mode-handlers/draw-point-handler.ts +2 -2
  227. package/src/mode-handlers/draw-polygon-handler.ts +4 -2
  228. package/src/mode-handlers/draw-rectangle-handler.ts +0 -1
  229. package/src/mode-handlers/draw-rectangle-using-three-points-handler.ts +4 -2
  230. package/src/mode-handlers/mode-handler.ts +20 -21
  231. package/src/mode-handlers/modify-handler.ts +2 -4
  232. package/src/mode-handlers/rotate-handler.ts +4 -8
  233. package/src/mode-handlers/scale-handler.ts +4 -8
  234. package/src/mode-handlers/snappable-handler.ts +3 -3
  235. package/src/mode-handlers/split-polygon-handler.ts +6 -7
  236. package/src/mode-handlers/translate-handler.ts +3 -5
  237. package/src/utils/geojson-types.ts +15 -54
  238. package/src/utils/translate-from-center.ts +6 -11
  239. package/src/utils/utils.ts +4 -4
  240. package/dist/lib/constants.d.ts +0 -7
  241. package/dist/lib/constants.d.ts.map +0 -1
  242. package/dist/lib/constants.js +0 -10
  243. package/dist/lib/constants.js.map +0 -1
  244. package/dist/lib/deck-renderer/deck-cache.d.ts +0 -15
  245. package/dist/lib/deck-renderer/deck-cache.d.ts.map +0 -1
  246. package/dist/lib/deck-renderer/deck-cache.js +0 -52
  247. package/dist/lib/deck-renderer/deck-cache.js.map +0 -1
  248. package/dist/lib/deck-renderer/deck-drawer.d.ts +0 -63
  249. package/dist/lib/deck-renderer/deck-drawer.d.ts.map +0 -1
  250. package/dist/lib/deck-renderer/deck-drawer.js +0 -233
  251. package/dist/lib/deck-renderer/deck-drawer.js.map +0 -1
  252. package/dist/lib/feature.d.ts +0 -11
  253. package/dist/lib/feature.d.ts.map +0 -1
  254. package/dist/lib/feature.js +0 -20
  255. package/dist/lib/feature.js.map +0 -1
  256. package/dist/lib/layer-mouse-event.d.ts +0 -12
  257. package/dist/lib/layer-mouse-event.d.ts.map +0 -1
  258. package/dist/lib/layer-mouse-event.js +0 -28
  259. package/dist/lib/layer-mouse-event.js.map +0 -1
  260. package/dist/lib/layers/junctions-layer.d.ts +0 -9
  261. package/dist/lib/layers/junctions-layer.d.ts.map +0 -1
  262. package/dist/lib/layers/junctions-layer.js +0 -37
  263. package/dist/lib/layers/junctions-layer.js.map +0 -1
  264. package/dist/lib/layers/segments-layer.d.ts +0 -19
  265. package/dist/lib/layers/segments-layer.d.ts.map +0 -1
  266. package/dist/lib/layers/segments-layer.js +0 -98
  267. package/dist/lib/layers/segments-layer.js.map +0 -1
  268. package/dist/lib/layers/texts-layer.d.ts +0 -9
  269. package/dist/lib/layers/texts-layer.d.ts.map +0 -1
  270. package/dist/lib/layers/texts-layer.js +0 -36
  271. package/dist/lib/layers/texts-layer.js.map +0 -1
  272. package/dist/lib/math.d.ts +0 -12
  273. package/dist/lib/math.d.ts.map +0 -1
  274. package/dist/lib/math.js +0 -26
  275. package/dist/lib/math.js.map +0 -1
  276. package/dist/lib/nebula-core.d.ts +0 -35
  277. package/dist/lib/nebula-core.d.ts.map +0 -1
  278. package/dist/lib/nebula-core.js +0 -258
  279. package/dist/lib/nebula-core.js.map +0 -1
  280. package/dist/lib/nebula-layer.d.ts +0 -14
  281. package/dist/lib/nebula-layer.d.ts.map +0 -1
  282. package/dist/lib/nebula-layer.js +0 -30
  283. package/dist/lib/nebula-layer.js.map +0 -1
  284. package/dist/lib/style.d.ts +0 -20
  285. package/dist/lib/style.d.ts.map +0 -1
  286. package/dist/lib/style.js +0 -24
  287. package/dist/lib/style.js.map +0 -1
  288. package/dist/utils/curve-utils.d.ts +0 -3
  289. package/dist/utils/curve-utils.d.ts.map +0 -1
  290. package/dist/utils/curve-utils.js +0 -65
  291. package/dist/utils/curve-utils.js.map +0 -1
  292. package/src/lib/constants.ts +0 -10
  293. package/src/lib/deck-renderer/deck-cache.ts +0 -61
  294. package/src/lib/deck-renderer/deck-drawer.ts +0 -263
  295. package/src/lib/feature.ts +0 -31
  296. package/src/lib/layer-mouse-event.ts +0 -33
  297. package/src/lib/layers/junctions-layer.ts +0 -44
  298. package/src/lib/layers/segments-layer.ts +0 -112
  299. package/src/lib/layers/texts-layer.ts +0 -47
  300. package/src/lib/math.ts +0 -30
  301. package/src/lib/nebula-core.ts +0 -327
  302. package/src/lib/nebula-layer.ts +0 -37
  303. package/src/lib/style.ts +0 -26
  304. package/src/utils/curve-utils.ts +0 -81
package/dist/index.cjs CHANGED
@@ -34,9 +34,8 @@ var __publicField = (obj, key, value) => {
34
34
  // dist/index.js
35
35
  var dist_exports = {};
36
36
  __export(dist_exports, {
37
- ArrowStyles: () => ArrowStyles,
38
37
  CompositeMode: () => CompositeMode,
39
- DEFAULT_ARROWS: () => DEFAULT_ARROWS,
38
+ DeleteMode: () => DeleteMode,
40
39
  Draw90DegreePolygonMode: () => Draw90DegreePolygonMode,
41
40
  DrawCircleByDiameterMode: () => DrawCircleByDiameterMode,
42
41
  DrawCircleFromCenterMode: () => DrawCircleFromCenterMode,
@@ -59,29 +58,19 @@ __export(dist_exports, {
59
58
  ElevationMode: () => ElevationMode,
60
59
  ExtendLineStringMode: () => ExtendLineStringMode,
61
60
  ExtrudeMode: () => ExtrudeMode,
62
- Feature: () => Feature,
63
61
  GeoJsonEditMode: () => GeoJsonEditMode,
64
62
  ImmutableFeatureCollection: () => ImmutableFeatureCollection,
65
63
  JunctionScatterplotLayer: () => JunctionScatterplotLayer,
66
- JunctionsLayer: () => JunctionsLayer,
67
- LayerMouseEvent: () => LayerMouseEvent,
68
- MAX_ARROWS: () => MAX_ARROWS,
69
64
  MeasureAngleMode: () => MeasureAngleMode,
70
65
  MeasureAreaMode: () => MeasureAreaMode,
71
66
  MeasureDistanceMode: () => MeasureDistanceMode,
72
67
  ModifyMode: () => ModifyMode,
73
- NebulaCore: () => NebulaCore,
74
- NebulaLayer: () => NebulaLayer,
75
- PROJECTED_PIXEL_SIZE_MULTIPLIER: () => PROJECTED_PIXEL_SIZE_MULTIPLIER,
76
68
  ResizeCircleMode: () => ResizeCircleMode,
77
69
  RotateMode: () => RotateMode,
78
- SELECTION_TYPE: () => SELECTION_TYPE,
79
70
  ScaleMode: () => ScaleMode,
80
- SegmentsLayer: () => SegmentsLayer,
81
71
  SelectionLayer: () => SelectionLayer,
82
72
  SnappableMode: () => SnappableMode,
83
73
  SplitPolygonMode: () => SplitPolygonMode,
84
- TextsLayer: () => TextsLayer,
85
74
  TransformMode: () => TransformMode,
86
75
  TranslateMode: () => TranslateMode,
87
76
  ViewMode: () => ViewMode,
@@ -93,302 +82,6 @@ __export(dist_exports, {
93
82
  });
94
83
  module.exports = __toCommonJS(dist_exports);
95
84
 
96
- // dist/lib/style.js
97
- var ArrowStyles = {
98
- NONE: 0,
99
- FORWARD: 1,
100
- BACKWARD: 2,
101
- BOTH: 3
102
- };
103
- var DEFAULT_ARROWS = 1;
104
- var MAX_ARROWS = 3;
105
- var DEFAULT_STYLE = {
106
- arrowColor: [0, 0, 0, 1],
107
- arrowCount: DEFAULT_ARROWS,
108
- arrowStyle: ArrowStyles.NONE,
109
- fillColor: [0, 0, 0, 1],
110
- lineColor: [0, 0, 0, 1],
111
- lineWidthMeters: 5,
112
- outlineRadiusMeters: 0,
113
- opacity: 1,
114
- zLevel: 0
115
- };
116
-
117
- // dist/lib/deck-renderer/deck-drawer.js
118
- var import_layers = require("@deck.gl/layers");
119
- var import_helpers = require("@turf/helpers");
120
- var import_bbox = __toESM(require("@turf/bbox"), 1);
121
- var import_bbox_polygon = __toESM(require("@turf/bbox-polygon"), 1);
122
- var import_buffer = __toESM(require("@turf/buffer"), 1);
123
- var import_difference = __toESM(require("@turf/difference"), 1);
124
- var import_distance = __toESM(require("@turf/distance"), 1);
125
- var POLYGON_LINE_COLOR = [0, 255, 0, 255];
126
- var POLYGON_FILL_COLOR = [255, 255, 255, 90];
127
- var POLYGON_LINE_WIDTH = 2;
128
- var POLYGON_THRESHOLD = 0.01;
129
- var EXPANSION_KM = 10;
130
- var LAYER_ID_VIEW = "DeckDrawerView";
131
- var LAYER_ID_PICK = "DeckDrawerPick";
132
- var SELECTION_TYPE = {
133
- NONE: null,
134
- RECTANGLE: "rectangle",
135
- POLYGON: "polygon"
136
- };
137
- var DeckDrawer = class {
138
- nebula;
139
- usePolygon;
140
- validPolygon;
141
- landPoints;
142
- mousePoints;
143
- constructor(nebula) {
144
- this.nebula = nebula;
145
- this.usePolygon = false;
146
- this.validPolygon = true;
147
- this.landPoints = [];
148
- this.mousePoints = [];
149
- }
150
- _getLayerIds() {
151
- return this.nebula.deckgl.props.layers.filter((l) => l && l.props && l.props.nebulaLayer && l.props.nebulaLayer.enableSelection).map((l) => l.id);
152
- }
153
- _selectFromPickingInfos(pickingInfos) {
154
- const objects = pickingInfos.map(({ layer, index, object }) => object.original || layer.props.nebulaLayer.deckCache.originals[index]);
155
- this.nebula.props.onSelection(objects);
156
- }
157
- _getBoundingBox() {
158
- const { mousePoints } = this;
159
- const allX = mousePoints.map((mousePoint) => mousePoint[0]);
160
- const allY = mousePoints.map((mousePoint) => mousePoint[1]);
161
- const x = Math.min(...allX);
162
- const y = Math.min(...allY);
163
- const maxX = Math.max(...allX);
164
- const maxY = Math.max(...allY);
165
- return { x, y, width: maxX - x, height: maxY - y };
166
- }
167
- _selectRectangleObjects() {
168
- if (this.landPoints.length !== 2)
169
- return;
170
- const [x1, y1] = this.mousePoints[0];
171
- const [x2, y2] = this.mousePoints[1];
172
- const pickingInfos = this.nebula.deckgl.pickObjects({
173
- x: Math.min(x1, x2),
174
- y: Math.min(y1, y2),
175
- width: Math.abs(x2 - x1),
176
- height: Math.abs(y2 - y1),
177
- layerIds: this._getLayerIds()
178
- });
179
- this._selectFromPickingInfos(pickingInfos);
180
- }
181
- _selectPolygonObjects() {
182
- const pickingInfos = this.nebula.deckgl.pickObjects({
183
- ...this._getBoundingBox(),
184
- layerIds: [LAYER_ID_PICK, ...this._getLayerIds()]
185
- });
186
- this._selectFromPickingInfos(pickingInfos.filter((item) => item.layer.id !== LAYER_ID_PICK));
187
- }
188
- _getMousePosFromEvent(event) {
189
- const { offsetX, offsetY } = event;
190
- return [offsetX, offsetY];
191
- }
192
- // eslint-disable-next-line max-statements, complexity
193
- handleEvent(event, lngLat, selectionType) {
194
- if (event.type !== "mouseup")
195
- event.stopPropagation();
196
- this.usePolygon = selectionType === SELECTION_TYPE.POLYGON;
197
- let redraw = false;
198
- let deactivate = false;
199
- const { usePolygon, landPoints, mousePoints } = this;
200
- if (event.type === "mousedown") {
201
- if (usePolygon && landPoints.length) {
202
- if (this.landPoints.length < 3 || this.validPolygon) {
203
- landPoints.push(lngLat);
204
- mousePoints.push(this._getMousePosFromEvent(event));
205
- }
206
- } else {
207
- this.landPoints = [lngLat, lngLat];
208
- const m = this._getMousePosFromEvent(event);
209
- this.mousePoints = [m, m];
210
- }
211
- redraw = true;
212
- } else if (event.type === "mousemove" && landPoints.length) {
213
- landPoints[landPoints.length - 1] = lngLat;
214
- mousePoints[mousePoints.length - 1] = this._getMousePosFromEvent(event);
215
- redraw = true;
216
- } else if (event.type === "mouseup") {
217
- if (usePolygon) {
218
- if (landPoints.length > 4 && (0, import_distance.default)(landPoints[0], landPoints[landPoints.length - 1]) < POLYGON_THRESHOLD && this.validPolygon) {
219
- this._selectPolygonObjects();
220
- this.reset();
221
- redraw = true;
222
- deactivate = true;
223
- }
224
- } else {
225
- this._selectRectangleObjects();
226
- this.reset();
227
- redraw = true;
228
- deactivate = true;
229
- }
230
- }
231
- return { redraw, deactivate };
232
- }
233
- reset() {
234
- this.landPoints = [];
235
- this.mousePoints = [];
236
- }
237
- _makeStartPointHighlight(center) {
238
- const buffer = (0, import_buffer.default)((0, import_helpers.point)(center), POLYGON_THRESHOLD / 4);
239
- return (0, import_bbox_polygon.default)((0, import_bbox.default)(buffer)).geometry.coordinates;
240
- }
241
- render() {
242
- const data = [];
243
- const dataPick = [];
244
- if (!this.usePolygon && this.landPoints.length === 2) {
245
- const [[x1, y1], [x2, y2]] = this.mousePoints;
246
- const selPolygon = [
247
- [x1, y1],
248
- [x1, y2],
249
- [x2, y2],
250
- [x2, y1],
251
- [x1, y1]
252
- ].map((mousePos) => this.nebula.unprojectMousePosition(mousePos));
253
- data.push({
254
- polygon: selPolygon,
255
- lineColor: POLYGON_LINE_COLOR,
256
- fillColor: POLYGON_FILL_COLOR
257
- });
258
- } else if (this.usePolygon && this.landPoints.length) {
259
- data.push({
260
- polygon: this.landPoints,
261
- lineColor: POLYGON_LINE_COLOR,
262
- fillColor: POLYGON_FILL_COLOR
263
- });
264
- if (this.landPoints.length >= 3) {
265
- const landPointsPoly = (0, import_helpers.polygon)([[...this.landPoints, this.landPoints[0]]]);
266
- const bigBuffer = (0, import_buffer.default)((0, import_helpers.point)(this.landPoints[0]), EXPANSION_KM);
267
- let bigPolygon;
268
- try {
269
- bigPolygon = (0, import_difference.default)(bigBuffer, landPointsPoly);
270
- dataPick.push({
271
- polygon: bigPolygon.geometry.coordinates,
272
- fillColor: [0, 0, 0, 1]
273
- });
274
- this.validPolygon = true;
275
- } catch (e) {
276
- this.validPolygon = false;
277
- }
278
- }
279
- }
280
- if (this.landPoints.length) {
281
- data.push({
282
- polygon: this._makeStartPointHighlight(this.landPoints[0]),
283
- lineColor: [0, 0, 0, 0],
284
- fillColor: POLYGON_LINE_COLOR
285
- });
286
- }
287
- data.push({ polygon: [[0, 0]] });
288
- dataPick.push({ polygon: [[0, 0]] });
289
- return [
290
- new import_layers.PolygonLayer({
291
- id: LAYER_ID_VIEW,
292
- data,
293
- fp64: false,
294
- opacity: 1,
295
- pickable: false,
296
- lineWidthMinPixels: POLYGON_LINE_WIDTH,
297
- lineWidthMaxPixels: POLYGON_LINE_WIDTH,
298
- lineDashJustified: true,
299
- // TODO(v9) Add extension
300
- // getLineDashArray: (x) => POLYGON_DASHES,
301
- getLineColor: (obj) => obj.lineColor || [0, 0, 0, 255],
302
- getFillColor: (obj) => obj.fillColor || [0, 0, 0, 255],
303
- getPolygon: (o) => o.polygon
304
- }),
305
- new import_layers.PolygonLayer({
306
- id: LAYER_ID_PICK,
307
- data: dataPick,
308
- getLineColor: (obj) => obj.lineColor || [0, 0, 0, 255],
309
- getFillColor: (obj) => obj.fillColor || [0, 0, 0, 255],
310
- fp64: false,
311
- opacity: 1,
312
- stroked: false,
313
- pickable: true,
314
- getPolygon: (o) => o.polygon
315
- })
316
- ];
317
- }
318
- };
319
-
320
- // dist/lib/feature.js
321
- var Feature = class {
322
- // geo json coordinates
323
- geoJson;
324
- style;
325
- original;
326
- metadata;
327
- constructor(geoJson, style, original = null, metadata = {}) {
328
- this.geoJson = geoJson;
329
- this.style = style;
330
- this.original = original;
331
- this.metadata = metadata;
332
- }
333
- getCoords() {
334
- return this.geoJson.geometry.coordinates;
335
- }
336
- };
337
-
338
- // dist/lib/layer-mouse-event.js
339
- var LayerMouseEvent = class {
340
- canceled = false;
341
- // original item that this event is related to
342
- data;
343
- // internal nebula info about the object
344
- metadata;
345
- // the mouse [lng,lat] raycasted onto the ground
346
- groundPoint;
347
- // browser event
348
- nativeEvent;
349
- // reference to nebula
350
- nebula;
351
- constructor(nativeEvent, { data, groundPoint, nebula, metadata }) {
352
- this.nativeEvent = nativeEvent;
353
- this.data = data;
354
- this.groundPoint = groundPoint;
355
- this.nebula = nebula;
356
- this.metadata = metadata;
357
- }
358
- stopPropagation() {
359
- this.nativeEvent.stopPropagation();
360
- this.canceled = true;
361
- }
362
- };
363
-
364
- // dist/lib/nebula-layer.js
365
- var import_eventemitter3 = require("eventemitter3");
366
- var import_uuid = require("uuid");
367
- var NebulaLayer = class extends import_eventemitter3.EventEmitter {
368
- getData;
369
- toNebulaFeature;
370
- id;
371
- helperLayers;
372
- // flags
373
- usesMapEvents = false;
374
- enablePicking = false;
375
- enableSelection = false;
376
- //
377
- constructor({ getData, on, toNebulaFeature }) {
378
- super();
379
- this.id = (0, import_uuid.v4)();
380
- this.getData = getData;
381
- this.toNebulaFeature = toNebulaFeature;
382
- this.helperLayers = [];
383
- if (on) {
384
- Object.keys(on).forEach((key) => this.on(key, on[key]));
385
- }
386
- }
387
- render(config) {
388
- return null;
389
- }
390
- };
391
-
392
85
  // dist/utils/utils.js
393
86
  var utils_exports = {};
394
87
  __export(utils_exports, {
@@ -403,7 +96,7 @@ __export(utils_exports, {
403
96
  var import_destination = __toESM(require("@turf/destination"), 1);
404
97
  var import_bearing = __toESM(require("@turf/bearing"), 1);
405
98
  var import_point_to_line_distance = __toESM(require("@turf/point-to-line-distance"), 1);
406
- var import_helpers2 = require("@turf/helpers");
99
+ var import_helpers = require("@turf/helpers");
407
100
  var import_viewport_mercator_project = require("viewport-mercator-project");
408
101
  function toDeckColor(color, defaultColor = [255, 0, 0, 255]) {
409
102
  if (!Array.isArray(color)) {
@@ -428,7 +121,7 @@ function generatePointsParallelToLinePoints(p1, p2, mapCoords2) {
428
121
  type: "LineString",
429
122
  coordinates: [p1, p2]
430
123
  };
431
- const pt = (0, import_helpers2.point)(mapCoords2);
124
+ const pt = (0, import_helpers.point)(mapCoords2);
432
125
  const ddistance = (0, import_point_to_line_distance.default)(pt, lineString3);
433
126
  const lineBearing = (0, import_bearing.default)(p1, p2);
434
127
  const isPointToLeftOfLine = (mapCoords2[0] - p1[0]) * (p2[1] - p1[1]) - (mapCoords2[1] - p1[1]) * (p2[0] - p1[0]);
@@ -499,479 +192,13 @@ function insertBefore(base, insertBeforeText, toInsert) {
499
192
  return base.slice(0, at) + toInsert + base.slice(at);
500
193
  }
501
194
 
502
- // dist/lib/deck-renderer/deck-cache.js
503
- var DeckCache = class {
504
- objects;
505
- originals;
506
- updateTrigger;
507
- _idToPosition;
508
- _getData;
509
- _convert;
510
- constructor(getData, convert) {
511
- this.objects = [];
512
- this.originals = [];
513
- this.updateTrigger = 0;
514
- this._idToPosition = /* @__PURE__ */ new Map();
515
- this._getData = getData;
516
- this._convert = convert;
517
- }
518
- updateAllDeckObjects() {
519
- if (!this._getData || !this._convert)
520
- return;
521
- this.originals.length = 0;
522
- this.objects.length = 0;
523
- this._idToPosition.clear();
524
- this._getData().forEach((d) => {
525
- this._idToPosition.set(d.id, this.objects.length);
526
- this.originals.push(d);
527
- this.objects.push(this._convert(d));
528
- });
529
- this.triggerUpdate();
530
- }
531
- updateDeckObjectsByIds(ids) {
532
- if (!this._getData || !this._convert)
533
- return;
534
- ids.forEach((id) => {
535
- const p = this._idToPosition.get(id);
536
- if (p !== void 0) {
537
- this.objects[p] = this._convert(this.originals[p]);
538
- }
539
- });
540
- this.triggerUpdate();
541
- }
542
- triggerUpdate() {
543
- this.updateTrigger++;
544
- }
545
- getDeckObjectById(id) {
546
- const p = this._idToPosition.get(id);
547
- return p !== void 0 ? this.objects[p] : null;
548
- }
549
- getOriginalById(id) {
550
- const p = this._idToPosition.get(id);
551
- return p !== void 0 ? this.originals[p] : null;
552
- }
553
- };
554
-
555
- // dist/editable-layers/junction-scatterplot-layer.js
556
- var import_core = require("@deck.gl/core");
557
- var import_layers2 = require("@deck.gl/layers");
558
- var JunctionScatterplotLayer = class extends import_core.CompositeLayer {
559
- renderLayers() {
560
- const { id, getFillColor, getStrokeColor, getInnerRadius, updateTriggers } = this.props;
561
- return [
562
- // the full circles
563
- new import_layers2.ScatterplotLayer({
564
- ...this.props,
565
- id: `${id}-full`,
566
- data: this.props.data,
567
- getLineColor: getStrokeColor,
568
- updateTriggers: {
569
- ...updateTriggers,
570
- getStrokeColor: updateTriggers.getStrokeColor
571
- }
572
- }),
573
- // the inner part
574
- new import_layers2.ScatterplotLayer({
575
- ...this.props,
576
- id: `${id}-inner`,
577
- data: this.props.data,
578
- getFillColor,
579
- getRadius: getInnerRadius,
580
- pickable: false,
581
- updateTriggers: {
582
- ...updateTriggers,
583
- getFillColor: updateTriggers.getFillColor,
584
- getRadius: updateTriggers.getInnerRadius
585
- }
586
- })
587
- ];
588
- }
589
- };
590
- __publicField(JunctionScatterplotLayer, "layerName", "JunctionScatterplotLayer");
591
- __publicField(JunctionScatterplotLayer, "defaultProps", {
592
- ...import_layers2.ScatterplotLayer.defaultProps,
593
- getFillColor: (d) => [0, 0, 0, 255],
594
- getStrokeColor: (d) => [255, 255, 255, 255],
595
- getInnerRadius: (d) => 1
596
- });
597
-
598
- // dist/lib/layers/junctions-layer.js
599
- var JunctionsLayer = class extends NebulaLayer {
600
- deckCache;
601
- constructor(config) {
602
- super(config);
603
- this.deckCache = new DeckCache(config.getData, (data) => config.toNebulaFeature(data));
604
- this.enablePicking = true;
605
- }
606
- render({ nebula }) {
607
- const defaultColor = [0, 0, 0, 255];
608
- const { objects, updateTrigger } = this.deckCache;
609
- return new JunctionScatterplotLayer({
610
- id: `junctions-${this.id}`,
611
- data: objects,
612
- opacity: 1,
613
- pickable: true,
614
- getPosition: (nf) => nf.geoJson.geometry.coordinates,
615
- getFillColor: (nf) => toDeckColor(nf.style.fillColor) || defaultColor,
616
- getStrokeColor: (nf) => toDeckColor(nf.style.outlineColor) || toDeckColor(nf.style.fillColor) || defaultColor,
617
- getRadius: (nf) => nf.style.pointRadiusMeters + nf.style.outlineRadiusMeters || 1,
618
- getInnerRadius: (nf) => nf.style.pointRadiusMeters || 0.5,
619
- parameters: {
620
- depthCompare: "always"
621
- },
622
- updateTriggers: { all: updateTrigger },
623
- // @ts-expect-error TODO
624
- nebulaLayer: this
625
- });
626
- }
627
- };
628
-
629
- // dist/lib/layers/texts-layer.js
630
- var import_layers3 = require("@deck.gl/layers");
631
-
632
- // dist/lib/constants.js
633
- var PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;
634
-
635
- // dist/lib/layers/texts-layer.js
636
- var TextsLayer = class extends NebulaLayer {
637
- deckCache;
638
- constructor(config) {
639
- super(config);
640
- this.deckCache = new DeckCache(config.getData, (data) => config.toNebulaFeature(data));
641
- }
642
- render({ nebula }) {
643
- const defaultColor = [0, 0, 0, 255];
644
- const { objects, updateTrigger } = this.deckCache;
645
- const { zoom } = nebula.props.viewport;
646
- return new import_layers3.TextLayer({
647
- id: `texts-${this.id}`,
648
- data: objects,
649
- opacity: 1,
650
- fp64: false,
651
- pickable: false,
652
- getText: (nf) => nf.style.text,
653
- getPosition: (nf) => nf.geoJson.geometry.coordinates,
654
- getColor: (nf) => toDeckColor(nf.style.fillColor) || defaultColor,
655
- // TODO: layer should offer option to scale with zoom
656
- sizeScale: 1 / Math.pow(2, 20 - zoom),
657
- getSize: PROJECTED_PIXEL_SIZE_MULTIPLIER,
658
- updateTriggers: { all: updateTrigger },
659
- nebulaLayer: this
660
- });
661
- }
662
- };
663
-
664
- // dist/lib/layers/segments-layer.js
665
- var import_layers4 = require("@deck.gl-community/layers");
666
- var NEBULA_TO_DECK_DIRECTIONS = {
667
- [ArrowStyles.NONE]: { forward: false, backward: false },
668
- [ArrowStyles.FORWARD]: { forward: true, backward: false },
669
- [ArrowStyles.BACKWARD]: { forward: false, backward: true },
670
- [ArrowStyles.BOTH]: { forward: true, backward: true }
671
- };
672
- var SegmentsLayer = class extends NebulaLayer {
673
- deckCache;
674
- noBlend;
675
- highlightColor;
676
- arrowSize;
677
- jointRounded;
678
- capRounded;
679
- dashed;
680
- markerLayerProps;
681
- constructor(config) {
682
- super(config);
683
- this.deckCache = new DeckCache(config.getData, (data) => config.toNebulaFeature(data));
684
- this.enableSelection = true;
685
- this.enablePicking = config.enablePicking ?? true;
686
- this.noBlend = config.noBlend ?? false;
687
- this.jointRounded = config.jointRounded ?? true;
688
- this.capRounded = config.capRounded ?? true;
689
- this.dashed = config.dashed ?? false;
690
- this.markerLayerProps = config.markerLayerProps ?? null;
691
- this.highlightColor = [1, 1, 1, 1];
692
- this.arrowSize = 1;
693
- }
694
- getMouseOverSegment() {
695
- return null;
696
- }
697
- _calcMarkerPercentages(nf) {
698
- const { arrowPercentages } = nf.style;
699
- if (arrowPercentages) {
700
- return arrowPercentages;
701
- }
702
- const arrowStyle = nf.style.arrowStyle || DEFAULT_STYLE.arrowStyle;
703
- if (arrowStyle === ArrowStyles.NONE)
704
- return [];
705
- const arrowCount = Math.min(nf.style.arrowCount || DEFAULT_STYLE.arrowCount, MAX_ARROWS);
706
- return [[0.5], [0.33, 0.66], [0.25, 0.5, 0.75]][arrowCount - 1];
707
- }
708
- _getHighlightedObjectIndex({ nebula }) {
709
- const { deckglMouseOverInfo } = nebula;
710
- if (deckglMouseOverInfo) {
711
- const { originalLayer, index } = deckglMouseOverInfo;
712
- if (originalLayer === this) {
713
- return index;
714
- }
715
- }
716
- return -1;
717
- }
718
- render({ nebula }) {
719
- const defaultColor = [0, 0, 0, 255];
720
- const { objects, updateTrigger } = this.deckCache;
721
- return new import_layers4.PathMarkerLayer({
722
- id: `segments-${this.id}`,
723
- data: objects,
724
- opacity: 1,
725
- fp64: false,
726
- jointRounded: this.jointRounded,
727
- capRounded: this.capRounded,
728
- pickable: true,
729
- sizeScale: this.arrowSize || 6,
730
- parameters: {
731
- depthCompare: "always",
732
- blendColorOperation: this.noBlend ? void 0 : "max"
733
- },
734
- getPath: (nf) => nf.geoJson.geometry.coordinates,
735
- getColor: (nf) => toDeckColor(nf.style.lineColor, defaultColor),
736
- getWidth: (nf) => nf.style.lineWidthMeters || 1,
737
- getZLevel: (nf) => nf.style.zLevel * 255,
738
- getDirection: (nf) => NEBULA_TO_DECK_DIRECTIONS[nf.style.arrowStyle],
739
- getMarkerColor: (nf) => toDeckColor(nf.style.arrowColor, defaultColor),
740
- // eslint-disable-next-line @typescript-eslint/unbound-method
741
- getMarkerPercentages: this._calcMarkerPercentages,
742
- updateTriggers: { all: updateTrigger },
743
- highlightedObjectIndex: this._getHighlightedObjectIndex({ nebula }),
744
- highlightColor: toDeckColor(this.highlightColor),
745
- dashJustified: this.dashed,
746
- getDashArray: this.dashed ? (nf) => nf.style.dashArray : void 0,
747
- markerLayerProps: this.markerLayerProps || import_layers4.PathMarkerLayer.defaultProps.markerLayerProps,
748
- nebulaLayer: this
749
- });
750
- }
751
- };
752
-
753
- // dist/lib/nebula-core.js
754
- var import_eventemitter32 = require("eventemitter3");
755
- var import_core2 = require("@deck.gl/core");
756
- var LOGGER_PREFIX = "Nebula: ";
757
- var NebulaCore = class {
758
- init(props) {
759
- this.props = props;
760
- this.wmViewport = new import_core2.WebMercatorViewport(this.props.viewport);
761
- ["click", "mousemove", "mouseup", "mousedown"].forEach((name) => document.addEventListener(name, this._onMouseEvent, true));
762
- }
763
- detach() {
764
- ["click", "mousemove", "mouseup", "mousedown"].forEach((name) => document.removeEventListener(name, this._onMouseEvent, true));
765
- }
766
- updateProps(newProps) {
767
- this.props = newProps;
768
- const { viewport } = this.props;
769
- this.wmViewport = new import_core2.WebMercatorViewport(viewport);
770
- }
771
- props = null;
772
- deckgl = null;
773
- mainContainer = null;
774
- deckglMouseOverInfo = null;
775
- _deckDrawer = null;
776
- _mouseWasDown = null;
777
- wmViewport = null;
778
- queryObjectEvents = new import_eventemitter32.EventEmitter();
779
- forceUpdate = null;
780
- inited = null;
781
- log(message) {
782
- const { logger } = this.props;
783
- if (logger && logger.info) {
784
- logger.info(LOGGER_PREFIX + message);
785
- }
786
- }
787
- updateAllDeckObjects() {
788
- this.getAllLayers().forEach((layer) => {
789
- if (layer && layer.deckCache) {
790
- layer.deckCache.updateAllDeckObjects();
791
- }
792
- });
793
- this.forceUpdate();
794
- }
795
- updateDeckObjectsByIds(ids) {
796
- this.getAllLayers().forEach((layer) => {
797
- if (layer && layer.deckCache) {
798
- layer.deckCache.updateDeckObjectsByIds(ids);
799
- }
800
- });
801
- this.forceUpdate();
802
- }
803
- rerenderLayers() {
804
- this.updateAllDeckObjects();
805
- }
806
- _isNebulaEvent({ buttons, target, type }) {
807
- const { viewport } = this.props;
808
- if (this._mouseWasDown && type === "mouseup") {
809
- this._mouseWasDown = false;
810
- return true;
811
- }
812
- if (type === "mousemove" && buttons > 0) {
813
- return true;
814
- }
815
- if (!target.getBoundingClientRect) {
816
- return false;
817
- }
818
- const rect = target.getBoundingClientRect();
819
- return Math.round(rect.width) === Math.round(viewport.width) && Math.round(rect.height) === Math.round(viewport.height);
820
- }
821
- _onMouseEvent = (event) => {
822
- if (!this._isNebulaEvent(event)) {
823
- return;
824
- }
825
- if (event.type === "mousedown") {
826
- this._mouseWasDown = true;
827
- }
828
- const { top = 0, left = 0 } = this.mainContainer ? this.mainContainer.getBoundingClientRect() : {};
829
- const proxyEvent = new Proxy(event, {
830
- get: (original, propertyName) => {
831
- if (propertyName === "offsetX") {
832
- return original.pageX - left;
833
- }
834
- if (propertyName === "offsetY") {
835
- return original.pageY - top;
836
- }
837
- if (propertyName === "type") {
838
- return original.type.replace("pointer", "mouse");
839
- }
840
- const result = original[propertyName];
841
- if (typeof result === "function") {
842
- return result.bind(original);
843
- }
844
- return result;
845
- }
846
- });
847
- this._handleDeckGLEvent(proxyEvent);
848
- };
849
- getMouseGroundPosition(event) {
850
- return this.wmViewport.unproject([event.offsetX, event.offsetY]);
851
- }
852
- unprojectMousePosition(mousePosition) {
853
- return this.wmViewport.unproject(mousePosition);
854
- }
855
- // eslint-disable-next-line max-statements, complexity
856
- _handleDeckGLEvent(event) {
857
- const { deckgl, props: { onMapMouseEvent, selectionType, eventFilter } } = this;
858
- let sendMapEvent = true;
859
- let cursor = "auto";
860
- if (event && deckgl && selectionType) {
861
- if (!this._deckDrawer)
862
- this._deckDrawer = new DeckDrawer(this);
863
- const lngLat = this.getMouseGroundPosition(event);
864
- if (eventFilter && !eventFilter(lngLat, event))
865
- return;
866
- const drawerResult = this._deckDrawer.handleEvent(event, lngLat, selectionType);
867
- if (drawerResult.redraw)
868
- this.forceUpdate();
869
- return;
870
- }
871
- if (event && deckgl && (!event.buttons || event.type !== "mousemove")) {
872
- const layerIds = deckgl.props.layers.filter((l) => l && l.props && l.props.nebulaLayer && l.props.nebulaLayer.enablePicking).map((l) => l.id);
873
- const pickingInfo = deckgl.pickObject({
874
- x: event.offsetX,
875
- y: event.offsetY,
876
- radius: 5,
877
- layerIds
878
- });
879
- this.queryObjectEvents.emit("pick", { event, pickingInfo });
880
- if (pickingInfo) {
881
- sendMapEvent = false;
882
- const { index, lngLat } = pickingInfo;
883
- if (eventFilter && !eventFilter(lngLat, event))
884
- return;
885
- const { layer: deckLayer, object } = pickingInfo;
886
- if (deckLayer && deckLayer.props && deckLayer.props.nebulaLayer && deckLayer.props.nebulaLayer.eventHandler) {
887
- deckLayer.props.nebulaLayer.eventHandler(event, pickingInfo);
888
- }
889
- const original = object.original || deckLayer.props.nebulaLayer && deckLayer.props.nebulaLayer.deckCache && deckLayer.props.nebulaLayer.deckCache.originals[index];
890
- if (original) {
891
- this.deckglMouseOverInfo = { originalLayer: deckLayer.props.nebulaLayer, index };
892
- const nebulaMouseEvent = new LayerMouseEvent(event, {
893
- data: original,
894
- metadata: object.metadata,
895
- groundPoint: lngLat,
896
- nebula: this
897
- });
898
- deckLayer.props.nebulaLayer.emit(event.type, nebulaMouseEvent);
899
- this.forceUpdate();
900
- }
901
- cursor = "pointer";
902
- }
903
- }
904
- if (document.documentElement) {
905
- document.documentElement.style.cursor = cursor;
906
- }
907
- if (sendMapEvent) {
908
- this.deckglMouseOverInfo = null;
909
- const lngLat = this.getMouseGroundPosition(event);
910
- if (eventFilter && !eventFilter(lngLat, event))
911
- return;
912
- const nebulaMouseEvent = new LayerMouseEvent(event, {
913
- groundPoint: lngLat,
914
- nebula: this
915
- });
916
- this.getAllLayers().filter((layer) => layer && layer.usesMapEvents).forEach((layer) => layer.emit("mapMouseEvent", nebulaMouseEvent));
917
- this.getAllLayers().filter((layer) => layer && layer.props && layer.props.nebulaLayer && layer.props.nebulaLayer.mapMouseEvent).forEach((layer) => layer.props.nebulaLayer.mapMouseEvent(nebulaMouseEvent, layer));
918
- if (onMapMouseEvent) {
919
- onMapMouseEvent(event, lngLat);
920
- }
921
- }
922
- }
923
- getExtraDeckLayers() {
924
- const result = [];
925
- if (this._deckDrawer)
926
- result.push(...this._deckDrawer.render());
927
- return result;
928
- }
929
- renderDeckLayers() {
930
- return this.getAllLayers().map((layer) => layer instanceof NebulaLayer ? layer.render({ nebula: this }) : layer).filter(Boolean);
931
- }
932
- getAllLayers() {
933
- const result = [];
934
- this.props.layers.filter(Boolean).forEach((layer) => {
935
- result.push(layer);
936
- if (layer instanceof NebulaLayer) {
937
- result.push(...layer.helperLayers);
938
- }
939
- });
940
- return result.filter(Boolean);
941
- }
942
- getRenderedLayers() {
943
- return [...this.renderDeckLayers(), ...this.getExtraDeckLayers()];
944
- }
945
- updateAndGetRenderedLayers(layers, viewport, container) {
946
- if (this.inited) {
947
- this.updateProps({ layers, viewport });
948
- this.forceUpdate = () => container.forceUpdate();
949
- } else {
950
- this.inited = true;
951
- this.init({ layers, viewport });
952
- this.forceUpdate = () => container.forceUpdate();
953
- this.updateAllDeckObjects();
954
- }
955
- return this.getRenderedLayers();
956
- }
957
- setDeck(deckgl) {
958
- if (deckgl) {
959
- this.deckgl = deckgl;
960
- }
961
- }
962
- setMainContainer(mainContainer) {
963
- if (mainContainer) {
964
- this.mainContainer = mainContainer;
965
- }
966
- }
967
- };
968
-
969
195
  // dist/editable-layers/editable-geojson-layer.js
970
- var import_layers6 = require("@deck.gl/layers");
196
+ var import_layers2 = require("@deck.gl/layers");
971
197
 
972
198
  // dist/edit-modes/geojson-edit-mode.js
199
+ var import_helpers3 = require("@turf/helpers");
973
200
  var import_union = __toESM(require("@turf/union"), 1);
974
- var import_difference2 = __toESM(require("@turf/difference"), 1);
201
+ var import_difference = __toESM(require("@turf/difference"), 1);
975
202
  var import_intersect = __toESM(require("@turf/intersect"), 1);
976
203
  var import_rewind = __toESM(require("@turf/rewind"), 1);
977
204
 
@@ -980,7 +207,7 @@ var import_destination2 = __toESM(require("@turf/destination"), 1);
980
207
  var import_bearing2 = __toESM(require("@turf/bearing"), 1);
981
208
  var import_point_to_line_distance2 = __toESM(require("@turf/point-to-line-distance"), 1);
982
209
  var import_meta = require("@turf/meta");
983
- var import_helpers3 = require("@turf/helpers");
210
+ var import_helpers2 = require("@turf/helpers");
984
211
  var import_invariant = require("@turf/invariant");
985
212
  var import_viewport_mercator_project2 = require("viewport-mercator-project");
986
213
  function recursivelyTraverseNestedArrays2(array, prefix, fn) {
@@ -1000,7 +227,7 @@ function generatePointsParallelToLinePoints2(p1, p2, coords) {
1000
227
  type: "LineString",
1001
228
  coordinates: [p1, p2]
1002
229
  };
1003
- const pt = (0, import_helpers3.point)(coords);
230
+ const pt = (0, import_helpers2.point)(coords);
1004
231
  const ddistance = (0, import_point_to_line_distance2.default)(pt, lineString3);
1005
232
  const lineBearing = (0, import_bearing2.default)(p1, p2);
1006
233
  const isPointToLeftOfLine = (coords[0] - p1[0]) * (p2[1] - p1[1]) - (coords[1] - p1[1]) * (p2[0] - p1[0]);
@@ -1069,7 +296,7 @@ function nearestPointOnLine(lines, inPoint, viewport) {
1069
296
  if (viewport) {
1070
297
  mercator = new import_viewport_mercator_project2.WebMercatorViewport(viewport);
1071
298
  }
1072
- let closestPoint = (0, import_helpers3.point)([Infinity, Infinity], {
299
+ let closestPoint = (0, import_helpers2.point)([Infinity, Infinity], {
1073
300
  dist: Infinity
1074
301
  });
1075
302
  if (!((_a = lines.geometry) == null ? void 0 : _a.coordinates.length) || ((_b = lines.geometry) == null ? void 0 : _b.coordinates.length) < 2) {
@@ -1143,7 +370,7 @@ function nearestPointOnLine(lines, inPoint, viewport) {
1143
370
  from
1144
371
  };
1145
372
  }
1146
- closestPoint = (0, import_helpers3.point)([snapPoint.x, snapPoint.y], {
373
+ closestPoint = (0, import_helpers2.point)([snapPoint.x, snapPoint.y], {
1147
374
  dist: Math.abs(snapPoint.from - snapPoint.to),
1148
375
  index: snapPoint.idx
1149
376
  });
@@ -1270,8 +497,8 @@ function shouldCancelPan(event) {
1270
497
  // dist/edit-modes/immutable-feature-collection.js
1271
498
  var ImmutableFeatureCollection = class {
1272
499
  featureCollection;
1273
- constructor(featureCollection4) {
1274
- this.featureCollection = featureCollection4;
500
+ constructor(featureCollection7) {
501
+ this.featureCollection = featureCollection7;
1275
502
  }
1276
503
  getObject() {
1277
504
  return this.featureCollection;
@@ -1506,9 +733,9 @@ function pruneGeometryIfNecessary(geometry) {
1506
733
  }
1507
734
  }
1508
735
  function prunePolygonIfNecessary(geometry) {
1509
- const polygon3 = geometry.coordinates;
1510
- for (let holeIndex = 1; holeIndex < polygon3.length; holeIndex++) {
1511
- if (removeHoleIfNecessary(polygon3, holeIndex)) {
736
+ const polygon2 = geometry.coordinates;
737
+ for (let holeIndex = 1; holeIndex < polygon2.length; holeIndex++) {
738
+ if (removeHoleIfNecessary(polygon2, holeIndex)) {
1512
739
  holeIndex--;
1513
740
  }
1514
741
  }
@@ -1524,23 +751,23 @@ function pruneMultiLineStringIfNecessary(geometry) {
1524
751
  }
1525
752
  function pruneMultiPolygonIfNecessary(geometry) {
1526
753
  for (let polygonIndex = 0; polygonIndex < geometry.coordinates.length; polygonIndex++) {
1527
- const polygon3 = geometry.coordinates[polygonIndex];
1528
- const outerRing = polygon3[0];
754
+ const polygon2 = geometry.coordinates[polygonIndex];
755
+ const outerRing = polygon2[0];
1529
756
  if (outerRing.length <= 3) {
1530
757
  geometry.coordinates.splice(polygonIndex, 1);
1531
758
  polygonIndex--;
1532
759
  }
1533
- for (let holeIndex = 1; holeIndex < polygon3.length; holeIndex++) {
1534
- if (removeHoleIfNecessary(polygon3, holeIndex)) {
760
+ for (let holeIndex = 1; holeIndex < polygon2.length; holeIndex++) {
761
+ if (removeHoleIfNecessary(polygon2, holeIndex)) {
1535
762
  holeIndex--;
1536
763
  }
1537
764
  }
1538
765
  }
1539
766
  }
1540
- function removeHoleIfNecessary(polygon3, holeIndex) {
1541
- const hole = polygon3[holeIndex];
767
+ function removeHoleIfNecessary(polygon2, holeIndex) {
768
+ const hole = polygon2[holeIndex];
1542
769
  if (hole.length <= 3) {
1543
- polygon3.splice(holeIndex, 1);
770
+ polygon2.splice(holeIndex, 1);
1544
771
  return true;
1545
772
  }
1546
773
  return false;
@@ -1667,11 +894,11 @@ var GeoJsonEditMode = class {
1667
894
  };
1668
895
  let updatedGeometry;
1669
896
  if (modeConfig.booleanOperation === "union") {
1670
- updatedGeometry = (0, import_union.default)(selectedFeature, feature);
897
+ updatedGeometry = (0, import_union.default)((0, import_helpers3.featureCollection)([selectedFeature, feature]));
1671
898
  } else if (modeConfig.booleanOperation === "difference") {
1672
- updatedGeometry = (0, import_difference2.default)(selectedFeature, feature);
899
+ updatedGeometry = (0, import_difference.default)((0, import_helpers3.featureCollection)([selectedFeature, feature]));
1673
900
  } else if (modeConfig.booleanOperation === "intersection") {
1674
- updatedGeometry = (0, import_intersect.default)(selectedFeature, feature);
901
+ updatedGeometry = (0, import_intersect.default)((0, import_helpers3.featureCollection)([selectedFeature, feature]));
1675
902
  } else {
1676
903
  console.warn(`Invalid booleanOperation ${modeConfig.booleanOperation}`);
1677
904
  return null;
@@ -1744,7 +971,7 @@ var ViewMode = class extends GeoJsonEditMode {
1744
971
 
1745
972
  // dist/edit-modes/translate-mode.js
1746
973
  var import_bearing3 = __toESM(require("@turf/bearing"), 1);
1747
- var import_distance2 = __toESM(require("@turf/distance"), 1);
974
+ var import_distance = __toESM(require("@turf/distance"), 1);
1748
975
  var import_clone = __toESM(require("@turf/clone"), 1);
1749
976
  var import_helpers4 = require("@turf/helpers");
1750
977
  var import_viewport_mercator_project3 = require("viewport-mercator-project");
@@ -1847,7 +1074,7 @@ var TranslateMode = class extends GeoJsonEditMode {
1847
1074
  } else {
1848
1075
  const p1 = (0, import_helpers4.point)(startDragPoint);
1849
1076
  const p2 = (0, import_helpers4.point)(currentPoint);
1850
- const distanceMoved = (0, import_distance2.default)(p1, p2);
1077
+ const distanceMoved = (0, import_distance.default)(p1, p2);
1851
1078
  const direction = (0, import_bearing3.default)(p1, p2);
1852
1079
  const movedFeatures = this._geometryBeforeTranslate.features.map((feature) => translateFromCenter((0, import_clone.default)(feature), distanceMoved, direction));
1853
1080
  for (let i = 0; i < selectedIndexes.length; i++) {
@@ -1894,12 +1121,7 @@ var ModifyMode = class extends GeoJsonEditMode {
1894
1121
  const referencePoint = (0, import_helpers5.point)(mapCoords2);
1895
1122
  recursivelyTraverseNestedArrays2(featureAsPick.object.geometry.coordinates, [], (lineString3, prefix) => {
1896
1123
  const lineStringFeature = (0, import_helpers5.lineString)(lineString3);
1897
- const candidateIntermediatePoint = this.getNearestPoint(
1898
- // @ts-expect-error turf types too wide
1899
- lineStringFeature,
1900
- referencePoint,
1901
- props.modeConfig && props.modeConfig.viewport
1902
- );
1124
+ const candidateIntermediatePoint = this.getNearestPoint(lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport);
1903
1125
  if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) {
1904
1126
  intermediatePoint = candidateIntermediatePoint;
1905
1127
  positionIndexPrefix = prefix;
@@ -2035,7 +1257,7 @@ var ModifyMode = class extends GeoJsonEditMode {
2035
1257
  }
2036
1258
  handleStopDragging(event, props) {
2037
1259
  const selectedFeatureIndexes = props.selectedIndexes;
2038
- const editHandle = getPickedEditHandle(event.picks);
1260
+ const editHandle = getPickedEditHandle(event.pointerDownPicks);
2039
1261
  if (selectedFeatureIndexes.length && editHandle) {
2040
1262
  this._dragEditHandle("finishMovePosition", props, editHandle, event);
2041
1263
  }
@@ -2051,14 +1273,14 @@ var ModifyMode = class extends GeoJsonEditMode {
2051
1273
  };
2052
1274
 
2053
1275
  // dist/edit-modes/scale-mode.js
2054
- var import_bbox2 = __toESM(require("@turf/bbox"), 1);
1276
+ var import_bbox = __toESM(require("@turf/bbox"), 1);
2055
1277
  var import_centroid = __toESM(require("@turf/centroid"), 1);
2056
1278
  var import_bearing4 = __toESM(require("@turf/bearing"), 1);
2057
- var import_bbox_polygon2 = __toESM(require("@turf/bbox-polygon"), 1);
1279
+ var import_bbox_polygon = __toESM(require("@turf/bbox-polygon"), 1);
2058
1280
  var import_helpers6 = require("@turf/helpers");
2059
1281
  var import_polygon_to_line = require("@turf/polygon-to-line");
2060
1282
  var import_meta2 = require("@turf/meta");
2061
- var import_distance3 = __toESM(require("@turf/distance"), 1);
1283
+ var import_distance2 = __toESM(require("@turf/distance"), 1);
2062
1284
  var import_transform_scale = __toESM(require("@turf/transform-scale"), 1);
2063
1285
  var import_invariant2 = require("@turf/invariant");
2064
1286
  var ScaleMode = class extends GeoJsonEditMode {
@@ -2107,12 +1329,7 @@ var ScaleMode = class extends GeoJsonEditMode {
2107
1329
  const oppositeHandle = this._getOppositeScaleHandle(this._selectedEditHandle);
2108
1330
  const origin = (0, import_invariant2.getCoord)(oppositeHandle);
2109
1331
  const scaleFactor = getScaleFactor(origin, startDragPoint, currentPoint);
2110
- const scaledFeatures = (0, import_transform_scale.default)(
2111
- // @ts-expect-error turf types diff
2112
- this._geometryBeingScaled,
2113
- scaleFactor,
2114
- { origin }
2115
- );
1332
+ const scaledFeatures = (0, import_transform_scale.default)(this._geometryBeingScaled, scaleFactor, { origin });
2116
1333
  return {
2117
1334
  updatedData: this._getUpdatedData(props, scaledFeatures),
2118
1335
  editType,
@@ -2186,7 +1403,7 @@ var ScaleMode = class extends GeoJsonEditMode {
2186
1403
  if (this._isSinglePointGeometrySelected(selectedGeometry)) {
2187
1404
  return { type: "FeatureCollection", features: [] };
2188
1405
  }
2189
- const boundingBox = (0, import_bbox_polygon2.default)((0, import_bbox2.default)(selectedGeometry));
1406
+ const boundingBox = (0, import_bbox_polygon.default)((0, import_bbox.default)(selectedGeometry));
2190
1407
  boundingBox.properties.mode = "scale";
2191
1408
  const cornerGuidePoints = [];
2192
1409
  (0, import_meta2.coordEach)(boundingBox, (coord, coordIndex) => {
@@ -2204,17 +1421,17 @@ var ScaleMode = class extends GeoJsonEditMode {
2204
1421
  }
2205
1422
  };
2206
1423
  function getScaleFactor(centroid, startDragPoint, currentPoint) {
2207
- const startDistance = (0, import_distance3.default)(centroid, startDragPoint);
2208
- const endDistance = (0, import_distance3.default)(centroid, currentPoint);
1424
+ const startDistance = (0, import_distance2.default)(centroid, startDragPoint);
1425
+ const endDistance = (0, import_distance2.default)(centroid, currentPoint);
2209
1426
  return endDistance / startDistance;
2210
1427
  }
2211
1428
 
2212
1429
  // dist/edit-modes/rotate-mode.js
2213
- var import_bbox3 = __toESM(require("@turf/bbox"), 1);
1430
+ var import_bbox2 = __toESM(require("@turf/bbox"), 1);
2214
1431
  var import_centroid2 = __toESM(require("@turf/centroid"), 1);
2215
1432
  var import_bearing5 = __toESM(require("@turf/bearing"), 1);
2216
- var import_bbox_polygon3 = __toESM(require("@turf/bbox-polygon"), 1);
2217
- var import_distance4 = __toESM(require("@turf/distance"), 1);
1433
+ var import_bbox_polygon2 = __toESM(require("@turf/bbox-polygon"), 1);
1434
+ var import_distance3 = __toESM(require("@turf/distance"), 1);
2218
1435
  var import_meta3 = require("@turf/meta");
2219
1436
  var import_invariant3 = require("@turf/invariant");
2220
1437
  var import_helpers7 = require("@turf/helpers");
@@ -2241,7 +1458,7 @@ var RotateMode = class extends GeoJsonEditMode {
2241
1458
  if (this._isRotating) {
2242
1459
  return (0, import_helpers7.featureCollection)([(0, import_centroid2.default)(selectedGeometry)]);
2243
1460
  }
2244
- const boundingBox = (0, import_bbox_polygon3.default)((0, import_bbox3.default)(selectedGeometry));
1461
+ const boundingBox = (0, import_bbox_polygon2.default)((0, import_bbox2.default)(selectedGeometry));
2245
1462
  let previousCoord = null;
2246
1463
  let topEdgeMidpointCoords = null;
2247
1464
  let longestEdgeLength = 0;
@@ -2251,7 +1468,7 @@ var RotateMode = class extends GeoJsonEditMode {
2251
1468
  if (!topEdgeMidpointCoords || edgeMidpoint[1] > topEdgeMidpointCoords[1]) {
2252
1469
  topEdgeMidpointCoords = edgeMidpoint;
2253
1470
  }
2254
- const edgeDistance = (0, import_distance4.default)(coord, previousCoord);
1471
+ const edgeDistance = (0, import_distance3.default)(coord, previousCoord);
2255
1472
  longestEdgeLength = Math.max(longestEdgeLength, edgeDistance);
2256
1473
  }
2257
1474
  previousCoord = coord;
@@ -2315,15 +1532,10 @@ var RotateMode = class extends GeoJsonEditMode {
2315
1532
  return null;
2316
1533
  }
2317
1534
  const centroid = (0, import_centroid2.default)(this._geometryBeingRotated);
2318
- const angle = getRotationAngle(centroid, startDragPoint, currentPoint);
2319
- const rotatedFeatures = (0, import_transform_rotate.default)(
2320
- // @ts-expect-error turf types too wide
2321
- this._geometryBeingRotated,
2322
- angle,
2323
- {
2324
- pivot: centroid
2325
- }
2326
- );
1535
+ const angle = getRotationAngle(centroid.geometry.coordinates, startDragPoint, currentPoint);
1536
+ const rotatedFeatures = (0, import_transform_rotate.default)(this._geometryBeingRotated, angle, {
1537
+ pivot: centroid
1538
+ });
2327
1539
  let updatedData = new ImmutableFeatureCollection(props.data);
2328
1540
  const selectedIndexes = props.selectedIndexes;
2329
1541
  for (let i = 0; i < selectedIndexes.length; i++) {
@@ -2365,12 +1577,12 @@ var DuplicateMode = class extends TranslateMode {
2365
1577
 
2366
1578
  // dist/edit-modes/split-polygon-mode.js
2367
1579
  var import_boolean_point_in_polygon = __toESM(require("@turf/boolean-point-in-polygon"), 1);
2368
- var import_difference3 = __toESM(require("@turf/difference"), 1);
2369
- var import_buffer2 = __toESM(require("@turf/buffer"), 1);
1580
+ var import_difference2 = __toESM(require("@turf/difference"), 1);
1581
+ var import_buffer = __toESM(require("@turf/buffer"), 1);
2370
1582
  var import_line_intersect = __toESM(require("@turf/line-intersect"), 1);
2371
1583
  var import_helpers8 = require("@turf/helpers");
2372
1584
  var import_bearing6 = __toESM(require("@turf/bearing"), 1);
2373
- var import_distance5 = __toESM(require("@turf/distance"), 1);
1585
+ var import_distance4 = __toESM(require("@turf/distance"), 1);
2374
1586
  var import_destination3 = __toESM(require("@turf/destination"), 1);
2375
1587
  var import_polygon_to_line3 = __toESM(require("@turf/polygon-to-line"), 1);
2376
1588
  var import_nearest_point_on_line = __toESM(require("@turf/nearest-point-on-line"), 1);
@@ -2389,7 +1601,7 @@ var SplitPolygonMode = class extends GeoJsonEditMode {
2389
1601
  let closestPoint = null;
2390
1602
  lines.forEach((line) => {
2391
1603
  const snapPoint = (0, import_nearest_point_on_line.default)(line, firstPoint);
2392
- const distanceFromOrigin = (0, import_distance5.default)(snapPoint, firstPoint);
1604
+ const distanceFromOrigin = (0, import_distance4.default)(snapPoint, firstPoint);
2393
1605
  if (minDistance > distanceFromOrigin) {
2394
1606
  minDistance = distanceFromOrigin;
2395
1607
  closestPoint = snapPoint;
@@ -2397,7 +1609,7 @@ var SplitPolygonMode = class extends GeoJsonEditMode {
2397
1609
  });
2398
1610
  if (closestPoint) {
2399
1611
  const lastBearing = (0, import_bearing6.default)(firstPoint, closestPoint);
2400
- const currentDistance = (0, import_distance5.default)(firstPoint, mapCoords2, { units: "meters" });
1612
+ const currentDistance = (0, import_distance4.default)(firstPoint, mapCoords2, { units: "meters" });
2401
1613
  return (0, import_destination3.default)(firstPoint, currentDistance, lastBearing, {
2402
1614
  units: "meters"
2403
1615
  }).geometry.coordinates;
@@ -2473,8 +1685,8 @@ var SplitPolygonMode = class extends GeoJsonEditMode {
2473
1685
  gap = 0.1;
2474
1686
  units = "centimeters";
2475
1687
  }
2476
- const buffer = (0, import_buffer2.default)(tentativeFeature, gap, { units });
2477
- const updatedGeometry = (0, import_difference3.default)(selectedGeometry, buffer);
1688
+ const buffer = (0, import_buffer.default)(tentativeFeature, gap, { units });
1689
+ const updatedGeometry = (0, import_difference2.default)((0, import_helpers8.featureCollection)([(0, import_helpers8.feature)(selectedGeometry), buffer]));
2478
1690
  if (!updatedGeometry) {
2479
1691
  console.warn("Canceling edit. Split Polygon erased");
2480
1692
  return null;
@@ -2749,7 +1961,7 @@ var DrawPointMode = class extends GeoJsonEditMode {
2749
1961
  };
2750
1962
 
2751
1963
  // dist/edit-modes/draw-line-string-mode.js
2752
- var import_distance6 = __toESM(require("@turf/distance"), 1);
1964
+ var import_distance5 = __toESM(require("@turf/distance"), 1);
2753
1965
 
2754
1966
  // dist/utils/memoize.js
2755
1967
  function isEqual(a, b) {
@@ -2906,7 +2118,7 @@ var DrawLineStringMode = class extends GeoJsonEditMode {
2906
2118
  calculateInfoDraw(clickSequence) {
2907
2119
  if (clickSequence.length > 1) {
2908
2120
  this.position = clickSequence[clickSequence.length - 1];
2909
- this.dist += (0, import_distance6.default)(clickSequence[clickSequence.length - 2], clickSequence[clickSequence.length - 1]);
2121
+ this.dist += (0, import_distance5.default)(clickSequence[clickSequence.length - 2], clickSequence[clickSequence.length - 1]);
2910
2122
  }
2911
2123
  }
2912
2124
  /**
@@ -2938,48 +2150,53 @@ var DrawLineStringMode = class extends GeoJsonEditMode {
2938
2150
  // dist/edit-modes/draw-polygon-mode.js
2939
2151
  var import_line_intersect2 = __toESM(require("@turf/line-intersect"), 1);
2940
2152
  var import_helpers9 = require("@turf/helpers");
2153
+ var import_boolean_within = __toESM(require("@turf/boolean-within"), 1);
2941
2154
  var DrawPolygonMode = class extends GeoJsonEditMode {
2155
+ holeSequence = [];
2156
+ isDrawingHole = false;
2942
2157
  createTentativeFeature(props) {
2943
2158
  const { lastPointerMoveEvent } = props;
2944
2159
  const clickSequence = this.getClickSequence();
2160
+ const holeSequence = this.holeSequence;
2945
2161
  const lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];
2946
- let tentativeFeature;
2947
- if (clickSequence.length === 1 || clickSequence.length === 2) {
2948
- tentativeFeature = {
2949
- type: "Feature",
2950
- properties: {
2951
- guideType: "tentative"
2952
- },
2953
- geometry: {
2954
- type: "LineString",
2955
- coordinates: [...clickSequence, ...lastCoords]
2956
- }
2162
+ let geometry;
2163
+ if (this.isDrawingHole && holeSequence.length > 1) {
2164
+ geometry = {
2165
+ type: "Polygon",
2166
+ coordinates: [
2167
+ [...clickSequence, clickSequence[0]],
2168
+ [...holeSequence, ...lastCoords, holeSequence[0]]
2169
+ ]
2957
2170
  };
2958
2171
  } else if (clickSequence.length > 2) {
2959
- tentativeFeature = {
2960
- type: "Feature",
2961
- properties: {
2962
- guideType: "tentative"
2963
- },
2964
- geometry: {
2965
- type: "Polygon",
2966
- coordinates: [[...clickSequence, ...lastCoords, clickSequence[0]]]
2967
- }
2172
+ geometry = {
2173
+ type: "Polygon",
2174
+ coordinates: [[...clickSequence, ...lastCoords, clickSequence[0]]]
2175
+ };
2176
+ } else {
2177
+ geometry = {
2178
+ type: "LineString",
2179
+ coordinates: [...clickSequence, ...lastCoords]
2968
2180
  };
2969
2181
  }
2970
- return tentativeFeature;
2182
+ return {
2183
+ type: "Feature",
2184
+ properties: {
2185
+ guideType: "tentative"
2186
+ },
2187
+ geometry
2188
+ };
2971
2189
  }
2972
2190
  getGuides(props) {
2973
- const clickSequence = this.getClickSequence();
2974
2191
  const guides = {
2975
2192
  type: "FeatureCollection",
2976
2193
  features: []
2977
2194
  };
2978
- const tentativeFeature = this.createTentativeFeature(props);
2979
- if (tentativeFeature) {
2980
- guides.features.push(tentativeFeature);
2981
- }
2982
- const editHandles = clickSequence.map((clickedCoord, index) => ({
2195
+ const tentative = this.createTentativeFeature(props);
2196
+ if (tentative)
2197
+ guides.features.push(tentative);
2198
+ const sequence = this.isDrawingHole ? this.holeSequence : this.getClickSequence();
2199
+ const handles = sequence.map((coord, index) => ({
2983
2200
  type: "Feature",
2984
2201
  properties: {
2985
2202
  guideType: "editHandle",
@@ -2989,51 +2206,55 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
2989
2206
  },
2990
2207
  geometry: {
2991
2208
  type: "Point",
2992
- coordinates: clickedCoord
2209
+ coordinates: coord
2993
2210
  }
2994
2211
  }));
2995
- guides.features.push(...editHandles);
2212
+ guides.features.push(...handles);
2996
2213
  return guides;
2997
2214
  }
2998
- finishDrawing(props) {
2999
- const clickSequence = this.getClickSequence();
3000
- if (clickSequence.length > 2) {
3001
- const polygonToAdd = {
3002
- type: "Polygon",
3003
- coordinates: [[...clickSequence, clickSequence[0]]]
3004
- };
3005
- this.resetClickSequence();
3006
- const editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);
3007
- if (editAction) {
3008
- props.onEdit(editAction);
3009
- }
3010
- }
3011
- }
3012
- // eslint-disable-next-line complexity
2215
+ // eslint-disable-next-line complexity, max-statements
3013
2216
  handleClick(event, props) {
3014
2217
  const { picks } = event;
3015
2218
  const clickedEditHandle = getPickedEditHandle(picks);
3016
2219
  const clickSequence = this.getClickSequence();
3017
- let overlappingLines = false;
3018
- if (clickSequence.length > 2 && props.modeConfig && props.modeConfig.preventOverlappingLines) {
3019
- const currentLine = (0, import_helpers9.lineString)([
3020
- clickSequence[clickSequence.length - 1],
3021
- event.mapCoords
3022
- ]);
3023
- const otherLines = (0, import_helpers9.lineString)([...clickSequence.slice(0, clickSequence.length - 1)]);
3024
- const intersectingPoints = (0, import_line_intersect2.default)(currentLine, otherLines);
3025
- if (intersectingPoints.features.length > 0) {
3026
- overlappingLines = true;
2220
+ const coords = event.mapCoords;
2221
+ if (!this.isDrawingHole && clickSequence.length > 2 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[0] === 0 || clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1)) {
2222
+ this.finishDrawing(props);
2223
+ return;
2224
+ }
2225
+ if (!this.isDrawingHole && clickSequence.length > 2) {
2226
+ if (isNearFirstPoint(coords, clickSequence[0])) {
2227
+ this.finishDrawing(props);
2228
+ this.resetClickSequence();
2229
+ return;
2230
+ }
2231
+ }
2232
+ if (this.isDrawingHole) {
2233
+ const current = this.holeSequence;
2234
+ current.push(coords);
2235
+ if (current.length > 2) {
2236
+ const poly = {
2237
+ type: "Polygon",
2238
+ coordinates: [
2239
+ [...clickSequence, clickSequence[0]],
2240
+ [...current, current[0]]
2241
+ ]
2242
+ };
2243
+ this.resetClickSequence();
2244
+ this.holeSequence = [];
2245
+ this.isDrawingHole = false;
2246
+ const editAction = this.getAddFeatureOrBooleanPolygonAction(poly, props);
2247
+ if (editAction)
2248
+ props.onEdit(editAction);
3027
2249
  }
2250
+ return;
3028
2251
  }
3029
2252
  let positionAdded = false;
3030
- if (!clickedEditHandle && !overlappingLines) {
2253
+ if (!clickedEditHandle) {
3031
2254
  this.addClickSequence(event);
3032
2255
  positionAdded = true;
3033
2256
  }
3034
- if (clickSequence.length > 2 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[0] === 0 || clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1)) {
3035
- this.finishDrawing(props);
3036
- } else if (positionAdded) {
2257
+ if (positionAdded) {
3037
2258
  props.onEdit({
3038
2259
  // data is the same
3039
2260
  updatedData: props.data,
@@ -3044,16 +2265,19 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
3044
2265
  });
3045
2266
  }
3046
2267
  }
3047
- handleDoubleClick(event, props) {
2268
+ handleDoubleClick(_event, props) {
3048
2269
  this.finishDrawing(props);
2270
+ this.resetClickSequence();
3049
2271
  }
3050
2272
  handleKeyUp(event, props) {
3051
2273
  if (event.key === "Enter") {
3052
2274
  this.finishDrawing(props);
2275
+ this.resetClickSequence();
3053
2276
  } else if (event.key === "Escape") {
3054
2277
  this.resetClickSequence();
2278
+ this.holeSequence = [];
2279
+ this.isDrawingHole = false;
3055
2280
  props.onEdit({
3056
- // Because the new drawing feature is dropped, so the data will keep as the same.
3057
2281
  updatedData: props.data,
3058
2282
  editType: "cancelFeature",
3059
2283
  editContext: {}
@@ -3064,10 +2288,122 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
3064
2288
  props.onUpdateCursor("cell");
3065
2289
  super.handlePointerMove(event, props);
3066
2290
  }
2291
+ // eslint-disable-next-line max-statements, complexity
2292
+ finishDrawing(props) {
2293
+ const clickSequence = this.getClickSequence();
2294
+ const polygon2 = [...clickSequence, clickSequence[0]];
2295
+ const newPolygon = (0, import_helpers9.polygon)([polygon2]);
2296
+ const canAddHole = canAddHoleToPolygon(props);
2297
+ const canOverlap = canPolygonOverlap(props);
2298
+ if (!canOverlap) {
2299
+ const overlapping = (0, import_line_intersect2.default)(newPolygon, newPolygon).features.filter((intersection) => !newPolygon.geometry.coordinates[0].some((coord) => coord[0] === intersection.geometry.coordinates[0] && coord[1] === intersection.geometry.coordinates[1]));
2300
+ if (overlapping.length > 0) {
2301
+ props.onEdit({
2302
+ updatedData: props.data,
2303
+ editType: "invalidPolygon",
2304
+ editContext: { reason: "overlaps" }
2305
+ });
2306
+ this.resetClickSequence();
2307
+ return;
2308
+ }
2309
+ }
2310
+ if (canAddHole) {
2311
+ const holeResult = this.tryAddHoleToExistingPolygon(newPolygon, polygon2, props);
2312
+ if (holeResult.handled) {
2313
+ this.resetClickSequence();
2314
+ return;
2315
+ }
2316
+ }
2317
+ const editAction = this.getAddFeatureOrBooleanPolygonAction({
2318
+ type: "Polygon",
2319
+ coordinates: [[...this.getClickSequence(), this.getClickSequence()[0]]]
2320
+ }, props);
2321
+ if (editAction)
2322
+ props.onEdit(editAction);
2323
+ this.resetClickSequence();
2324
+ return;
2325
+ }
2326
+ tryAddHoleToExistingPolygon(newPolygon, polygon2, props) {
2327
+ for (const [featureIndex, feature] of props.data.features.entries()) {
2328
+ if (feature.geometry.type === "Polygon") {
2329
+ const result = this.validateAndCreateHole(feature, featureIndex, newPolygon, polygon2, props);
2330
+ if (result.handled) {
2331
+ return result;
2332
+ }
2333
+ }
2334
+ }
2335
+ return { handled: false };
2336
+ }
2337
+ validateAndCreateHole(feature, featureIndex, newPolygon, polygon2, props) {
2338
+ const outer = (0, import_helpers9.polygon)(feature.geometry.coordinates);
2339
+ for (let i = 1; i < feature.geometry.coordinates.length; i++) {
2340
+ const hole = (0, import_helpers9.polygon)([feature.geometry.coordinates[i]]);
2341
+ const intersection = (0, import_line_intersect2.default)(hole, newPolygon);
2342
+ if (intersection.features.length > 0) {
2343
+ props.onEdit({
2344
+ updatedData: props.data,
2345
+ editType: "invalidHole",
2346
+ editContext: { reason: "intersects-existing-hole" }
2347
+ });
2348
+ return { handled: true };
2349
+ }
2350
+ if ((0, import_boolean_within.default)(hole, newPolygon) || (0, import_boolean_within.default)(newPolygon, hole)) {
2351
+ props.onEdit({
2352
+ updatedData: props.data,
2353
+ editType: "invalidHole",
2354
+ editContext: { reason: "contains-or-contained-by-existing-hole" }
2355
+ });
2356
+ return { handled: true };
2357
+ }
2358
+ }
2359
+ const intersectionWithOuter = (0, import_line_intersect2.default)(outer, newPolygon);
2360
+ if (intersectionWithOuter.features.length > 0) {
2361
+ props.onEdit({
2362
+ updatedData: props.data,
2363
+ editType: "invalidPolygon",
2364
+ editContext: { reason: "intersects-existing-polygon" }
2365
+ });
2366
+ return { handled: true };
2367
+ }
2368
+ if ((0, import_boolean_within.default)(outer, newPolygon)) {
2369
+ props.onEdit({
2370
+ updatedData: props.data,
2371
+ editType: "invalidPolygon",
2372
+ editContext: { reason: "contains-existing-polygon" }
2373
+ });
2374
+ return { handled: true };
2375
+ }
2376
+ if ((0, import_boolean_within.default)(newPolygon, outer)) {
2377
+ const updatedData = new ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, {
2378
+ ...feature.geometry,
2379
+ coordinates: [...feature.geometry.coordinates, polygon2]
2380
+ }).getObject();
2381
+ props.onEdit({
2382
+ updatedData,
2383
+ editType: "addHole",
2384
+ editContext: { hole: newPolygon.geometry }
2385
+ });
2386
+ return { handled: true };
2387
+ }
2388
+ return { handled: false };
2389
+ }
3067
2390
  };
2391
+ function isNearFirstPoint(click, first, threshold = 1e-4) {
2392
+ const dx = click[0] - first[0];
2393
+ const dy = click[1] - first[1];
2394
+ return dx * dx + dy * dy < threshold * threshold;
2395
+ }
2396
+ function canAddHoleToPolygon(props) {
2397
+ var _a;
2398
+ return ((_a = props.modeConfig) == null ? void 0 : _a.allowHoles) ?? false;
2399
+ }
2400
+ function canPolygonOverlap(props) {
2401
+ var _a;
2402
+ return ((_a = props.modeConfig) == null ? void 0 : _a.allowSelfIntersection) ?? false;
2403
+ }
3068
2404
 
3069
2405
  // dist/edit-modes/draw-rectangle-mode.js
3070
- var import_bbox_polygon4 = __toESM(require("@turf/bbox-polygon"), 1);
2406
+ var import_bbox_polygon3 = __toESM(require("@turf/bbox-polygon"), 1);
3071
2407
 
3072
2408
  // dist/edit-modes/two-click-polygon-mode.js
3073
2409
  var import_lodash = __toESM(require("lodash.omit"), 1);
@@ -3124,15 +2460,15 @@ var TwoClickPolygonMode = class extends GeoJsonEditMode {
3124
2460
  }
3125
2461
  const corner1 = clickSequence[0];
3126
2462
  const corner2 = lastPointerMoveEvent.mapCoords;
3127
- const polygon3 = this.getTwoClickPolygon(corner1, corner2, modeConfig);
3128
- if (polygon3) {
2463
+ const polygon2 = this.getTwoClickPolygon(corner1, corner2, modeConfig);
2464
+ if (polygon2) {
3129
2465
  guides.features.push({
3130
2466
  type: "Feature",
3131
2467
  properties: {
3132
- ...polygon3.properties,
2468
+ ...polygon2.properties,
3133
2469
  guideType: "tentative"
3134
2470
  },
3135
- geometry: polygon3.geometry
2471
+ geometry: polygon2.geometry
3136
2472
  });
3137
2473
  }
3138
2474
  return guides;
@@ -3159,7 +2495,7 @@ var TwoClickPolygonMode = class extends GeoJsonEditMode {
3159
2495
  // dist/edit-modes/draw-rectangle-mode.js
3160
2496
  var DrawRectangleMode = class extends TwoClickPolygonMode {
3161
2497
  getTwoClickPolygon(coord1, coord2, modeConfig) {
3162
- const rectangle = (0, import_bbox_polygon4.default)([coord1[0], coord1[1], coord2[0], coord2[1]]);
2498
+ const rectangle = (0, import_bbox_polygon3.default)([coord1[0], coord1[1], coord2[0], coord2[1]]);
3163
2499
  rectangle.properties = rectangle.properties || {};
3164
2500
  rectangle.properties.shape = "Rectangle";
3165
2501
  return rectangle;
@@ -3167,22 +2503,22 @@ var DrawRectangleMode = class extends TwoClickPolygonMode {
3167
2503
  };
3168
2504
 
3169
2505
  // dist/edit-modes/draw-square-mode.js
3170
- var import_bbox_polygon5 = __toESM(require("@turf/bbox-polygon"), 1);
3171
- var import_distance7 = __toESM(require("@turf/distance"), 1);
2506
+ var import_bbox_polygon4 = __toESM(require("@turf/bbox-polygon"), 1);
2507
+ var import_distance6 = __toESM(require("@turf/distance"), 1);
3172
2508
  var import_along = __toESM(require("@turf/along"), 1);
3173
2509
  var import_helpers10 = require("@turf/helpers");
3174
2510
  var DrawSquareMode = class extends TwoClickPolygonMode {
3175
2511
  getTwoClickPolygon(coord1, coord2, modeConfig) {
3176
2512
  const coord3 = [coord2[0], coord1[1]];
3177
2513
  const coord4 = [coord1[0], coord2[1]];
3178
- const distance1 = (0, import_distance7.default)((0, import_helpers10.point)(coord3), (0, import_helpers10.point)(coord1));
3179
- const distance22 = (0, import_distance7.default)((0, import_helpers10.point)(coord4), (0, import_helpers10.point)(coord1));
2514
+ const distance1 = (0, import_distance6.default)((0, import_helpers10.point)(coord3), (0, import_helpers10.point)(coord1));
2515
+ const distance22 = (0, import_distance6.default)((0, import_helpers10.point)(coord4), (0, import_helpers10.point)(coord1));
3180
2516
  const shortestDistance = distance1 <= distance22 ? distance1 : distance22;
3181
2517
  const closestPoint = distance1 <= distance22 ? coord3 : coord4;
3182
2518
  const line = (0, import_helpers10.lineString)([closestPoint, coord2]);
3183
2519
  const newPoint = (0, import_along.default)(line, shortestDistance);
3184
2520
  const corner = newPoint.geometry.coordinates;
3185
- const square = (0, import_bbox_polygon5.default)([coord1[0], coord1[1], corner[0], corner[1]]);
2521
+ const square = (0, import_bbox_polygon4.default)([coord1[0], coord1[1], corner[0], corner[1]]);
3186
2522
  square.properties = square.properties || {};
3187
2523
  square.properties.shape = "Square";
3188
2524
  return square;
@@ -3190,12 +2526,12 @@ var DrawSquareMode = class extends TwoClickPolygonMode {
3190
2526
  };
3191
2527
 
3192
2528
  // dist/edit-modes/draw-rectangle-from-center-mode.js
3193
- var import_bbox_polygon6 = __toESM(require("@turf/bbox-polygon"), 1);
2529
+ var import_bbox_polygon5 = __toESM(require("@turf/bbox-polygon"), 1);
3194
2530
  var DrawRectangleFromCenterMode = class extends TwoClickPolygonMode {
3195
2531
  getTwoClickPolygon(coord1, coord2, modeConfig) {
3196
2532
  const longitude = coord1[0] > coord2[0] ? coord1[0] + Math.abs(coord1[0] - coord2[0]) : coord1[0] - Math.abs(coord1[0] - coord2[0]);
3197
2533
  const latitude = coord1[1] > coord2[1] ? coord1[1] + Math.abs(coord1[1] - coord2[1]) : coord1[1] - Math.abs(coord1[1] - coord2[1]);
3198
- const rectangle = (0, import_bbox_polygon6.default)([longitude, latitude, coord2[0], coord2[1]]);
2534
+ const rectangle = (0, import_bbox_polygon5.default)([longitude, latitude, coord2[0], coord2[1]]);
3199
2535
  rectangle.properties = rectangle.properties || {};
3200
2536
  rectangle.properties.shape = "Rectangle";
3201
2537
  return rectangle;
@@ -3203,16 +2539,16 @@ var DrawRectangleFromCenterMode = class extends TwoClickPolygonMode {
3203
2539
  };
3204
2540
 
3205
2541
  // dist/edit-modes/draw-square-from-center-mode.js
3206
- var import_bbox_polygon7 = __toESM(require("@turf/bbox-polygon"), 1);
3207
- var import_distance8 = __toESM(require("@turf/distance"), 1);
2542
+ var import_bbox_polygon6 = __toESM(require("@turf/bbox-polygon"), 1);
2543
+ var import_distance7 = __toESM(require("@turf/distance"), 1);
3208
2544
  var import_along2 = __toESM(require("@turf/along"), 1);
3209
2545
  var import_helpers11 = require("@turf/helpers");
3210
2546
  var DrawSquareFromCenterMode = class extends TwoClickPolygonMode {
3211
2547
  getTwoClickPolygon(coord1, coord2, modeConfig) {
3212
2548
  const coord3 = [coord2[0], coord1[1]];
3213
2549
  const coord4 = [coord1[0], coord2[1]];
3214
- const distance1 = (0, import_distance8.default)((0, import_helpers11.point)(coord3), (0, import_helpers11.point)(coord1));
3215
- const distance22 = (0, import_distance8.default)((0, import_helpers11.point)(coord4), (0, import_helpers11.point)(coord1));
2550
+ const distance1 = (0, import_distance7.default)((0, import_helpers11.point)(coord3), (0, import_helpers11.point)(coord1));
2551
+ const distance22 = (0, import_distance7.default)((0, import_helpers11.point)(coord4), (0, import_helpers11.point)(coord1));
3216
2552
  const shortestDistance = distance1 <= distance22 ? distance1 : distance22;
3217
2553
  const closestPoint = distance1 <= distance22 ? coord3 : coord4;
3218
2554
  const line = (0, import_helpers11.lineString)([closestPoint, coord2]);
@@ -3220,7 +2556,7 @@ var DrawSquareFromCenterMode = class extends TwoClickPolygonMode {
3220
2556
  const corner = newPoint.geometry.coordinates;
3221
2557
  const longitude = coord1[0] > corner[0] ? coord1[0] + Math.abs(coord1[0] - corner[0]) : coord1[0] - Math.abs(coord1[0] - corner[0]);
3222
2558
  const latitude = coord1[1] > corner[1] ? coord1[1] + Math.abs(coord1[1] - corner[1]) : coord1[1] - Math.abs(coord1[1] - corner[1]);
3223
- const square = (0, import_bbox_polygon7.default)([longitude, latitude, corner[0], corner[1]]);
2559
+ const square = (0, import_bbox_polygon6.default)([longitude, latitude, corner[0], corner[1]]);
3224
2560
  square.properties = square.properties || {};
3225
2561
  square.properties.shape = "Square";
3226
2562
  return square;
@@ -3229,7 +2565,7 @@ var DrawSquareFromCenterMode = class extends TwoClickPolygonMode {
3229
2565
 
3230
2566
  // dist/edit-modes/draw-circle-from-center-mode.js
3231
2567
  var import_circle = __toESM(require("@turf/circle"), 1);
3232
- var import_distance9 = __toESM(require("@turf/distance"), 1);
2568
+ var import_distance8 = __toESM(require("@turf/distance"), 1);
3233
2569
  var import_area = __toESM(require("@turf/area"), 1);
3234
2570
  var DrawCircleFromCenterMode = class extends TwoClickPolygonMode {
3235
2571
  radius = null;
@@ -3243,7 +2579,7 @@ var DrawCircleFromCenterMode = class extends TwoClickPolygonMode {
3243
2579
  console.warn("Minimum steps to draw a circle is 4 ");
3244
2580
  options.steps = 4;
3245
2581
  }
3246
- this.radius = Math.max((0, import_distance9.default)(coord1, coord2), 1e-3);
2582
+ this.radius = Math.max((0, import_distance8.default)(coord1, coord2), 1e-3);
3247
2583
  const geometry = (0, import_circle.default)(coord1, this.radius, options);
3248
2584
  geometry.properties = geometry.properties || {};
3249
2585
  geometry.properties.shape = "Circle";
@@ -3297,7 +2633,7 @@ var DrawCircleFromCenterMode = class extends TwoClickPolygonMode {
3297
2633
 
3298
2634
  // dist/edit-modes/draw-circle-by-diameter-mode.js
3299
2635
  var import_circle2 = __toESM(require("@turf/circle"), 1);
3300
- var import_distance10 = __toESM(require("@turf/distance"), 1);
2636
+ var import_distance9 = __toESM(require("@turf/distance"), 1);
3301
2637
  var import_area2 = __toESM(require("@turf/area"), 1);
3302
2638
  var DrawCircleByDiameterMode = class extends TwoClickPolygonMode {
3303
2639
  radius = null;
@@ -3312,8 +2648,8 @@ var DrawCircleByDiameterMode = class extends TwoClickPolygonMode {
3312
2648
  options.steps = 4;
3313
2649
  }
3314
2650
  const centerCoordinates = getIntermediatePosition(coord1, coord2);
3315
- this.radius = Math.max((0, import_distance10.default)(coord1, centerCoordinates), 1e-3);
3316
- this.diameter = Math.max((0, import_distance10.default)(coord1, coord2), 1e-3);
2651
+ this.radius = Math.max((0, import_distance9.default)(coord1, centerCoordinates), 1e-3);
2652
+ this.diameter = Math.max((0, import_distance9.default)(coord1, coord2), 1e-3);
3317
2653
  this.position = centerCoordinates;
3318
2654
  const geometry = (0, import_circle2.default)(centerCoordinates, this.radius, options);
3319
2655
  geometry.properties = geometry.properties || {};
@@ -3371,8 +2707,8 @@ var DrawCircleByDiameterMode = class extends TwoClickPolygonMode {
3371
2707
  };
3372
2708
 
3373
2709
  // dist/edit-modes/draw-ellipse-by-bounding-box-mode.js
3374
- var import_bbox_polygon8 = __toESM(require("@turf/bbox-polygon"), 1);
3375
- var import_distance11 = __toESM(require("@turf/distance"), 1);
2710
+ var import_bbox_polygon7 = __toESM(require("@turf/bbox-polygon"), 1);
2711
+ var import_distance10 = __toESM(require("@turf/distance"), 1);
3376
2712
  var import_ellipse = __toESM(require("@turf/ellipse"), 1);
3377
2713
  var import_helpers12 = require("@turf/helpers");
3378
2714
  var DrawEllipseByBoundingBoxMode = class extends TwoClickPolygonMode {
@@ -3381,11 +2717,11 @@ var DrawEllipseByBoundingBoxMode = class extends TwoClickPolygonMode {
3381
2717
  const minY = Math.min(coord1[1], coord2[1]);
3382
2718
  const maxX = Math.max(coord1[0], coord2[0]);
3383
2719
  const maxY = Math.max(coord1[1], coord2[1]);
3384
- const polygonPoints = (0, import_bbox_polygon8.default)([minX, minY, maxX, maxY]).geometry.coordinates[0];
2720
+ const polygonPoints = (0, import_bbox_polygon7.default)([minX, minY, maxX, maxY]).geometry.coordinates[0];
3385
2721
  const centerCoordinates = getIntermediatePosition(coord1, coord2);
3386
- const xSemiAxis = Math.max((0, import_distance11.default)((0, import_helpers12.point)(polygonPoints[0]), (0, import_helpers12.point)(polygonPoints[1])), 1e-3);
3387
- const ySemiAxis = Math.max((0, import_distance11.default)((0, import_helpers12.point)(polygonPoints[0]), (0, import_helpers12.point)(polygonPoints[3])), 1e-3);
3388
- const geometry = (0, import_ellipse.default)(centerCoordinates, xSemiAxis, ySemiAxis);
2722
+ const xSemiAxis = Math.max((0, import_distance10.default)((0, import_helpers12.point)(polygonPoints[0]), (0, import_helpers12.point)(polygonPoints[1])), 1e-3);
2723
+ const ySemiAxis = Math.max((0, import_distance10.default)((0, import_helpers12.point)(polygonPoints[0]), (0, import_helpers12.point)(polygonPoints[3])), 1e-3);
2724
+ const geometry = (0, import_ellipse.default)(centerCoordinates, xSemiAxis, ySemiAxis, {});
3389
2725
  geometry.properties = geometry.properties || {};
3390
2726
  geometry.properties.editProperties = geometry.properties.editProperties || {};
3391
2727
  geometry.properties.editProperties.shape = "Ellipse";
@@ -3435,15 +2771,15 @@ var ThreeClickPolygonMode = class extends GeoJsonEditMode {
3435
2771
  }
3436
2772
  });
3437
2773
  } else {
3438
- const polygon3 = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], hoveredCoord, modeConfig);
3439
- if (polygon3) {
2774
+ const polygon2 = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], hoveredCoord, modeConfig);
2775
+ if (polygon2) {
3440
2776
  guides.features.push({
3441
2777
  type: "Feature",
3442
2778
  properties: {
3443
- ...polygon3.properties,
2779
+ ...polygon2.properties,
3444
2780
  guideType: "tentative"
3445
2781
  },
3446
- geometry: polygon3.geometry
2782
+ geometry: polygon2.geometry
3447
2783
  });
3448
2784
  }
3449
2785
  }
@@ -3497,15 +2833,15 @@ var DrawRectangleUsingThreePointsMode = class extends ThreeClickPolygonMode {
3497
2833
  };
3498
2834
 
3499
2835
  // dist/edit-modes/draw-ellipse-using-three-points-mode.js
3500
- var import_distance12 = __toESM(require("@turf/distance"), 1);
2836
+ var import_distance11 = __toESM(require("@turf/distance"), 1);
3501
2837
  var import_ellipse2 = __toESM(require("@turf/ellipse"), 1);
3502
2838
  var import_bearing8 = __toESM(require("@turf/bearing"), 1);
3503
2839
  var import_helpers13 = require("@turf/helpers");
3504
2840
  var DrawEllipseUsingThreePointsMode = class extends ThreeClickPolygonMode {
3505
2841
  getThreeClickPolygon(coord1, coord2, coord3, modeConfig) {
3506
2842
  const centerCoordinates = getIntermediatePosition(coord1, coord2);
3507
- const xSemiAxis = Math.max((0, import_distance12.default)(centerCoordinates, (0, import_helpers13.point)(coord3)), 1e-3);
3508
- const ySemiAxis = Math.max((0, import_distance12.default)(coord1, coord2), 1e-3) / 2;
2843
+ const xSemiAxis = Math.max((0, import_distance11.default)(centerCoordinates, (0, import_helpers13.point)(coord3)), 1e-3);
2844
+ const ySemiAxis = Math.max((0, import_distance11.default)(coord1, coord2), 1e-3) / 2;
3509
2845
  const options = { angle: (0, import_bearing8.default)(coord1, coord2) };
3510
2846
  const geometry = (0, import_ellipse2.default)(centerCoordinates, xSemiAxis, ySemiAxis, options);
3511
2847
  geometry.properties = geometry.properties || {};
@@ -3523,7 +2859,7 @@ var DrawEllipseUsingThreePointsMode = class extends ThreeClickPolygonMode {
3523
2859
  var import_destination4 = __toESM(require("@turf/destination"), 1);
3524
2860
  var import_bearing9 = __toESM(require("@turf/bearing"), 1);
3525
2861
  var import_line_intersect3 = __toESM(require("@turf/line-intersect"), 1);
3526
- var import_distance13 = __toESM(require("@turf/distance"), 1);
2862
+ var import_distance12 = __toESM(require("@turf/distance"), 1);
3527
2863
  var import_helpers14 = require("@turf/helpers");
3528
2864
  var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
3529
2865
  createTentativeFeature(props) {
@@ -3594,13 +2930,13 @@ var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
3594
2930
  const lineString3 = tentativeFeature.geometry;
3595
2931
  clickSequence[clickSequence.length - 1] = lineString3.coordinates[lineString3.coordinates.length - 1];
3596
2932
  } else if (clickSequence.length > 3 && tentativeFeature.geometry.type === "Polygon") {
3597
- const polygon3 = tentativeFeature.geometry;
3598
- clickSequence[clickSequence.length - 1] = polygon3.coordinates[0][polygon3.coordinates[0].length - 2];
2933
+ const polygon2 = tentativeFeature.geometry;
2934
+ clickSequence[clickSequence.length - 1] = polygon2.coordinates[0][polygon2.coordinates[0].length - 2];
3599
2935
  const clickedEditHandle = getPickedEditHandle(picks);
3600
- if (clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[1] === 0 || clickedEditHandle.properties.positionIndexes[1] === polygon3.coordinates[0].length - 3)) {
2936
+ if (clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[1] === 0 || clickedEditHandle.properties.positionIndexes[1] === polygon2.coordinates[0].length - 3)) {
3601
2937
  const polygonToAdd = {
3602
2938
  type: "Polygon",
3603
- coordinates: this.finalizedCoordinates([...polygon3.coordinates[0]])
2939
+ coordinates: this.finalizedCoordinates([...polygon2.coordinates[0]])
3604
2940
  };
3605
2941
  this.resetClickSequence();
3606
2942
  const editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);
@@ -3653,7 +2989,7 @@ var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
3653
2989
  const newAngle2 = angle2 + factor * 90;
3654
2990
  angles.second.push(newAngle2 > 180 ? newAngle2 - 360 : newAngle2);
3655
2991
  });
3656
- const distance7 = (0, import_distance13.default)((0, import_helpers14.point)(p1), (0, import_helpers14.point)(p3));
2992
+ const distance7 = (0, import_distance12.default)((0, import_helpers14.point)(p1), (0, import_helpers14.point)(p3));
3657
2993
  [0, 1, 2].forEach((indexFirst) => {
3658
2994
  const line1 = (0, import_helpers14.lineString)([
3659
2995
  p1,
@@ -3983,12 +3319,12 @@ var DeleteMode = class extends GeoJsonEditMode {
3983
3319
  };
3984
3320
 
3985
3321
  // dist/constants.js
3986
- var PROJECTED_PIXEL_SIZE_MULTIPLIER2 = 2 / 3;
3322
+ var PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;
3987
3323
 
3988
3324
  // dist/editable-layers/editable-layer.js
3989
- var import_core3 = require("@deck.gl/core");
3325
+ var import_core = require("@deck.gl/core");
3990
3326
  var EVENT_TYPES = ["click", "pointermove", "panstart", "panmove", "panend", "keyup", "dblclick"];
3991
- var EditableLayer = class extends import_core3.CompositeLayer {
3327
+ var EditableLayer = class extends import_core.CompositeLayer {
3992
3328
  state = void 0;
3993
3329
  // Overridable interaction event handlers
3994
3330
  onLayerClick(event) {
@@ -4181,7 +3517,7 @@ var EditableLayer = class extends import_core3.CompositeLayer {
4181
3517
  __publicField(EditableLayer, "layerName", "EditableLayer");
4182
3518
 
4183
3519
  // dist/editable-layers/editable-path-layer.js
4184
- var import_layers5 = require("@deck.gl/layers");
3520
+ var import_layers = require("@deck.gl/layers");
4185
3521
  var uniformBlock = `uniform pickingLineWidthUniforms {
4186
3522
  float extraPixels;
4187
3523
  } pickingLineWidth;
@@ -4195,10 +3531,10 @@ var pickingUniforms = {
4195
3531
  }
4196
3532
  };
4197
3533
  var defaultProps = {
4198
- ...import_layers5.PathLayer.defaultProps,
3534
+ ...import_layers.PathLayer.defaultProps,
4199
3535
  pickingLineWidthExtraPixels: { type: "number", min: 0, value: Number.MAX_SAFE_INTEGER }
4200
3536
  };
4201
- var EditablePathLayer = class extends import_layers5.PathLayer {
3537
+ var EditablePathLayer = class extends import_layers.PathLayer {
4202
3538
  getShaders() {
4203
3539
  const shaders = super.getShaders();
4204
3540
  shaders.vs = insertBefore(shaders.vs, "vec3 width;", `
@@ -4236,7 +3572,7 @@ var DEFAULT_EDITING_POINT_OUTLINE_COLOR = [255, 255, 255, 255];
4236
3572
  var DEFAULT_EDITING_EXISTING_POINT_RADIUS = 5;
4237
3573
  var DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS = 3;
4238
3574
  var DEFAULT_EDITING_SNAP_POINT_RADIUS = 7;
4239
- var DEFAULT_TOOLTIP_FONT_SIZE = 32 * PROJECTED_PIXEL_SIZE_MULTIPLIER2;
3575
+ var DEFAULT_TOOLTIP_FONT_SIZE = 32 * PROJECTED_PIXEL_SIZE_MULTIPLIER;
4240
3576
  var DEFAULT_EDIT_MODE = DrawPolygonMode;
4241
3577
  function guideAccessor(accessor) {
4242
3578
  if (!accessor || typeof accessor !== "function") {
@@ -4288,7 +3624,7 @@ var defaultProps2 = {
4288
3624
  fp64: false,
4289
3625
  filled: true,
4290
3626
  stroked: true,
4291
- lineWidthScale: PROJECTED_PIXEL_SIZE_MULTIPLIER2,
3627
+ lineWidthScale: PROJECTED_PIXEL_SIZE_MULTIPLIER,
4292
3628
  lineWidthMinPixels: 1,
4293
3629
  lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,
4294
3630
  pickingLineWidthExtraPixels: 0,
@@ -4403,13 +3739,13 @@ var EditableGeoJsonLayer = class extends EditableLayer {
4403
3739
  }
4404
3740
  },
4405
3741
  updateTriggers: {
4406
- getLineColor: [this.props.selectedFeatureIndexes, this.props.mode],
4407
- getFillColor: [this.props.selectedFeatureIndexes, this.props.mode],
4408
- getPointRadius: [this.props.selectedFeatureIndexes, this.props.mode],
4409
- getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode]
3742
+ getLineColor: [this.props.updateTriggers.getLineColor, this.props.selectedFeatureIndexes, this.props.mode],
3743
+ getFillColor: [this.props.updateTriggers.getFillColor, this.props.selectedFeatureIndexes, this.props.mode],
3744
+ getPointRadius: [this.props.updateTriggers.getPointRadius, this.props.selectedFeatureIndexes, this.props.mode],
3745
+ getLineWidth: [this.props.updateTriggers.getLineWidth, this.props.selectedFeatureIndexes, this.props.mode]
4410
3746
  }
4411
3747
  });
4412
- let layers = [new import_layers6.GeoJsonLayer(subLayerProps)];
3748
+ let layers = [new import_layers2.GeoJsonLayer(subLayerProps)];
4413
3749
  layers = layers.concat(this.createGuidesLayers(), this.createTooltipsLayers());
4414
3750
  return layers;
4415
3751
  }
@@ -4523,7 +3859,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
4523
3859
  };
4524
3860
  if (this.props.editHandleType === "icon") {
4525
3861
  subLayerProps["points-icon"] = {
4526
- type: import_layers6.IconLayer,
3862
+ type: import_layers2.IconLayer,
4527
3863
  iconAtlas: this.props.editHandleIconAtlas,
4528
3864
  iconMapping: this.props.editHandleIconMapping,
4529
3865
  sizeUnits: this.props.editHandleIconSizeUnits,
@@ -4536,7 +3872,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
4536
3872
  };
4537
3873
  } else {
4538
3874
  subLayerProps["points-circle"] = {
4539
- type: import_layers6.ScatterplotLayer,
3875
+ type: import_layers2.ScatterplotLayer,
4540
3876
  radiusScale: this.props.editHandlePointRadiusScale,
4541
3877
  stroked: this.props.editHandlePointOutline,
4542
3878
  getLineWidth: this.props.editHandlePointStrokeWidth,
@@ -4549,7 +3885,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
4549
3885
  billboard: this.props.billboard
4550
3886
  };
4551
3887
  }
4552
- const layer = new import_layers6.GeoJsonLayer(this.getSubLayerProps({
3888
+ const layer = new import_layers2.GeoJsonLayer(this.getSubLayerProps({
4553
3889
  id: "guides",
4554
3890
  data: guides,
4555
3891
  fp64: this.props.fp64,
@@ -4572,7 +3908,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
4572
3908
  createTooltipsLayers() {
4573
3909
  const mode = this.getActiveMode();
4574
3910
  const tooltips = mode.getTooltips(this.getModeProps(this.props));
4575
- const layer = new import_layers6.TextLayer({
3911
+ const layer = new import_layers2.TextLayer({
4576
3912
  getSize: DEFAULT_TOOLTIP_FONT_SIZE,
4577
3913
  ...this.getSubLayerProps({
4578
3914
  id: "tooltips",
@@ -4638,7 +3974,7 @@ var defaultProps3 = {
4638
3974
  selectedIndexes: [],
4639
3975
  filled: false,
4640
3976
  stroked: true,
4641
- lineWidthScale: PROJECTED_PIXEL_SIZE_MULTIPLIER2,
3977
+ lineWidthScale: PROJECTED_PIXEL_SIZE_MULTIPLIER,
4642
3978
  lineWidthMinPixels: 1,
4643
3979
  lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,
4644
3980
  lineWidthUnits: "pixels",
@@ -4772,25 +4108,25 @@ __publicField(EditableH3ClusterLayer, "layerName", "EditableH3ClusterLayer");
4772
4108
  __publicField(EditableH3ClusterLayer, "defaultProps", defaultProps3);
4773
4109
 
4774
4110
  // dist/editable-layers/selection-layer.js
4775
- var import_core4 = require("@deck.gl/core");
4776
- var import_layers7 = require("@deck.gl/layers");
4111
+ var import_core2 = require("@deck.gl/core");
4112
+ var import_layers3 = require("@deck.gl/layers");
4777
4113
  var import_helpers16 = require("@turf/helpers");
4778
- var import_buffer3 = __toESM(require("@turf/buffer"), 1);
4779
- var import_difference4 = __toESM(require("@turf/difference"), 1);
4780
- var SELECTION_TYPE2 = {
4114
+ var import_buffer2 = __toESM(require("@turf/buffer"), 1);
4115
+ var import_difference3 = __toESM(require("@turf/difference"), 1);
4116
+ var SELECTION_TYPE = {
4781
4117
  NONE: null,
4782
4118
  RECTANGLE: "rectangle",
4783
4119
  POLYGON: "polygon"
4784
4120
  };
4785
4121
  var MODE_MAP = {
4786
- [SELECTION_TYPE2.RECTANGLE]: DrawRectangleMode,
4787
- [SELECTION_TYPE2.POLYGON]: DrawPolygonMode
4122
+ [SELECTION_TYPE.RECTANGLE]: DrawRectangleMode,
4123
+ [SELECTION_TYPE.POLYGON]: DrawPolygonMode
4788
4124
  };
4789
4125
  var MODE_CONFIG_MAP = {
4790
- [SELECTION_TYPE2.RECTANGLE]: { dragToDraw: true }
4126
+ [SELECTION_TYPE.RECTANGLE]: { dragToDraw: true }
4791
4127
  };
4792
4128
  var defaultProps4 = {
4793
- selectionType: SELECTION_TYPE2.RECTANGLE,
4129
+ selectionType: SELECTION_TYPE.RECTANGLE,
4794
4130
  layerIds: [],
4795
4131
  onSelect: () => {
4796
4132
  }
@@ -4799,7 +4135,7 @@ var EMPTY_DATA = {
4799
4135
  type: "FeatureCollection",
4800
4136
  features: []
4801
4137
  };
4802
- var EXPANSION_KM2 = 50;
4138
+ var EXPANSION_KM = 50;
4803
4139
  var LAYER_ID_GEOJSON = "selection-geojson";
4804
4140
  var LAYER_ID_BLOCKER = "selection-blocker";
4805
4141
  var PASS_THROUGH_PROPS = [
@@ -4824,7 +4160,7 @@ var PASS_THROUGH_PROPS = [
4824
4160
  "getTentativeFillColor",
4825
4161
  "getTentativeLineWidth"
4826
4162
  ];
4827
- var SelectionLayer = class extends import_core4.CompositeLayer {
4163
+ var SelectionLayer = class extends import_core2.CompositeLayer {
4828
4164
  state = void 0;
4829
4165
  _selectRectangleObjects(coordinates) {
4830
4166
  const { layerIds, onSelect } = this.props;
@@ -4849,10 +4185,10 @@ var SelectionLayer = class extends import_core4.CompositeLayer {
4849
4185
  const maxX = Math.max(...allX);
4850
4186
  const maxY = Math.max(...allY);
4851
4187
  const landPointsPoly = (0, import_helpers16.polygon)(coordinates);
4852
- const bigBuffer = (0, import_buffer3.default)(landPointsPoly, EXPANSION_KM2);
4188
+ const bigBuffer = (0, import_buffer2.default)(landPointsPoly, EXPANSION_KM);
4853
4189
  let bigPolygon;
4854
4190
  try {
4855
- bigPolygon = (0, import_difference4.default)(bigBuffer, landPointsPoly);
4191
+ bigPolygon = (0, import_difference3.default)((0, import_helpers16.featureCollection)([bigBuffer, landPointsPoly]));
4856
4192
  } catch (e) {
4857
4193
  console.log("turfDifference() error", e);
4858
4194
  return;
@@ -4896,9 +4232,9 @@ var SelectionLayer = class extends import_core4.CompositeLayer {
4896
4232
  onEdit: ({ updatedData, editType }) => {
4897
4233
  if (editType === "addFeature") {
4898
4234
  const { coordinates } = updatedData.features[0].geometry;
4899
- if (this.props.selectionType === SELECTION_TYPE2.RECTANGLE) {
4235
+ if (this.props.selectionType === SELECTION_TYPE.RECTANGLE) {
4900
4236
  this._selectRectangleObjects(coordinates);
4901
- } else if (this.props.selectionType === SELECTION_TYPE2.POLYGON) {
4237
+ } else if (this.props.selectionType === SELECTION_TYPE.POLYGON) {
4902
4238
  this._selectPolygonObjects(coordinates);
4903
4239
  }
4904
4240
  }
@@ -4908,7 +4244,7 @@ var SelectionLayer = class extends import_core4.CompositeLayer {
4908
4244
  ];
4909
4245
  if (pendingPolygonSelection) {
4910
4246
  const { bigPolygon } = pendingPolygonSelection;
4911
- layers.push(new import_layers7.PolygonLayer(this.getSubLayerProps({
4247
+ layers.push(new import_layers3.PolygonLayer(this.getSubLayerProps({
4912
4248
  id: LAYER_ID_BLOCKER,
4913
4249
  pickable: true,
4914
4250
  stroked: false,
@@ -4929,16 +4265,16 @@ __publicField(SelectionLayer, "layerName", "SelectionLayer");
4929
4265
  __publicField(SelectionLayer, "defaultProps", defaultProps4);
4930
4266
 
4931
4267
  // dist/editable-layers/elevated-edit-handle-layer.js
4932
- var import_core5 = require("@deck.gl/core");
4933
- var import_layers8 = require("@deck.gl/layers");
4268
+ var import_core3 = require("@deck.gl/core");
4269
+ var import_layers4 = require("@deck.gl/layers");
4934
4270
  var defaultProps5 = {};
4935
- var ElevatedEditHandleLayer = class extends import_core5.CompositeLayer {
4271
+ var ElevatedEditHandleLayer = class extends import_core3.CompositeLayer {
4936
4272
  renderLayers() {
4937
- const handles = new import_layers8.ScatterplotLayer(Object.assign({}, this.props, {
4273
+ const handles = new import_layers4.ScatterplotLayer(Object.assign({}, this.props, {
4938
4274
  id: `${this.props.id}-ScatterplotLayer`,
4939
4275
  data: this.props.data
4940
4276
  }));
4941
- const lines = new import_layers8.LineLayer(Object.assign({}, this.props, {
4277
+ const lines = new import_layers4.LineLayer(Object.assign({}, this.props, {
4942
4278
  id: `${this.props.id}-LineLayer`,
4943
4279
  data: this.props.data,
4944
4280
  pickable: false,
@@ -4956,7 +4292,7 @@ __publicField(ElevatedEditHandleLayer, "defaultProps", defaultProps5);
4956
4292
  // dist/widgets/edit-mode-tray-widget.js
4957
4293
  var import_jsx_runtime = require("preact/jsx-runtime");
4958
4294
  var import_preact = require("preact");
4959
- var import_core6 = require("@deck.gl/core");
4295
+ var import_core4 = require("@deck.gl/core");
4960
4296
  var ROOT_STYLE = {
4961
4297
  position: "absolute",
4962
4298
  display: "flex",
@@ -5000,7 +4336,7 @@ var BUTTON_LABEL_STYLE = {
5000
4336
  marginTop: "2px",
5001
4337
  lineHeight: "12px"
5002
4338
  };
5003
- var _EditModeTrayWidget = class extends import_core6.Widget {
4339
+ var _EditModeTrayWidget = class extends import_core4.Widget {
5004
4340
  placement = "top-left";
5005
4341
  className = "deck-widget-edit-mode-tray";
5006
4342
  layout = "vertical";
@@ -5171,11 +4507,54 @@ __publicField(EditModeTrayWidget, "defaultProps", {
5171
4507
  className: ""
5172
4508
  });
5173
4509
 
4510
+ // dist/editable-layers/junction-scatterplot-layer.js
4511
+ var import_core5 = require("@deck.gl/core");
4512
+ var import_layers5 = require("@deck.gl/layers");
4513
+ var JunctionScatterplotLayer = class extends import_core5.CompositeLayer {
4514
+ renderLayers() {
4515
+ const { id, getFillColor, getStrokeColor, getInnerRadius, updateTriggers } = this.props;
4516
+ return [
4517
+ // the full circles
4518
+ new import_layers5.ScatterplotLayer({
4519
+ ...this.props,
4520
+ id: `${id}-full`,
4521
+ data: this.props.data,
4522
+ getLineColor: getStrokeColor,
4523
+ updateTriggers: {
4524
+ ...updateTriggers,
4525
+ getStrokeColor: updateTriggers.getStrokeColor
4526
+ }
4527
+ }),
4528
+ // the inner part
4529
+ new import_layers5.ScatterplotLayer({
4530
+ ...this.props,
4531
+ id: `${id}-inner`,
4532
+ data: this.props.data,
4533
+ getFillColor,
4534
+ getRadius: getInnerRadius,
4535
+ pickable: false,
4536
+ updateTriggers: {
4537
+ ...updateTriggers,
4538
+ getFillColor: updateTriggers.getFillColor,
4539
+ getRadius: updateTriggers.getInnerRadius
4540
+ }
4541
+ })
4542
+ ];
4543
+ }
4544
+ };
4545
+ __publicField(JunctionScatterplotLayer, "layerName", "JunctionScatterplotLayer");
4546
+ __publicField(JunctionScatterplotLayer, "defaultProps", {
4547
+ ...import_layers5.ScatterplotLayer.defaultProps,
4548
+ getFillColor: (d) => [0, 0, 0, 255],
4549
+ getStrokeColor: (d) => [255, 255, 255, 255],
4550
+ getInnerRadius: (d) => 1
4551
+ });
4552
+
5174
4553
  // dist/edit-modes/resize-circle-mode.js
5175
4554
  var import_nearest_point_on_line2 = __toESM(require("@turf/nearest-point-on-line"), 1);
5176
4555
  var import_helpers17 = require("@turf/helpers");
5177
4556
  var import_circle3 = __toESM(require("@turf/circle"), 1);
5178
- var import_distance14 = __toESM(require("@turf/distance"), 1);
4557
+ var import_distance13 = __toESM(require("@turf/distance"), 1);
5179
4558
  var import_center2 = __toESM(require("@turf/center"), 1);
5180
4559
  var ResizeCircleMode = class extends GeoJsonEditMode {
5181
4560
  _selectedEditHandle;
@@ -5195,12 +4574,7 @@ var ResizeCircleMode = class extends GeoJsonEditMode {
5195
4574
  const referencePoint = (0, import_helpers17.point)(mapCoords2);
5196
4575
  recursivelyTraverseNestedArrays2(featureAsPick.object.geometry.coordinates, [], (lineString3, prefix) => {
5197
4576
  const lineStringFeature = (0, import_helpers17.lineString)(lineString3);
5198
- const candidateIntermediatePoint = this.getNearestPoint(
5199
- // @ts-expect-error turf types too wide
5200
- lineStringFeature,
5201
- referencePoint,
5202
- props.modeConfig && props.modeConfig.viewport
5203
- );
4577
+ const candidateIntermediatePoint = this.getNearestPoint(lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport);
5204
4578
  if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) {
5205
4579
  intermediatePoint = candidateIntermediatePoint;
5206
4580
  positionIndexPrefix = prefix;
@@ -5248,7 +4622,7 @@ var ResizeCircleMode = class extends GeoJsonEditMode {
5248
4622
  const feature = this.getSelectedFeature(props);
5249
4623
  const center = (0, import_center2.default)(feature).geometry.coordinates;
5250
4624
  const numberOfSteps = Object.entries(feature.geometry.coordinates[0]).length - 1;
5251
- const radius = Math.max((0, import_distance14.default)(center, event.mapCoords), 1e-3);
4625
+ const radius = Math.max((0, import_distance13.default)(center, event.mapCoords), 1e-3);
5252
4626
  const { steps = numberOfSteps } = {};
5253
4627
  const options = { steps };
5254
4628
  const updatedFeature = (0, import_circle3.default)(center, radius, options);
@@ -5364,7 +4738,7 @@ var ExtendLineStringMode = class extends GeoJsonEditMode {
5364
4738
  };
5365
4739
 
5366
4740
  // dist/edit-modes/measure-distance-mode.js
5367
- var import_distance15 = __toESM(require("@turf/distance"), 1);
4741
+ var import_distance14 = __toESM(require("@turf/distance"), 1);
5368
4742
  var import_midpoint = __toESM(require("@turf/midpoint"), 1);
5369
4743
  var MeasureDistanceMode = class extends GeoJsonEditMode {
5370
4744
  _isMeasuringSessionFinished = false;
@@ -5372,7 +4746,7 @@ var MeasureDistanceMode = class extends GeoJsonEditMode {
5372
4746
  _currentDistance = 0;
5373
4747
  _calculateDistanceForTooltip = ({ positionA, positionB, modeConfig }) => {
5374
4748
  const { turfOptions, measurementCallback } = modeConfig || {};
5375
- const distance7 = (0, import_distance15.default)(positionA, positionB, turfOptions);
4749
+ const distance7 = (0, import_distance14.default)(positionA, positionB, turfOptions);
5376
4750
  if (measurementCallback) {
5377
4751
  measurementCallback(distance7);
5378
4752
  }