@deck.gl-community/editable-layers 9.2.0-beta.6 → 9.2.5

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 (316) 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 +5 -5
  30. package/dist/edit-modes/draw-polygon-mode.d.ts.map +1 -1
  31. package/dist/edit-modes/draw-polygon-mode.js +48 -52
  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 +25 -23
  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 +14 -18
  96. package/dist/edit-modes/three-click-polygon-mode.js.map +1 -1
  97. package/dist/edit-modes/translate-mode.d.ts +6 -6
  98. package/dist/edit-modes/translate-mode.d.ts.map +1 -1
  99. package/dist/edit-modes/translate-mode.js +1 -2
  100. package/dist/edit-modes/translate-mode.js.map +1 -1
  101. package/dist/edit-modes/two-click-polygon-mode.d.ts +6 -6
  102. package/dist/edit-modes/two-click-polygon-mode.d.ts.map +1 -1
  103. package/dist/edit-modes/two-click-polygon-mode.js.map +1 -1
  104. package/dist/edit-modes/types.d.ts +3 -3
  105. package/dist/edit-modes/types.d.ts.map +1 -1
  106. package/dist/edit-modes/utils.d.ts +7 -7
  107. package/dist/edit-modes/utils.d.ts.map +1 -1
  108. package/dist/edit-modes/utils.js +1 -4
  109. package/dist/edit-modes/utils.js.map +1 -1
  110. package/dist/editable-layers/editable-geojson-layer.d.ts +5 -13
  111. package/dist/editable-layers/editable-geojson-layer.d.ts.map +1 -1
  112. package/dist/editable-layers/editable-geojson-layer.js +20 -4
  113. package/dist/editable-layers/editable-geojson-layer.js.map +1 -1
  114. package/dist/editable-layers/selection-layer.d.ts +1 -2
  115. package/dist/editable-layers/selection-layer.d.ts.map +1 -1
  116. package/dist/editable-layers/selection-layer.js +2 -2
  117. package/dist/editable-layers/selection-layer.js.map +1 -1
  118. package/dist/index.cjs +430 -989
  119. package/dist/index.cjs.map +4 -4
  120. package/dist/index.d.ts +5 -11
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js +2 -10
  123. package/dist/index.js.map +1 -1
  124. package/dist/mode-handlers/composite-mode-handler.d.ts +3 -3
  125. package/dist/mode-handlers/composite-mode-handler.d.ts.map +1 -1
  126. package/dist/mode-handlers/composite-mode-handler.js.map +1 -1
  127. package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts.map +1 -1
  128. package/dist/mode-handlers/draw-90degree-polygon-handler.js +4 -2
  129. package/dist/mode-handlers/draw-90degree-polygon-handler.js.map +1 -1
  130. package/dist/mode-handlers/draw-circle-by-bounding-box-handler.d.ts.map +1 -1
  131. package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js +0 -1
  132. package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js.map +1 -1
  133. package/dist/mode-handlers/draw-circle-from-center-handler.d.ts.map +1 -1
  134. package/dist/mode-handlers/draw-circle-from-center-handler.js +0 -1
  135. package/dist/mode-handlers/draw-circle-from-center-handler.js.map +1 -1
  136. package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts.map +1 -1
  137. package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js +1 -2
  138. package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js.map +1 -1
  139. package/dist/mode-handlers/draw-ellipse-using-three-points-handler.d.ts.map +1 -1
  140. package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js +2 -2
  141. package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js.map +1 -1
  142. package/dist/mode-handlers/draw-point-handler.js.map +1 -1
  143. package/dist/mode-handlers/draw-polygon-handler.d.ts.map +1 -1
  144. package/dist/mode-handlers/draw-polygon-handler.js +4 -2
  145. package/dist/mode-handlers/draw-polygon-handler.js.map +1 -1
  146. package/dist/mode-handlers/draw-rectangle-handler.d.ts.map +1 -1
  147. package/dist/mode-handlers/draw-rectangle-handler.js +0 -1
  148. package/dist/mode-handlers/draw-rectangle-handler.js.map +1 -1
  149. package/dist/mode-handlers/draw-rectangle-using-three-points-handler.d.ts.map +1 -1
  150. package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js +4 -2
  151. package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js.map +1 -1
  152. package/dist/mode-handlers/mode-handler.d.ts +12 -12
  153. package/dist/mode-handlers/mode-handler.d.ts.map +1 -1
  154. package/dist/mode-handlers/mode-handler.js +6 -7
  155. package/dist/mode-handlers/mode-handler.js.map +1 -1
  156. package/dist/mode-handlers/modify-handler.d.ts +2 -2
  157. package/dist/mode-handlers/modify-handler.d.ts.map +1 -1
  158. package/dist/mode-handlers/modify-handler.js +1 -4
  159. package/dist/mode-handlers/modify-handler.js.map +1 -1
  160. package/dist/mode-handlers/rotate-handler.d.ts +2 -2
  161. package/dist/mode-handlers/rotate-handler.d.ts.map +1 -1
  162. package/dist/mode-handlers/rotate-handler.js +2 -7
  163. package/dist/mode-handlers/rotate-handler.js.map +1 -1
  164. package/dist/mode-handlers/scale-handler.d.ts +2 -2
  165. package/dist/mode-handlers/scale-handler.d.ts.map +1 -1
  166. package/dist/mode-handlers/scale-handler.js +2 -7
  167. package/dist/mode-handlers/scale-handler.js.map +1 -1
  168. package/dist/mode-handlers/snappable-handler.d.ts +3 -3
  169. package/dist/mode-handlers/snappable-handler.d.ts.map +1 -1
  170. package/dist/mode-handlers/snappable-handler.js.map +1 -1
  171. package/dist/mode-handlers/split-polygon-handler.d.ts.map +1 -1
  172. package/dist/mode-handlers/split-polygon-handler.js +4 -5
  173. package/dist/mode-handlers/split-polygon-handler.js.map +1 -1
  174. package/dist/mode-handlers/translate-handler.d.ts +2 -2
  175. package/dist/mode-handlers/translate-handler.d.ts.map +1 -1
  176. package/dist/mode-handlers/translate-handler.js +1 -4
  177. package/dist/mode-handlers/translate-handler.js.map +1 -1
  178. package/dist/utils/geojson-types.d.ts +13 -34
  179. package/dist/utils/geojson-types.d.ts.map +1 -1
  180. package/dist/utils/translate-from-center.d.ts +2 -4
  181. package/dist/utils/translate-from-center.d.ts.map +1 -1
  182. package/dist/utils/translate-from-center.js.map +1 -1
  183. package/dist/utils/utils.d.ts +3 -3
  184. package/dist/utils/utils.d.ts.map +1 -1
  185. package/dist/utils/utils.js +1 -1
  186. package/dist/utils/utils.js.map +1 -1
  187. package/dist/widgets/edit-mode-tray-widget.d.ts +1 -0
  188. package/dist/widgets/edit-mode-tray-widget.d.ts.map +1 -1
  189. package/dist/widgets/edit-mode-tray-widget.js +1 -0
  190. package/dist/widgets/edit-mode-tray-widget.js.map +1 -1
  191. package/dist/widgets/editor-toolbar-widget.d.ts +40 -0
  192. package/dist/widgets/editor-toolbar-widget.d.ts.map +1 -0
  193. package/dist/widgets/editor-toolbar-widget.js +170 -0
  194. package/dist/widgets/editor-toolbar-widget.js.map +1 -0
  195. package/package.json +47 -44
  196. package/src/edit-modes/draw-90degree-polygon-mode.ts +8 -2
  197. package/src/edit-modes/draw-circle-by-diameter-mode.ts +3 -3
  198. package/src/edit-modes/draw-circle-from-center-mode.ts +3 -3
  199. package/src/edit-modes/draw-ellipse-by-bounding-box-mode.ts +4 -4
  200. package/src/edit-modes/draw-ellipse-using-three-points-mode.ts +3 -4
  201. package/src/edit-modes/draw-line-string-mode.ts +10 -5
  202. package/src/edit-modes/draw-point-mode.ts +2 -2
  203. package/src/edit-modes/draw-polygon-by-dragging-mode.ts +8 -8
  204. package/src/edit-modes/draw-polygon-mode.ts +103 -124
  205. package/src/edit-modes/draw-rectangle-from-center-mode.ts +2 -3
  206. package/src/edit-modes/draw-rectangle-mode.ts +2 -3
  207. package/src/edit-modes/draw-rectangle-using-three-points-mode.ts +2 -2
  208. package/src/edit-modes/draw-square-from-center-mode.ts +2 -3
  209. package/src/edit-modes/draw-square-mode.ts +2 -3
  210. package/src/edit-modes/duplicate-mode.ts +2 -2
  211. package/src/edit-modes/extend-line-string-mode.ts +11 -4
  212. package/src/edit-modes/extrude-mode.ts +7 -7
  213. package/src/edit-modes/geojson-edit-mode.ts +28 -19
  214. package/src/edit-modes/immutable-feature-collection.ts +10 -11
  215. package/src/edit-modes/measure-area-mode.ts +3 -3
  216. package/src/edit-modes/modify-mode.ts +42 -30
  217. package/src/edit-modes/resize-circle-mode.ts +10 -7
  218. package/src/edit-modes/rotate-mode.ts +11 -22
  219. package/src/edit-modes/scale-mode.ts +14 -19
  220. package/src/edit-modes/snappable-mode.ts +10 -5
  221. package/src/edit-modes/split-polygon-mode.ts +17 -15
  222. package/src/edit-modes/three-click-polygon-mode.ts +30 -33
  223. package/src/edit-modes/translate-mode.ts +15 -12
  224. package/src/edit-modes/two-click-polygon-mode.ts +13 -7
  225. package/src/edit-modes/types.ts +4 -4
  226. package/src/edit-modes/utils.ts +13 -17
  227. package/src/editable-layers/editable-geojson-layer.ts +35 -18
  228. package/src/editable-layers/selection-layer.ts +3 -3
  229. package/src/index.ts +11 -28
  230. package/src/mode-handlers/composite-mode-handler.ts +3 -3
  231. package/src/mode-handlers/draw-90degree-polygon-handler.ts +4 -2
  232. package/src/mode-handlers/draw-circle-by-bounding-box-handler.ts +0 -1
  233. package/src/mode-handlers/draw-circle-from-center-handler.ts +0 -1
  234. package/src/mode-handlers/draw-ellipse-by-bounding-box-handler.ts +1 -2
  235. package/src/mode-handlers/draw-ellipse-using-three-points-handler.ts +3 -2
  236. package/src/mode-handlers/draw-point-handler.ts +2 -2
  237. package/src/mode-handlers/draw-polygon-handler.ts +4 -2
  238. package/src/mode-handlers/draw-rectangle-handler.ts +0 -1
  239. package/src/mode-handlers/draw-rectangle-using-three-points-handler.ts +4 -2
  240. package/src/mode-handlers/mode-handler.ts +34 -20
  241. package/src/mode-handlers/modify-handler.ts +2 -4
  242. package/src/mode-handlers/rotate-handler.ts +5 -12
  243. package/src/mode-handlers/scale-handler.ts +6 -14
  244. package/src/mode-handlers/snappable-handler.ts +3 -3
  245. package/src/mode-handlers/split-polygon-handler.ts +8 -7
  246. package/src/mode-handlers/translate-handler.ts +3 -5
  247. package/src/utils/geojson-types.ts +31 -54
  248. package/src/utils/translate-from-center.ts +13 -31
  249. package/src/utils/utils.ts +5 -5
  250. package/src/widgets/edit-mode-tray-widget.tsx +2 -6
  251. package/src/widgets/editor-toolbar-widget.tsx +348 -0
  252. package/dist/lib/constants.d.ts +0 -7
  253. package/dist/lib/constants.d.ts.map +0 -1
  254. package/dist/lib/constants.js +0 -10
  255. package/dist/lib/constants.js.map +0 -1
  256. package/dist/lib/deck-renderer/deck-cache.d.ts +0 -15
  257. package/dist/lib/deck-renderer/deck-cache.d.ts.map +0 -1
  258. package/dist/lib/deck-renderer/deck-cache.js +0 -52
  259. package/dist/lib/deck-renderer/deck-cache.js.map +0 -1
  260. package/dist/lib/deck-renderer/deck-drawer.d.ts +0 -63
  261. package/dist/lib/deck-renderer/deck-drawer.d.ts.map +0 -1
  262. package/dist/lib/deck-renderer/deck-drawer.js +0 -233
  263. package/dist/lib/deck-renderer/deck-drawer.js.map +0 -1
  264. package/dist/lib/feature.d.ts +0 -11
  265. package/dist/lib/feature.d.ts.map +0 -1
  266. package/dist/lib/feature.js +0 -20
  267. package/dist/lib/feature.js.map +0 -1
  268. package/dist/lib/layer-mouse-event.d.ts +0 -12
  269. package/dist/lib/layer-mouse-event.d.ts.map +0 -1
  270. package/dist/lib/layer-mouse-event.js +0 -28
  271. package/dist/lib/layer-mouse-event.js.map +0 -1
  272. package/dist/lib/layers/junctions-layer.d.ts +0 -9
  273. package/dist/lib/layers/junctions-layer.d.ts.map +0 -1
  274. package/dist/lib/layers/junctions-layer.js +0 -37
  275. package/dist/lib/layers/junctions-layer.js.map +0 -1
  276. package/dist/lib/layers/segments-layer.d.ts +0 -19
  277. package/dist/lib/layers/segments-layer.d.ts.map +0 -1
  278. package/dist/lib/layers/segments-layer.js +0 -98
  279. package/dist/lib/layers/segments-layer.js.map +0 -1
  280. package/dist/lib/layers/texts-layer.d.ts +0 -9
  281. package/dist/lib/layers/texts-layer.d.ts.map +0 -1
  282. package/dist/lib/layers/texts-layer.js +0 -36
  283. package/dist/lib/layers/texts-layer.js.map +0 -1
  284. package/dist/lib/math.d.ts +0 -12
  285. package/dist/lib/math.d.ts.map +0 -1
  286. package/dist/lib/math.js +0 -26
  287. package/dist/lib/math.js.map +0 -1
  288. package/dist/lib/nebula-core.d.ts +0 -35
  289. package/dist/lib/nebula-core.d.ts.map +0 -1
  290. package/dist/lib/nebula-core.js +0 -258
  291. package/dist/lib/nebula-core.js.map +0 -1
  292. package/dist/lib/nebula-layer.d.ts +0 -14
  293. package/dist/lib/nebula-layer.d.ts.map +0 -1
  294. package/dist/lib/nebula-layer.js +0 -30
  295. package/dist/lib/nebula-layer.js.map +0 -1
  296. package/dist/lib/style.d.ts +0 -20
  297. package/dist/lib/style.d.ts.map +0 -1
  298. package/dist/lib/style.js +0 -24
  299. package/dist/lib/style.js.map +0 -1
  300. package/dist/utils/curve-utils.d.ts +0 -3
  301. package/dist/utils/curve-utils.d.ts.map +0 -1
  302. package/dist/utils/curve-utils.js +0 -65
  303. package/dist/utils/curve-utils.js.map +0 -1
  304. package/src/lib/constants.ts +0 -10
  305. package/src/lib/deck-renderer/deck-cache.ts +0 -61
  306. package/src/lib/deck-renderer/deck-drawer.ts +0 -263
  307. package/src/lib/feature.ts +0 -31
  308. package/src/lib/layer-mouse-event.ts +0 -33
  309. package/src/lib/layers/junctions-layer.ts +0 -44
  310. package/src/lib/layers/segments-layer.ts +0 -112
  311. package/src/lib/layers/texts-layer.ts +0 -47
  312. package/src/lib/math.ts +0 -30
  313. package/src/lib/nebula-core.ts +0 -327
  314. package/src/lib/nebula-layer.ts +0 -37
  315. package/src/lib/style.ts +0 -26
  316. 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,
@@ -55,33 +54,24 @@ __export(dist_exports, {
55
54
  EditModeTrayWidget: () => EditModeTrayWidget,
56
55
  EditableGeoJsonLayer: () => EditableGeoJsonLayer,
57
56
  EditableH3ClusterLayer: () => EditableH3ClusterLayer,
57
+ EditorToolbarWidget: () => EditorToolbarWidget,
58
58
  ElevatedEditHandleLayer: () => ElevatedEditHandleLayer,
59
59
  ElevationMode: () => ElevationMode,
60
60
  ExtendLineStringMode: () => ExtendLineStringMode,
61
61
  ExtrudeMode: () => ExtrudeMode,
62
- Feature: () => Feature,
63
62
  GeoJsonEditMode: () => GeoJsonEditMode,
64
63
  ImmutableFeatureCollection: () => ImmutableFeatureCollection,
65
64
  JunctionScatterplotLayer: () => JunctionScatterplotLayer,
66
- JunctionsLayer: () => JunctionsLayer,
67
- LayerMouseEvent: () => LayerMouseEvent,
68
- MAX_ARROWS: () => MAX_ARROWS,
69
65
  MeasureAngleMode: () => MeasureAngleMode,
70
66
  MeasureAreaMode: () => MeasureAreaMode,
71
67
  MeasureDistanceMode: () => MeasureDistanceMode,
72
68
  ModifyMode: () => ModifyMode,
73
- NebulaCore: () => NebulaCore,
74
- NebulaLayer: () => NebulaLayer,
75
- PROJECTED_PIXEL_SIZE_MULTIPLIER: () => PROJECTED_PIXEL_SIZE_MULTIPLIER,
76
69
  ResizeCircleMode: () => ResizeCircleMode,
77
70
  RotateMode: () => RotateMode,
78
- SELECTION_TYPE: () => SELECTION_TYPE,
79
71
  ScaleMode: () => ScaleMode,
80
- SegmentsLayer: () => SegmentsLayer,
81
72
  SelectionLayer: () => SelectionLayer,
82
73
  SnappableMode: () => SnappableMode,
83
74
  SplitPolygonMode: () => SplitPolygonMode,
84
- TextsLayer: () => TextsLayer,
85
75
  TransformMode: () => TransformMode,
86
76
  TranslateMode: () => TranslateMode,
87
77
  ViewMode: () => ViewMode,
@@ -93,302 +83,6 @@ __export(dist_exports, {
93
83
  });
94
84
  module.exports = __toCommonJS(dist_exports);
95
85
 
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
86
  // dist/utils/utils.js
393
87
  var utils_exports = {};
394
88
  __export(utils_exports, {
@@ -403,8 +97,8 @@ __export(utils_exports, {
403
97
  var import_destination = __toESM(require("@turf/destination"), 1);
404
98
  var import_bearing = __toESM(require("@turf/bearing"), 1);
405
99
  var import_point_to_line_distance = __toESM(require("@turf/point-to-line-distance"), 1);
406
- var import_helpers2 = require("@turf/helpers");
407
- var import_viewport_mercator_project = require("viewport-mercator-project");
100
+ var import_helpers = require("@turf/helpers");
101
+ var import_web_mercator = require("@math.gl/web-mercator");
408
102
  function toDeckColor(color, defaultColor = [255, 0, 0, 255]) {
409
103
  if (!Array.isArray(color)) {
410
104
  return defaultColor;
@@ -428,7 +122,7 @@ function generatePointsParallelToLinePoints(p1, p2, mapCoords2) {
428
122
  type: "LineString",
429
123
  coordinates: [p1, p2]
430
124
  };
431
- const pt = (0, import_helpers2.point)(mapCoords2);
125
+ const pt = (0, import_helpers.point)(mapCoords2);
432
126
  const ddistance = (0, import_point_to_line_distance.default)(pt, lineString3);
433
127
  const lineBearing = (0, import_bearing.default)(p1, p2);
434
128
  const isPointToLeftOfLine = (mapCoords2[0] - p1[0]) * (p2[1] - p1[1]) - (mapCoords2[1] - p1[1]) * (p2[0] - p1[0]);
@@ -446,7 +140,7 @@ function mix(a, b, ratio) {
446
140
  return b * ratio + a * (1 - ratio);
447
141
  }
448
142
  function nearestPointOnProjectedLine(line, inPoint, viewport) {
449
- const wmViewport = new import_viewport_mercator_project.WebMercatorViewport(viewport);
143
+ const wmViewport = new import_web_mercator.WebMercatorViewport(viewport);
450
144
  const coordinates = line.geometry.coordinates;
451
145
  const projectedCoords = coordinates.map(([x3, y3, z = 0]) => wmViewport.project([x3, y3, z]));
452
146
  const [x, y] = wmViewport.project(inPoint.geometry.coordinates);
@@ -499,479 +193,13 @@ function insertBefore(base, insertBeforeText, toInsert) {
499
193
  return base.slice(0, at) + toInsert + base.slice(at);
500
194
  }
501
195
 
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
196
  // dist/editable-layers/editable-geojson-layer.js
970
- var import_layers6 = require("@deck.gl/layers");
197
+ var import_layers2 = require("@deck.gl/layers");
971
198
 
972
199
  // dist/edit-modes/geojson-edit-mode.js
200
+ var import_helpers3 = require("@turf/helpers");
973
201
  var import_union = __toESM(require("@turf/union"), 1);
974
- var import_difference2 = __toESM(require("@turf/difference"), 1);
202
+ var import_difference = __toESM(require("@turf/difference"), 1);
975
203
  var import_intersect = __toESM(require("@turf/intersect"), 1);
976
204
  var import_rewind = __toESM(require("@turf/rewind"), 1);
977
205
 
@@ -980,9 +208,9 @@ var import_destination2 = __toESM(require("@turf/destination"), 1);
980
208
  var import_bearing2 = __toESM(require("@turf/bearing"), 1);
981
209
  var import_point_to_line_distance2 = __toESM(require("@turf/point-to-line-distance"), 1);
982
210
  var import_meta = require("@turf/meta");
983
- var import_helpers3 = require("@turf/helpers");
211
+ var import_helpers2 = require("@turf/helpers");
984
212
  var import_invariant = require("@turf/invariant");
985
- var import_viewport_mercator_project2 = require("viewport-mercator-project");
213
+ var import_web_mercator2 = require("@math.gl/web-mercator");
986
214
  function recursivelyTraverseNestedArrays2(array, prefix, fn) {
987
215
  if (!Array.isArray(array[0])) {
988
216
  return true;
@@ -1000,7 +228,7 @@ function generatePointsParallelToLinePoints2(p1, p2, coords) {
1000
228
  type: "LineString",
1001
229
  coordinates: [p1, p2]
1002
230
  };
1003
- const pt = (0, import_helpers3.point)(coords);
231
+ const pt = (0, import_helpers2.point)(coords);
1004
232
  const ddistance = (0, import_point_to_line_distance2.default)(pt, lineString3);
1005
233
  const lineBearing = (0, import_bearing2.default)(p1, p2);
1006
234
  const isPointToLeftOfLine = (coords[0] - p1[0]) * (p2[1] - p1[1]) - (coords[1] - p1[1]) * (p2[0] - p1[0]);
@@ -1018,7 +246,7 @@ function mix2(a, b, ratio) {
1018
246
  return b * ratio + a * (1 - ratio);
1019
247
  }
1020
248
  function nearestPointOnProjectedLine2(line, inPoint, viewport) {
1021
- const wmViewport = new import_viewport_mercator_project2.WebMercatorViewport(viewport);
249
+ const wmViewport = new import_web_mercator2.WebMercatorViewport(viewport);
1022
250
  const coordinates = line.geometry.coordinates;
1023
251
  const projectedCoords = coordinates.map(([x3, y3, z = 0]) => wmViewport.project([x3, y3, z]));
1024
252
  const [x, y] = wmViewport.project(inPoint.geometry.coordinates);
@@ -1067,9 +295,9 @@ function nearestPointOnLine(lines, inPoint, viewport) {
1067
295
  var _a, _b;
1068
296
  let mercator;
1069
297
  if (viewport) {
1070
- mercator = new import_viewport_mercator_project2.WebMercatorViewport(viewport);
298
+ mercator = new import_web_mercator2.WebMercatorViewport(viewport);
1071
299
  }
1072
- let closestPoint = (0, import_helpers3.point)([Infinity, Infinity], {
300
+ let closestPoint = (0, import_helpers2.point)([Infinity, Infinity], {
1073
301
  dist: Infinity
1074
302
  });
1075
303
  if (!((_a = lines.geometry) == null ? void 0 : _a.coordinates.length) || ((_b = lines.geometry) == null ? void 0 : _b.coordinates.length) < 2) {
@@ -1143,7 +371,7 @@ function nearestPointOnLine(lines, inPoint, viewport) {
1143
371
  from
1144
372
  };
1145
373
  }
1146
- closestPoint = (0, import_helpers3.point)([snapPoint.x, snapPoint.y], {
374
+ closestPoint = (0, import_helpers2.point)([snapPoint.x, snapPoint.y], {
1147
375
  dist: Math.abs(snapPoint.from - snapPoint.to),
1148
376
  index: snapPoint.idx
1149
377
  });
@@ -1270,8 +498,8 @@ function shouldCancelPan(event) {
1270
498
  // dist/edit-modes/immutable-feature-collection.js
1271
499
  var ImmutableFeatureCollection = class {
1272
500
  featureCollection;
1273
- constructor(featureCollection4) {
1274
- this.featureCollection = featureCollection4;
501
+ constructor(featureCollection7) {
502
+ this.featureCollection = featureCollection7;
1275
503
  }
1276
504
  getObject() {
1277
505
  return this.featureCollection;
@@ -1506,9 +734,9 @@ function pruneGeometryIfNecessary(geometry) {
1506
734
  }
1507
735
  }
1508
736
  function prunePolygonIfNecessary(geometry) {
1509
- const polygon3 = geometry.coordinates;
1510
- for (let holeIndex = 1; holeIndex < polygon3.length; holeIndex++) {
1511
- if (removeHoleIfNecessary(polygon3, holeIndex)) {
737
+ const polygon2 = geometry.coordinates;
738
+ for (let holeIndex = 1; holeIndex < polygon2.length; holeIndex++) {
739
+ if (removeHoleIfNecessary(polygon2, holeIndex)) {
1512
740
  holeIndex--;
1513
741
  }
1514
742
  }
@@ -1524,23 +752,23 @@ function pruneMultiLineStringIfNecessary(geometry) {
1524
752
  }
1525
753
  function pruneMultiPolygonIfNecessary(geometry) {
1526
754
  for (let polygonIndex = 0; polygonIndex < geometry.coordinates.length; polygonIndex++) {
1527
- const polygon3 = geometry.coordinates[polygonIndex];
1528
- const outerRing = polygon3[0];
755
+ const polygon2 = geometry.coordinates[polygonIndex];
756
+ const outerRing = polygon2[0];
1529
757
  if (outerRing.length <= 3) {
1530
758
  geometry.coordinates.splice(polygonIndex, 1);
1531
759
  polygonIndex--;
1532
760
  }
1533
- for (let holeIndex = 1; holeIndex < polygon3.length; holeIndex++) {
1534
- if (removeHoleIfNecessary(polygon3, holeIndex)) {
761
+ for (let holeIndex = 1; holeIndex < polygon2.length; holeIndex++) {
762
+ if (removeHoleIfNecessary(polygon2, holeIndex)) {
1535
763
  holeIndex--;
1536
764
  }
1537
765
  }
1538
766
  }
1539
767
  }
1540
- function removeHoleIfNecessary(polygon3, holeIndex) {
1541
- const hole = polygon3[holeIndex];
768
+ function removeHoleIfNecessary(polygon2, holeIndex) {
769
+ const hole = polygon2[holeIndex];
1542
770
  if (hole.length <= 3) {
1543
- polygon3.splice(holeIndex, 1);
771
+ polygon2.splice(holeIndex, 1);
1544
772
  return true;
1545
773
  }
1546
774
  return false;
@@ -1667,11 +895,11 @@ var GeoJsonEditMode = class {
1667
895
  };
1668
896
  let updatedGeometry;
1669
897
  if (modeConfig.booleanOperation === "union") {
1670
- updatedGeometry = (0, import_union.default)(selectedFeature, feature);
898
+ updatedGeometry = (0, import_union.default)((0, import_helpers3.featureCollection)([selectedFeature, feature]));
1671
899
  } else if (modeConfig.booleanOperation === "difference") {
1672
- updatedGeometry = (0, import_difference2.default)(selectedFeature, feature);
900
+ updatedGeometry = (0, import_difference.default)((0, import_helpers3.featureCollection)([selectedFeature, feature]));
1673
901
  } else if (modeConfig.booleanOperation === "intersection") {
1674
- updatedGeometry = (0, import_intersect.default)(selectedFeature, feature);
902
+ updatedGeometry = (0, import_intersect.default)((0, import_helpers3.featureCollection)([selectedFeature, feature]));
1675
903
  } else {
1676
904
  console.warn(`Invalid booleanOperation ${modeConfig.booleanOperation}`);
1677
905
  return null;
@@ -1744,10 +972,10 @@ var ViewMode = class extends GeoJsonEditMode {
1744
972
 
1745
973
  // dist/edit-modes/translate-mode.js
1746
974
  var import_bearing3 = __toESM(require("@turf/bearing"), 1);
1747
- var import_distance2 = __toESM(require("@turf/distance"), 1);
975
+ var import_distance = __toESM(require("@turf/distance"), 1);
1748
976
  var import_clone = __toESM(require("@turf/clone"), 1);
1749
977
  var import_helpers4 = require("@turf/helpers");
1750
- var import_viewport_mercator_project3 = require("viewport-mercator-project");
978
+ var import_web_mercator3 = require("@math.gl/web-mercator");
1751
979
 
1752
980
  // dist/utils/translate-from-center.js
1753
981
  var import_center = __toESM(require("@turf/center"), 1);
@@ -1819,7 +1047,7 @@ var TranslateMode = class extends GeoJsonEditMode {
1819
1047
  const selectedIndexes = props.selectedIndexes;
1820
1048
  const { viewport: viewportDesc, screenSpace } = props.modeConfig || {};
1821
1049
  if (viewportDesc && screenSpace) {
1822
- const viewport = viewportDesc.project ? viewportDesc : new import_viewport_mercator_project3.WebMercatorViewport(viewportDesc);
1050
+ const viewport = viewportDesc.project ? viewportDesc : new import_web_mercator3.WebMercatorViewport(viewportDesc);
1823
1051
  const from = viewport.project(startDragPoint);
1824
1052
  const to = viewport.project(currentPoint);
1825
1053
  const dx = to[0] - from[0];
@@ -1847,7 +1075,7 @@ var TranslateMode = class extends GeoJsonEditMode {
1847
1075
  } else {
1848
1076
  const p1 = (0, import_helpers4.point)(startDragPoint);
1849
1077
  const p2 = (0, import_helpers4.point)(currentPoint);
1850
- const distanceMoved = (0, import_distance2.default)(p1, p2);
1078
+ const distanceMoved = (0, import_distance.default)(p1, p2);
1851
1079
  const direction = (0, import_bearing3.default)(p1, p2);
1852
1080
  const movedFeatures = this._geometryBeforeTranslate.features.map((feature) => translateFromCenter((0, import_clone.default)(feature), distanceMoved, direction));
1853
1081
  for (let i = 0; i < selectedIndexes.length; i++) {
@@ -1894,12 +1122,7 @@ var ModifyMode = class extends GeoJsonEditMode {
1894
1122
  const referencePoint = (0, import_helpers5.point)(mapCoords2);
1895
1123
  recursivelyTraverseNestedArrays2(featureAsPick.object.geometry.coordinates, [], (lineString3, prefix) => {
1896
1124
  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
- );
1125
+ const candidateIntermediatePoint = this.getNearestPoint(lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport);
1903
1126
  if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) {
1904
1127
  intermediatePoint = candidateIntermediatePoint;
1905
1128
  positionIndexPrefix = prefix;
@@ -1940,31 +1163,35 @@ var ModifyMode = class extends GeoJsonEditMode {
1940
1163
  return nearestPointOnLine(line, inPoint, viewport);
1941
1164
  }
1942
1165
  handleClick(event, props) {
1943
- var _a;
1166
+ var _a, _b;
1944
1167
  const pickedExistingHandle = getPickedExistingEditHandle(event.picks);
1945
1168
  const pickedIntermediateHandle = getPickedIntermediateEditHandle(event.picks);
1946
1169
  if (pickedExistingHandle) {
1947
1170
  const { featureIndex, positionIndexes } = pickedExistingHandle.properties;
1948
- let updatedData;
1949
- try {
1950
- updatedData = new ImmutableFeatureCollection(props.data).removePosition(featureIndex, positionIndexes).getObject();
1951
- } catch (ignored) {
1952
- }
1953
- if (updatedData) {
1954
- props.onEdit({
1955
- updatedData,
1956
- editType: "removePosition",
1957
- editContext: {
1958
- featureIndexes: [featureIndex],
1959
- positionIndexes,
1960
- position: pickedExistingHandle.geometry.coordinates
1961
- }
1962
- });
1171
+ const feature = props.data.features[featureIndex];
1172
+ const canRemovePosition = !(((_a = props.modeConfig) == null ? void 0 : _a.lockRectangles) && (feature == null ? void 0 : feature.properties.shape) === "Rectangle");
1173
+ if (canRemovePosition) {
1174
+ let updatedData;
1175
+ try {
1176
+ updatedData = new ImmutableFeatureCollection(props.data).removePosition(featureIndex, positionIndexes).getObject();
1177
+ } catch (ignored) {
1178
+ }
1179
+ if (updatedData) {
1180
+ props.onEdit({
1181
+ updatedData,
1182
+ editType: "removePosition",
1183
+ editContext: {
1184
+ featureIndexes: [featureIndex],
1185
+ positionIndexes,
1186
+ position: pickedExistingHandle.geometry.coordinates
1187
+ }
1188
+ });
1189
+ }
1963
1190
  }
1964
1191
  } else if (pickedIntermediateHandle) {
1965
1192
  const { featureIndex, positionIndexes } = pickedIntermediateHandle.properties;
1966
1193
  const feature = props.data.features[featureIndex];
1967
- const canAddPosition = !(((_a = props.modeConfig) == null ? void 0 : _a.lockRectangles) && (feature == null ? void 0 : feature.properties.shape) === "Rectangle");
1194
+ const canAddPosition = !(((_b = props.modeConfig) == null ? void 0 : _b.lockRectangles) && (feature == null ? void 0 : feature.properties.shape) === "Rectangle");
1968
1195
  if (canAddPosition) {
1969
1196
  const updatedData = new ImmutableFeatureCollection(props.data).addPosition(featureIndex, positionIndexes, pickedIntermediateHandle.geometry.coordinates).getObject();
1970
1197
  if (updatedData) {
@@ -2035,7 +1262,7 @@ var ModifyMode = class extends GeoJsonEditMode {
2035
1262
  }
2036
1263
  handleStopDragging(event, props) {
2037
1264
  const selectedFeatureIndexes = props.selectedIndexes;
2038
- const editHandle = getPickedEditHandle(event.picks);
1265
+ const editHandle = getPickedEditHandle(event.pointerDownPicks);
2039
1266
  if (selectedFeatureIndexes.length && editHandle) {
2040
1267
  this._dragEditHandle("finishMovePosition", props, editHandle, event);
2041
1268
  }
@@ -2051,14 +1278,14 @@ var ModifyMode = class extends GeoJsonEditMode {
2051
1278
  };
2052
1279
 
2053
1280
  // dist/edit-modes/scale-mode.js
2054
- var import_bbox2 = __toESM(require("@turf/bbox"), 1);
1281
+ var import_bbox = __toESM(require("@turf/bbox"), 1);
2055
1282
  var import_centroid = __toESM(require("@turf/centroid"), 1);
2056
1283
  var import_bearing4 = __toESM(require("@turf/bearing"), 1);
2057
- var import_bbox_polygon2 = __toESM(require("@turf/bbox-polygon"), 1);
1284
+ var import_bbox_polygon = __toESM(require("@turf/bbox-polygon"), 1);
2058
1285
  var import_helpers6 = require("@turf/helpers");
2059
1286
  var import_polygon_to_line = require("@turf/polygon-to-line");
2060
1287
  var import_meta2 = require("@turf/meta");
2061
- var import_distance3 = __toESM(require("@turf/distance"), 1);
1288
+ var import_distance2 = __toESM(require("@turf/distance"), 1);
2062
1289
  var import_transform_scale = __toESM(require("@turf/transform-scale"), 1);
2063
1290
  var import_invariant2 = require("@turf/invariant");
2064
1291
  var ScaleMode = class extends GeoJsonEditMode {
@@ -2107,12 +1334,7 @@ var ScaleMode = class extends GeoJsonEditMode {
2107
1334
  const oppositeHandle = this._getOppositeScaleHandle(this._selectedEditHandle);
2108
1335
  const origin = (0, import_invariant2.getCoord)(oppositeHandle);
2109
1336
  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
- );
1337
+ const scaledFeatures = (0, import_transform_scale.default)(this._geometryBeingScaled, scaleFactor, { origin });
2116
1338
  return {
2117
1339
  updatedData: this._getUpdatedData(props, scaledFeatures),
2118
1340
  editType,
@@ -2186,7 +1408,7 @@ var ScaleMode = class extends GeoJsonEditMode {
2186
1408
  if (this._isSinglePointGeometrySelected(selectedGeometry)) {
2187
1409
  return { type: "FeatureCollection", features: [] };
2188
1410
  }
2189
- const boundingBox = (0, import_bbox_polygon2.default)((0, import_bbox2.default)(selectedGeometry));
1411
+ const boundingBox = (0, import_bbox_polygon.default)((0, import_bbox.default)(selectedGeometry));
2190
1412
  boundingBox.properties.mode = "scale";
2191
1413
  const cornerGuidePoints = [];
2192
1414
  (0, import_meta2.coordEach)(boundingBox, (coord, coordIndex) => {
@@ -2204,17 +1426,17 @@ var ScaleMode = class extends GeoJsonEditMode {
2204
1426
  }
2205
1427
  };
2206
1428
  function getScaleFactor(centroid, startDragPoint, currentPoint) {
2207
- const startDistance = (0, import_distance3.default)(centroid, startDragPoint);
2208
- const endDistance = (0, import_distance3.default)(centroid, currentPoint);
1429
+ const startDistance = (0, import_distance2.default)(centroid, startDragPoint);
1430
+ const endDistance = (0, import_distance2.default)(centroid, currentPoint);
2209
1431
  return endDistance / startDistance;
2210
1432
  }
2211
1433
 
2212
1434
  // dist/edit-modes/rotate-mode.js
2213
- var import_bbox3 = __toESM(require("@turf/bbox"), 1);
1435
+ var import_bbox2 = __toESM(require("@turf/bbox"), 1);
2214
1436
  var import_centroid2 = __toESM(require("@turf/centroid"), 1);
2215
1437
  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);
1438
+ var import_bbox_polygon2 = __toESM(require("@turf/bbox-polygon"), 1);
1439
+ var import_distance3 = __toESM(require("@turf/distance"), 1);
2218
1440
  var import_meta3 = require("@turf/meta");
2219
1441
  var import_invariant3 = require("@turf/invariant");
2220
1442
  var import_helpers7 = require("@turf/helpers");
@@ -2241,7 +1463,7 @@ var RotateMode = class extends GeoJsonEditMode {
2241
1463
  if (this._isRotating) {
2242
1464
  return (0, import_helpers7.featureCollection)([(0, import_centroid2.default)(selectedGeometry)]);
2243
1465
  }
2244
- const boundingBox = (0, import_bbox_polygon3.default)((0, import_bbox3.default)(selectedGeometry));
1466
+ const boundingBox = (0, import_bbox_polygon2.default)((0, import_bbox2.default)(selectedGeometry));
2245
1467
  let previousCoord = null;
2246
1468
  let topEdgeMidpointCoords = null;
2247
1469
  let longestEdgeLength = 0;
@@ -2251,7 +1473,7 @@ var RotateMode = class extends GeoJsonEditMode {
2251
1473
  if (!topEdgeMidpointCoords || edgeMidpoint[1] > topEdgeMidpointCoords[1]) {
2252
1474
  topEdgeMidpointCoords = edgeMidpoint;
2253
1475
  }
2254
- const edgeDistance = (0, import_distance4.default)(coord, previousCoord);
1476
+ const edgeDistance = (0, import_distance3.default)(coord, previousCoord);
2255
1477
  longestEdgeLength = Math.max(longestEdgeLength, edgeDistance);
2256
1478
  }
2257
1479
  previousCoord = coord;
@@ -2315,15 +1537,10 @@ var RotateMode = class extends GeoJsonEditMode {
2315
1537
  return null;
2316
1538
  }
2317
1539
  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
- );
1540
+ const angle = getRotationAngle(centroid.geometry.coordinates, startDragPoint, currentPoint);
1541
+ const rotatedFeatures = (0, import_transform_rotate.default)(this._geometryBeingRotated, angle, {
1542
+ pivot: centroid
1543
+ });
2327
1544
  let updatedData = new ImmutableFeatureCollection(props.data);
2328
1545
  const selectedIndexes = props.selectedIndexes;
2329
1546
  for (let i = 0; i < selectedIndexes.length; i++) {
@@ -2365,12 +1582,12 @@ var DuplicateMode = class extends TranslateMode {
2365
1582
 
2366
1583
  // dist/edit-modes/split-polygon-mode.js
2367
1584
  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);
1585
+ var import_difference2 = __toESM(require("@turf/difference"), 1);
1586
+ var import_buffer = __toESM(require("@turf/buffer"), 1);
2370
1587
  var import_line_intersect = __toESM(require("@turf/line-intersect"), 1);
2371
1588
  var import_helpers8 = require("@turf/helpers");
2372
1589
  var import_bearing6 = __toESM(require("@turf/bearing"), 1);
2373
- var import_distance5 = __toESM(require("@turf/distance"), 1);
1590
+ var import_distance4 = __toESM(require("@turf/distance"), 1);
2374
1591
  var import_destination3 = __toESM(require("@turf/destination"), 1);
2375
1592
  var import_polygon_to_line3 = __toESM(require("@turf/polygon-to-line"), 1);
2376
1593
  var import_nearest_point_on_line = __toESM(require("@turf/nearest-point-on-line"), 1);
@@ -2389,7 +1606,7 @@ var SplitPolygonMode = class extends GeoJsonEditMode {
2389
1606
  let closestPoint = null;
2390
1607
  lines.forEach((line) => {
2391
1608
  const snapPoint = (0, import_nearest_point_on_line.default)(line, firstPoint);
2392
- const distanceFromOrigin = (0, import_distance5.default)(snapPoint, firstPoint);
1609
+ const distanceFromOrigin = (0, import_distance4.default)(snapPoint, firstPoint);
2393
1610
  if (minDistance > distanceFromOrigin) {
2394
1611
  minDistance = distanceFromOrigin;
2395
1612
  closestPoint = snapPoint;
@@ -2397,7 +1614,7 @@ var SplitPolygonMode = class extends GeoJsonEditMode {
2397
1614
  });
2398
1615
  if (closestPoint) {
2399
1616
  const lastBearing = (0, import_bearing6.default)(firstPoint, closestPoint);
2400
- const currentDistance = (0, import_distance5.default)(firstPoint, mapCoords2, { units: "meters" });
1617
+ const currentDistance = (0, import_distance4.default)(firstPoint, mapCoords2, { units: "meters" });
2401
1618
  return (0, import_destination3.default)(firstPoint, currentDistance, lastBearing, {
2402
1619
  units: "meters"
2403
1620
  }).geometry.coordinates;
@@ -2473,8 +1690,8 @@ var SplitPolygonMode = class extends GeoJsonEditMode {
2473
1690
  gap = 0.1;
2474
1691
  units = "centimeters";
2475
1692
  }
2476
- const buffer = (0, import_buffer2.default)(tentativeFeature, gap, { units });
2477
- const updatedGeometry = (0, import_difference3.default)(selectedGeometry, buffer);
1693
+ const buffer = (0, import_buffer.default)(tentativeFeature, gap, { units });
1694
+ const updatedGeometry = (0, import_difference2.default)((0, import_helpers8.featureCollection)([(0, import_helpers8.feature)(selectedGeometry), buffer]));
2478
1695
  if (!updatedGeometry) {
2479
1696
  console.warn("Canceling edit. Split Polygon erased");
2480
1697
  return null;
@@ -2749,7 +1966,7 @@ var DrawPointMode = class extends GeoJsonEditMode {
2749
1966
  };
2750
1967
 
2751
1968
  // dist/edit-modes/draw-line-string-mode.js
2752
- var import_distance6 = __toESM(require("@turf/distance"), 1);
1969
+ var import_distance5 = __toESM(require("@turf/distance"), 1);
2753
1970
 
2754
1971
  // dist/utils/memoize.js
2755
1972
  function isEqual(a, b) {
@@ -2906,7 +2123,7 @@ var DrawLineStringMode = class extends GeoJsonEditMode {
2906
2123
  calculateInfoDraw(clickSequence) {
2907
2124
  if (clickSequence.length > 1) {
2908
2125
  this.position = clickSequence[clickSequence.length - 1];
2909
- this.dist += (0, import_distance6.default)(clickSequence[clickSequence.length - 2], clickSequence[clickSequence.length - 1]);
2126
+ this.dist += (0, import_distance5.default)(clickSequence[clickSequence.length - 2], clickSequence[clickSequence.length - 1]);
2910
2127
  }
2911
2128
  }
2912
2129
  /**
@@ -2936,9 +2153,10 @@ var DrawLineStringMode = class extends GeoJsonEditMode {
2936
2153
  };
2937
2154
 
2938
2155
  // dist/edit-modes/draw-polygon-mode.js
2939
- var import_line_intersect2 = __toESM(require("@turf/line-intersect"), 1);
2156
+ var import_line_intersect2 = require("@turf/line-intersect");
2940
2157
  var import_helpers9 = require("@turf/helpers");
2941
- var import_boolean_within = __toESM(require("@turf/boolean-within"), 1);
2158
+ var import_boolean_within = require("@turf/boolean-within");
2159
+ var import_kinks = require("@turf/kinks");
2942
2160
  var DrawPolygonMode = class extends GeoJsonEditMode {
2943
2161
  holeSequence = [];
2944
2162
  isDrawingHole = false;
@@ -3079,12 +2297,12 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
3079
2297
  // eslint-disable-next-line max-statements, complexity
3080
2298
  finishDrawing(props) {
3081
2299
  const clickSequence = this.getClickSequence();
3082
- const polygon3 = [...clickSequence, clickSequence[0]];
3083
- const newPolygon = (0, import_helpers9.polygon)([polygon3]);
2300
+ const polygon2 = [...clickSequence, clickSequence[0]];
2301
+ const newPolygon = (0, import_helpers9.polygon)([polygon2]);
3084
2302
  const canAddHole = canAddHoleToPolygon(props);
3085
2303
  const canOverlap = canPolygonOverlap(props);
3086
2304
  if (!canOverlap) {
3087
- 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]));
2305
+ const overlapping = (0, import_kinks.kinks)(newPolygon).features;
3088
2306
  if (overlapping.length > 0) {
3089
2307
  props.onEdit({
3090
2308
  updatedData: props.data,
@@ -3096,7 +2314,7 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
3096
2314
  }
3097
2315
  }
3098
2316
  if (canAddHole) {
3099
- const holeResult = this.tryAddHoleToExistingPolygon(newPolygon, polygon3, props);
2317
+ const holeResult = this.tryAddHoleToExistingPolygon(newPolygon, polygon2, props);
3100
2318
  if (holeResult.handled) {
3101
2319
  this.resetClickSequence();
3102
2320
  return;
@@ -3111,10 +2329,10 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
3111
2329
  this.resetClickSequence();
3112
2330
  return;
3113
2331
  }
3114
- tryAddHoleToExistingPolygon(newPolygon, polygon3, props) {
2332
+ tryAddHoleToExistingPolygon(newPolygon, polygon2, props) {
3115
2333
  for (const [featureIndex, feature] of props.data.features.entries()) {
3116
2334
  if (feature.geometry.type === "Polygon") {
3117
- const result = this.validateAndCreateHole(feature, featureIndex, newPolygon, polygon3, props);
2335
+ const result = this.validateAndCreateHole(feature, featureIndex, newPolygon, polygon2, props);
3118
2336
  if (result.handled) {
3119
2337
  return result;
3120
2338
  }
@@ -3122,11 +2340,11 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
3122
2340
  }
3123
2341
  return { handled: false };
3124
2342
  }
3125
- validateAndCreateHole(feature, featureIndex, newPolygon, polygon3, props) {
2343
+ validateAndCreateHole(feature, featureIndex, newPolygon, polygon2, props) {
3126
2344
  const outer = (0, import_helpers9.polygon)(feature.geometry.coordinates);
3127
2345
  for (let i = 1; i < feature.geometry.coordinates.length; i++) {
3128
2346
  const hole = (0, import_helpers9.polygon)([feature.geometry.coordinates[i]]);
3129
- const intersection = (0, import_line_intersect2.default)(hole, newPolygon);
2347
+ const intersection = (0, import_line_intersect2.lineIntersect)(hole, newPolygon);
3130
2348
  if (intersection.features.length > 0) {
3131
2349
  props.onEdit({
3132
2350
  updatedData: props.data,
@@ -3135,7 +2353,7 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
3135
2353
  });
3136
2354
  return { handled: true };
3137
2355
  }
3138
- if ((0, import_boolean_within.default)(hole, newPolygon) || (0, import_boolean_within.default)(newPolygon, hole)) {
2356
+ if ((0, import_boolean_within.booleanWithin)(hole, newPolygon) || (0, import_boolean_within.booleanWithin)(newPolygon, hole)) {
3139
2357
  props.onEdit({
3140
2358
  updatedData: props.data,
3141
2359
  editType: "invalidHole",
@@ -3144,7 +2362,7 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
3144
2362
  return { handled: true };
3145
2363
  }
3146
2364
  }
3147
- const intersectionWithOuter = (0, import_line_intersect2.default)(outer, newPolygon);
2365
+ const intersectionWithOuter = (0, import_line_intersect2.lineIntersect)(outer, newPolygon);
3148
2366
  if (intersectionWithOuter.features.length > 0) {
3149
2367
  props.onEdit({
3150
2368
  updatedData: props.data,
@@ -3153,7 +2371,7 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
3153
2371
  });
3154
2372
  return { handled: true };
3155
2373
  }
3156
- if ((0, import_boolean_within.default)(outer, newPolygon)) {
2374
+ if ((0, import_boolean_within.booleanWithin)(outer, newPolygon)) {
3157
2375
  props.onEdit({
3158
2376
  updatedData: props.data,
3159
2377
  editType: "invalidPolygon",
@@ -3161,10 +2379,10 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
3161
2379
  });
3162
2380
  return { handled: true };
3163
2381
  }
3164
- if ((0, import_boolean_within.default)(newPolygon, outer)) {
2382
+ if ((0, import_boolean_within.booleanWithin)(newPolygon, outer)) {
3165
2383
  const updatedData = new ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, {
3166
2384
  ...feature.geometry,
3167
- coordinates: [...feature.geometry.coordinates, polygon3]
2385
+ coordinates: [...feature.geometry.coordinates, polygon2]
3168
2386
  }).getObject();
3169
2387
  props.onEdit({
3170
2388
  updatedData,
@@ -3191,7 +2409,7 @@ function canPolygonOverlap(props) {
3191
2409
  }
3192
2410
 
3193
2411
  // dist/edit-modes/draw-rectangle-mode.js
3194
- var import_bbox_polygon4 = __toESM(require("@turf/bbox-polygon"), 1);
2412
+ var import_bbox_polygon3 = __toESM(require("@turf/bbox-polygon"), 1);
3195
2413
 
3196
2414
  // dist/edit-modes/two-click-polygon-mode.js
3197
2415
  var import_lodash = __toESM(require("lodash.omit"), 1);
@@ -3248,15 +2466,15 @@ var TwoClickPolygonMode = class extends GeoJsonEditMode {
3248
2466
  }
3249
2467
  const corner1 = clickSequence[0];
3250
2468
  const corner2 = lastPointerMoveEvent.mapCoords;
3251
- const polygon3 = this.getTwoClickPolygon(corner1, corner2, modeConfig);
3252
- if (polygon3) {
2469
+ const polygon2 = this.getTwoClickPolygon(corner1, corner2, modeConfig);
2470
+ if (polygon2) {
3253
2471
  guides.features.push({
3254
2472
  type: "Feature",
3255
2473
  properties: {
3256
- ...polygon3.properties,
2474
+ ...polygon2.properties,
3257
2475
  guideType: "tentative"
3258
2476
  },
3259
- geometry: polygon3.geometry
2477
+ geometry: polygon2.geometry
3260
2478
  });
3261
2479
  }
3262
2480
  return guides;
@@ -3283,7 +2501,7 @@ var TwoClickPolygonMode = class extends GeoJsonEditMode {
3283
2501
  // dist/edit-modes/draw-rectangle-mode.js
3284
2502
  var DrawRectangleMode = class extends TwoClickPolygonMode {
3285
2503
  getTwoClickPolygon(coord1, coord2, modeConfig) {
3286
- const rectangle = (0, import_bbox_polygon4.default)([coord1[0], coord1[1], coord2[0], coord2[1]]);
2504
+ const rectangle = (0, import_bbox_polygon3.default)([coord1[0], coord1[1], coord2[0], coord2[1]]);
3287
2505
  rectangle.properties = rectangle.properties || {};
3288
2506
  rectangle.properties.shape = "Rectangle";
3289
2507
  return rectangle;
@@ -3291,22 +2509,22 @@ var DrawRectangleMode = class extends TwoClickPolygonMode {
3291
2509
  };
3292
2510
 
3293
2511
  // dist/edit-modes/draw-square-mode.js
3294
- var import_bbox_polygon5 = __toESM(require("@turf/bbox-polygon"), 1);
3295
- var import_distance7 = __toESM(require("@turf/distance"), 1);
2512
+ var import_bbox_polygon4 = __toESM(require("@turf/bbox-polygon"), 1);
2513
+ var import_distance6 = __toESM(require("@turf/distance"), 1);
3296
2514
  var import_along = __toESM(require("@turf/along"), 1);
3297
2515
  var import_helpers10 = require("@turf/helpers");
3298
2516
  var DrawSquareMode = class extends TwoClickPolygonMode {
3299
2517
  getTwoClickPolygon(coord1, coord2, modeConfig) {
3300
2518
  const coord3 = [coord2[0], coord1[1]];
3301
2519
  const coord4 = [coord1[0], coord2[1]];
3302
- const distance1 = (0, import_distance7.default)((0, import_helpers10.point)(coord3), (0, import_helpers10.point)(coord1));
3303
- const distance22 = (0, import_distance7.default)((0, import_helpers10.point)(coord4), (0, import_helpers10.point)(coord1));
2520
+ const distance1 = (0, import_distance6.default)((0, import_helpers10.point)(coord3), (0, import_helpers10.point)(coord1));
2521
+ const distance22 = (0, import_distance6.default)((0, import_helpers10.point)(coord4), (0, import_helpers10.point)(coord1));
3304
2522
  const shortestDistance = distance1 <= distance22 ? distance1 : distance22;
3305
2523
  const closestPoint = distance1 <= distance22 ? coord3 : coord4;
3306
2524
  const line = (0, import_helpers10.lineString)([closestPoint, coord2]);
3307
2525
  const newPoint = (0, import_along.default)(line, shortestDistance);
3308
2526
  const corner = newPoint.geometry.coordinates;
3309
- const square = (0, import_bbox_polygon5.default)([coord1[0], coord1[1], corner[0], corner[1]]);
2527
+ const square = (0, import_bbox_polygon4.default)([coord1[0], coord1[1], corner[0], corner[1]]);
3310
2528
  square.properties = square.properties || {};
3311
2529
  square.properties.shape = "Square";
3312
2530
  return square;
@@ -3314,12 +2532,12 @@ var DrawSquareMode = class extends TwoClickPolygonMode {
3314
2532
  };
3315
2533
 
3316
2534
  // dist/edit-modes/draw-rectangle-from-center-mode.js
3317
- var import_bbox_polygon6 = __toESM(require("@turf/bbox-polygon"), 1);
2535
+ var import_bbox_polygon5 = __toESM(require("@turf/bbox-polygon"), 1);
3318
2536
  var DrawRectangleFromCenterMode = class extends TwoClickPolygonMode {
3319
2537
  getTwoClickPolygon(coord1, coord2, modeConfig) {
3320
2538
  const longitude = coord1[0] > coord2[0] ? coord1[0] + Math.abs(coord1[0] - coord2[0]) : coord1[0] - Math.abs(coord1[0] - coord2[0]);
3321
2539
  const latitude = coord1[1] > coord2[1] ? coord1[1] + Math.abs(coord1[1] - coord2[1]) : coord1[1] - Math.abs(coord1[1] - coord2[1]);
3322
- const rectangle = (0, import_bbox_polygon6.default)([longitude, latitude, coord2[0], coord2[1]]);
2540
+ const rectangle = (0, import_bbox_polygon5.default)([longitude, latitude, coord2[0], coord2[1]]);
3323
2541
  rectangle.properties = rectangle.properties || {};
3324
2542
  rectangle.properties.shape = "Rectangle";
3325
2543
  return rectangle;
@@ -3327,16 +2545,16 @@ var DrawRectangleFromCenterMode = class extends TwoClickPolygonMode {
3327
2545
  };
3328
2546
 
3329
2547
  // dist/edit-modes/draw-square-from-center-mode.js
3330
- var import_bbox_polygon7 = __toESM(require("@turf/bbox-polygon"), 1);
3331
- var import_distance8 = __toESM(require("@turf/distance"), 1);
2548
+ var import_bbox_polygon6 = __toESM(require("@turf/bbox-polygon"), 1);
2549
+ var import_distance7 = __toESM(require("@turf/distance"), 1);
3332
2550
  var import_along2 = __toESM(require("@turf/along"), 1);
3333
2551
  var import_helpers11 = require("@turf/helpers");
3334
2552
  var DrawSquareFromCenterMode = class extends TwoClickPolygonMode {
3335
2553
  getTwoClickPolygon(coord1, coord2, modeConfig) {
3336
2554
  const coord3 = [coord2[0], coord1[1]];
3337
2555
  const coord4 = [coord1[0], coord2[1]];
3338
- const distance1 = (0, import_distance8.default)((0, import_helpers11.point)(coord3), (0, import_helpers11.point)(coord1));
3339
- const distance22 = (0, import_distance8.default)((0, import_helpers11.point)(coord4), (0, import_helpers11.point)(coord1));
2556
+ const distance1 = (0, import_distance7.default)((0, import_helpers11.point)(coord3), (0, import_helpers11.point)(coord1));
2557
+ const distance22 = (0, import_distance7.default)((0, import_helpers11.point)(coord4), (0, import_helpers11.point)(coord1));
3340
2558
  const shortestDistance = distance1 <= distance22 ? distance1 : distance22;
3341
2559
  const closestPoint = distance1 <= distance22 ? coord3 : coord4;
3342
2560
  const line = (0, import_helpers11.lineString)([closestPoint, coord2]);
@@ -3344,7 +2562,7 @@ var DrawSquareFromCenterMode = class extends TwoClickPolygonMode {
3344
2562
  const corner = newPoint.geometry.coordinates;
3345
2563
  const longitude = coord1[0] > corner[0] ? coord1[0] + Math.abs(coord1[0] - corner[0]) : coord1[0] - Math.abs(coord1[0] - corner[0]);
3346
2564
  const latitude = coord1[1] > corner[1] ? coord1[1] + Math.abs(coord1[1] - corner[1]) : coord1[1] - Math.abs(coord1[1] - corner[1]);
3347
- const square = (0, import_bbox_polygon7.default)([longitude, latitude, corner[0], corner[1]]);
2565
+ const square = (0, import_bbox_polygon6.default)([longitude, latitude, corner[0], corner[1]]);
3348
2566
  square.properties = square.properties || {};
3349
2567
  square.properties.shape = "Square";
3350
2568
  return square;
@@ -3353,7 +2571,7 @@ var DrawSquareFromCenterMode = class extends TwoClickPolygonMode {
3353
2571
 
3354
2572
  // dist/edit-modes/draw-circle-from-center-mode.js
3355
2573
  var import_circle = __toESM(require("@turf/circle"), 1);
3356
- var import_distance9 = __toESM(require("@turf/distance"), 1);
2574
+ var import_distance8 = __toESM(require("@turf/distance"), 1);
3357
2575
  var import_area = __toESM(require("@turf/area"), 1);
3358
2576
  var DrawCircleFromCenterMode = class extends TwoClickPolygonMode {
3359
2577
  radius = null;
@@ -3367,7 +2585,7 @@ var DrawCircleFromCenterMode = class extends TwoClickPolygonMode {
3367
2585
  console.warn("Minimum steps to draw a circle is 4 ");
3368
2586
  options.steps = 4;
3369
2587
  }
3370
- this.radius = Math.max((0, import_distance9.default)(coord1, coord2), 1e-3);
2588
+ this.radius = Math.max((0, import_distance8.default)(coord1, coord2), 1e-3);
3371
2589
  const geometry = (0, import_circle.default)(coord1, this.radius, options);
3372
2590
  geometry.properties = geometry.properties || {};
3373
2591
  geometry.properties.shape = "Circle";
@@ -3421,7 +2639,7 @@ var DrawCircleFromCenterMode = class extends TwoClickPolygonMode {
3421
2639
 
3422
2640
  // dist/edit-modes/draw-circle-by-diameter-mode.js
3423
2641
  var import_circle2 = __toESM(require("@turf/circle"), 1);
3424
- var import_distance10 = __toESM(require("@turf/distance"), 1);
2642
+ var import_distance9 = __toESM(require("@turf/distance"), 1);
3425
2643
  var import_area2 = __toESM(require("@turf/area"), 1);
3426
2644
  var DrawCircleByDiameterMode = class extends TwoClickPolygonMode {
3427
2645
  radius = null;
@@ -3436,8 +2654,8 @@ var DrawCircleByDiameterMode = class extends TwoClickPolygonMode {
3436
2654
  options.steps = 4;
3437
2655
  }
3438
2656
  const centerCoordinates = getIntermediatePosition(coord1, coord2);
3439
- this.radius = Math.max((0, import_distance10.default)(coord1, centerCoordinates), 1e-3);
3440
- this.diameter = Math.max((0, import_distance10.default)(coord1, coord2), 1e-3);
2657
+ this.radius = Math.max((0, import_distance9.default)(coord1, centerCoordinates), 1e-3);
2658
+ this.diameter = Math.max((0, import_distance9.default)(coord1, coord2), 1e-3);
3441
2659
  this.position = centerCoordinates;
3442
2660
  const geometry = (0, import_circle2.default)(centerCoordinates, this.radius, options);
3443
2661
  geometry.properties = geometry.properties || {};
@@ -3495,8 +2713,8 @@ var DrawCircleByDiameterMode = class extends TwoClickPolygonMode {
3495
2713
  };
3496
2714
 
3497
2715
  // dist/edit-modes/draw-ellipse-by-bounding-box-mode.js
3498
- var import_bbox_polygon8 = __toESM(require("@turf/bbox-polygon"), 1);
3499
- var import_distance11 = __toESM(require("@turf/distance"), 1);
2716
+ var import_bbox_polygon7 = __toESM(require("@turf/bbox-polygon"), 1);
2717
+ var import_distance10 = __toESM(require("@turf/distance"), 1);
3500
2718
  var import_ellipse = __toESM(require("@turf/ellipse"), 1);
3501
2719
  var import_helpers12 = require("@turf/helpers");
3502
2720
  var DrawEllipseByBoundingBoxMode = class extends TwoClickPolygonMode {
@@ -3505,11 +2723,11 @@ var DrawEllipseByBoundingBoxMode = class extends TwoClickPolygonMode {
3505
2723
  const minY = Math.min(coord1[1], coord2[1]);
3506
2724
  const maxX = Math.max(coord1[0], coord2[0]);
3507
2725
  const maxY = Math.max(coord1[1], coord2[1]);
3508
- const polygonPoints = (0, import_bbox_polygon8.default)([minX, minY, maxX, maxY]).geometry.coordinates[0];
2726
+ const polygonPoints = (0, import_bbox_polygon7.default)([minX, minY, maxX, maxY]).geometry.coordinates[0];
3509
2727
  const centerCoordinates = getIntermediatePosition(coord1, coord2);
3510
- const xSemiAxis = Math.max((0, import_distance11.default)((0, import_helpers12.point)(polygonPoints[0]), (0, import_helpers12.point)(polygonPoints[1])), 1e-3);
3511
- const ySemiAxis = Math.max((0, import_distance11.default)((0, import_helpers12.point)(polygonPoints[0]), (0, import_helpers12.point)(polygonPoints[3])), 1e-3);
3512
- const geometry = (0, import_ellipse.default)(centerCoordinates, xSemiAxis, ySemiAxis);
2728
+ const xSemiAxis = Math.max((0, import_distance10.default)((0, import_helpers12.point)(polygonPoints[0]), (0, import_helpers12.point)(polygonPoints[1])), 1e-3);
2729
+ const ySemiAxis = Math.max((0, import_distance10.default)((0, import_helpers12.point)(polygonPoints[0]), (0, import_helpers12.point)(polygonPoints[3])), 1e-3);
2730
+ const geometry = (0, import_ellipse.default)(centerCoordinates, xSemiAxis, ySemiAxis, {});
3513
2731
  geometry.properties = geometry.properties || {};
3514
2732
  geometry.properties.editProperties = geometry.properties.editProperties || {};
3515
2733
  geometry.properties.editProperties.shape = "Ellipse";
@@ -3522,14 +2740,14 @@ var DrawEllipseByBoundingBoxMode = class extends TwoClickPolygonMode {
3522
2740
  };
3523
2741
 
3524
2742
  // dist/edit-modes/three-click-polygon-mode.js
3525
- var import_lodash2 = __toESM(require("lodash.omit"), 1);
3526
2743
  var ThreeClickPolygonMode = class extends GeoJsonEditMode {
3527
2744
  handleClick(event, props) {
3528
2745
  this.addClickSequence(event);
2746
+ const { modeConfig } = props;
3529
2747
  const clickSequence = this.getClickSequence();
3530
- const tentativeFeature = this.getTentativeGuide(props);
3531
- if (clickSequence.length > 2 && tentativeFeature && tentativeFeature.geometry.type === "Polygon") {
3532
- const editAction = this.getAddFeatureOrBooleanPolygonAction(tentativeFeature.geometry, props, (0, import_lodash2.default)(tentativeFeature.properties, "guideType"));
2748
+ if (clickSequence.length > 2) {
2749
+ const { geometry, properties } = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], clickSequence[2], modeConfig);
2750
+ const editAction = this.getAddFeatureOrBooleanPolygonAction(geometry, props, properties);
3533
2751
  this.resetClickSequence();
3534
2752
  if (editAction) {
3535
2753
  props.onEdit(editAction);
@@ -3543,11 +2761,11 @@ var ThreeClickPolygonMode = class extends GeoJsonEditMode {
3543
2761
  type: "FeatureCollection",
3544
2762
  features: []
3545
2763
  };
3546
- if (clickSequence.length === 0) {
3547
- return guides;
3548
- }
3549
- const hoveredCoord = lastPointerMoveEvent.mapCoords;
3550
- if (clickSequence.length === 1) {
2764
+ const coords = [
2765
+ ...clickSequence,
2766
+ ...lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : []
2767
+ ];
2768
+ if (coords.length === 2) {
3551
2769
  guides.features.push({
3552
2770
  type: "Feature",
3553
2771
  properties: {
@@ -3555,19 +2773,18 @@ var ThreeClickPolygonMode = class extends GeoJsonEditMode {
3555
2773
  },
3556
2774
  geometry: {
3557
2775
  type: "LineString",
3558
- coordinates: [clickSequence[0], hoveredCoord]
2776
+ coordinates: [coords[0], coords[1]]
3559
2777
  }
3560
2778
  });
3561
- } else {
3562
- const polygon3 = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], hoveredCoord, modeConfig);
3563
- if (polygon3) {
2779
+ } else if (coords.length > 2) {
2780
+ const polygon2 = this.getThreeClickPolygon(coords[0], coords[1], coords[2], modeConfig);
2781
+ if (polygon2) {
3564
2782
  guides.features.push({
3565
- type: "Feature",
2783
+ ...polygon2,
3566
2784
  properties: {
3567
- ...polygon3.properties,
2785
+ ...polygon2.properties,
3568
2786
  guideType: "tentative"
3569
- },
3570
- geometry: polygon3.geometry
2787
+ }
3571
2788
  });
3572
2789
  }
3573
2790
  }
@@ -3621,15 +2838,15 @@ var DrawRectangleUsingThreePointsMode = class extends ThreeClickPolygonMode {
3621
2838
  };
3622
2839
 
3623
2840
  // dist/edit-modes/draw-ellipse-using-three-points-mode.js
3624
- var import_distance12 = __toESM(require("@turf/distance"), 1);
2841
+ var import_distance11 = __toESM(require("@turf/distance"), 1);
3625
2842
  var import_ellipse2 = __toESM(require("@turf/ellipse"), 1);
3626
2843
  var import_bearing8 = __toESM(require("@turf/bearing"), 1);
3627
2844
  var import_helpers13 = require("@turf/helpers");
3628
2845
  var DrawEllipseUsingThreePointsMode = class extends ThreeClickPolygonMode {
3629
2846
  getThreeClickPolygon(coord1, coord2, coord3, modeConfig) {
3630
2847
  const centerCoordinates = getIntermediatePosition(coord1, coord2);
3631
- const xSemiAxis = Math.max((0, import_distance12.default)(centerCoordinates, (0, import_helpers13.point)(coord3)), 1e-3);
3632
- const ySemiAxis = Math.max((0, import_distance12.default)(coord1, coord2), 1e-3) / 2;
2848
+ const xSemiAxis = Math.max((0, import_distance11.default)(centerCoordinates, (0, import_helpers13.point)(coord3)), 1e-3);
2849
+ const ySemiAxis = Math.max((0, import_distance11.default)(coord1, coord2), 1e-3) / 2;
3633
2850
  const options = { angle: (0, import_bearing8.default)(coord1, coord2) };
3634
2851
  const geometry = (0, import_ellipse2.default)(centerCoordinates, xSemiAxis, ySemiAxis, options);
3635
2852
  geometry.properties = geometry.properties || {};
@@ -3647,7 +2864,7 @@ var DrawEllipseUsingThreePointsMode = class extends ThreeClickPolygonMode {
3647
2864
  var import_destination4 = __toESM(require("@turf/destination"), 1);
3648
2865
  var import_bearing9 = __toESM(require("@turf/bearing"), 1);
3649
2866
  var import_line_intersect3 = __toESM(require("@turf/line-intersect"), 1);
3650
- var import_distance13 = __toESM(require("@turf/distance"), 1);
2867
+ var import_distance12 = __toESM(require("@turf/distance"), 1);
3651
2868
  var import_helpers14 = require("@turf/helpers");
3652
2869
  var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
3653
2870
  createTentativeFeature(props) {
@@ -3718,13 +2935,13 @@ var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
3718
2935
  const lineString3 = tentativeFeature.geometry;
3719
2936
  clickSequence[clickSequence.length - 1] = lineString3.coordinates[lineString3.coordinates.length - 1];
3720
2937
  } else if (clickSequence.length > 3 && tentativeFeature.geometry.type === "Polygon") {
3721
- const polygon3 = tentativeFeature.geometry;
3722
- clickSequence[clickSequence.length - 1] = polygon3.coordinates[0][polygon3.coordinates[0].length - 2];
2938
+ const polygon2 = tentativeFeature.geometry;
2939
+ clickSequence[clickSequence.length - 1] = polygon2.coordinates[0][polygon2.coordinates[0].length - 2];
3723
2940
  const clickedEditHandle = getPickedEditHandle(picks);
3724
- if (clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[1] === 0 || clickedEditHandle.properties.positionIndexes[1] === polygon3.coordinates[0].length - 3)) {
2941
+ if (clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[1] === 0 || clickedEditHandle.properties.positionIndexes[1] === polygon2.coordinates[0].length - 3)) {
3725
2942
  const polygonToAdd = {
3726
2943
  type: "Polygon",
3727
- coordinates: this.finalizedCoordinates([...polygon3.coordinates[0]])
2944
+ coordinates: this.finalizedCoordinates([...polygon2.coordinates[0]])
3728
2945
  };
3729
2946
  this.resetClickSequence();
3730
2947
  const editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);
@@ -3777,7 +2994,7 @@ var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
3777
2994
  const newAngle2 = angle2 + factor * 90;
3778
2995
  angles.second.push(newAngle2 > 180 ? newAngle2 - 360 : newAngle2);
3779
2996
  });
3780
- const distance7 = (0, import_distance13.default)((0, import_helpers14.point)(p1), (0, import_helpers14.point)(p3));
2997
+ const distance7 = (0, import_distance12.default)((0, import_helpers14.point)(p1), (0, import_helpers14.point)(p3));
3781
2998
  [0, 1, 2].forEach((indexFirst) => {
3782
2999
  const line1 = (0, import_helpers14.lineString)([
3783
3000
  p1,
@@ -3800,7 +3017,7 @@ var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
3800
3017
  };
3801
3018
 
3802
3019
  // dist/edit-modes/draw-polygon-by-dragging-mode.js
3803
- var import_lodash3 = __toESM(require("lodash.throttle"), 1);
3020
+ var import_lodash2 = __toESM(require("lodash.throttle"), 1);
3804
3021
  var DrawPolygonByDraggingMode = class extends DrawPolygonMode {
3805
3022
  handleDraggingThrottled = null;
3806
3023
  handleClick(event, props) {
@@ -3808,7 +3025,7 @@ var DrawPolygonByDraggingMode = class extends DrawPolygonMode {
3808
3025
  handleStartDragging(event, props) {
3809
3026
  event.cancelPan();
3810
3027
  if (props.modeConfig && props.modeConfig.throttleMs) {
3811
- this.handleDraggingThrottled = (0, import_lodash3.default)(this.handleDraggingAux, props.modeConfig.throttleMs);
3028
+ this.handleDraggingThrottled = (0, import_lodash2.default)(this.handleDraggingAux, props.modeConfig.throttleMs);
3812
3029
  } else {
3813
3030
  this.handleDraggingThrottled = this.handleDraggingAux;
3814
3031
  }
@@ -4107,12 +3324,12 @@ var DeleteMode = class extends GeoJsonEditMode {
4107
3324
  };
4108
3325
 
4109
3326
  // dist/constants.js
4110
- var PROJECTED_PIXEL_SIZE_MULTIPLIER2 = 2 / 3;
3327
+ var PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;
4111
3328
 
4112
3329
  // dist/editable-layers/editable-layer.js
4113
- var import_core3 = require("@deck.gl/core");
3330
+ var import_core = require("@deck.gl/core");
4114
3331
  var EVENT_TYPES = ["click", "pointermove", "panstart", "panmove", "panend", "keyup", "dblclick"];
4115
- var EditableLayer = class extends import_core3.CompositeLayer {
3332
+ var EditableLayer = class extends import_core.CompositeLayer {
4116
3333
  state = void 0;
4117
3334
  // Overridable interaction event handlers
4118
3335
  onLayerClick(event) {
@@ -4305,7 +3522,7 @@ var EditableLayer = class extends import_core3.CompositeLayer {
4305
3522
  __publicField(EditableLayer, "layerName", "EditableLayer");
4306
3523
 
4307
3524
  // dist/editable-layers/editable-path-layer.js
4308
- var import_layers5 = require("@deck.gl/layers");
3525
+ var import_layers = require("@deck.gl/layers");
4309
3526
  var uniformBlock = `uniform pickingLineWidthUniforms {
4310
3527
  float extraPixels;
4311
3528
  } pickingLineWidth;
@@ -4319,10 +3536,10 @@ var pickingUniforms = {
4319
3536
  }
4320
3537
  };
4321
3538
  var defaultProps = {
4322
- ...import_layers5.PathLayer.defaultProps,
3539
+ ...import_layers.PathLayer.defaultProps,
4323
3540
  pickingLineWidthExtraPixels: { type: "number", min: 0, value: Number.MAX_SAFE_INTEGER }
4324
3541
  };
4325
- var EditablePathLayer = class extends import_layers5.PathLayer {
3542
+ var EditablePathLayer = class extends import_layers.PathLayer {
4326
3543
  getShaders() {
4327
3544
  const shaders = super.getShaders();
4328
3545
  shaders.vs = insertBefore(shaders.vs, "vec3 width;", `
@@ -4360,7 +3577,7 @@ var DEFAULT_EDITING_POINT_OUTLINE_COLOR = [255, 255, 255, 255];
4360
3577
  var DEFAULT_EDITING_EXISTING_POINT_RADIUS = 5;
4361
3578
  var DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS = 3;
4362
3579
  var DEFAULT_EDITING_SNAP_POINT_RADIUS = 7;
4363
- var DEFAULT_TOOLTIP_FONT_SIZE = 32 * PROJECTED_PIXEL_SIZE_MULTIPLIER2;
3580
+ var DEFAULT_TOOLTIP_FONT_SIZE = 32 * PROJECTED_PIXEL_SIZE_MULTIPLIER;
4364
3581
  var DEFAULT_EDIT_MODE = DrawPolygonMode;
4365
3582
  function guideAccessor(accessor) {
4366
3583
  if (!accessor || typeof accessor !== "function") {
@@ -4412,7 +3629,7 @@ var defaultProps2 = {
4412
3629
  fp64: false,
4413
3630
  filled: true,
4414
3631
  stroked: true,
4415
- lineWidthScale: PROJECTED_PIXEL_SIZE_MULTIPLIER2,
3632
+ lineWidthScale: PROJECTED_PIXEL_SIZE_MULTIPLIER,
4416
3633
  lineWidthMinPixels: 1,
4417
3634
  lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,
4418
3635
  pickingLineWidthExtraPixels: 0,
@@ -4527,13 +3744,29 @@ var EditableGeoJsonLayer = class extends EditableLayer {
4527
3744
  }
4528
3745
  },
4529
3746
  updateTriggers: {
4530
- getLineColor: [this.props.selectedFeatureIndexes, this.props.mode],
4531
- getFillColor: [this.props.selectedFeatureIndexes, this.props.mode],
4532
- getPointRadius: [this.props.selectedFeatureIndexes, this.props.mode],
4533
- getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode]
3747
+ getLineColor: [
3748
+ this.props.updateTriggers.getLineColor,
3749
+ this.props.selectedFeatureIndexes,
3750
+ this.props.mode
3751
+ ],
3752
+ getFillColor: [
3753
+ this.props.updateTriggers.getFillColor,
3754
+ this.props.selectedFeatureIndexes,
3755
+ this.props.mode
3756
+ ],
3757
+ getPointRadius: [
3758
+ this.props.updateTriggers.getPointRadius,
3759
+ this.props.selectedFeatureIndexes,
3760
+ this.props.mode
3761
+ ],
3762
+ getLineWidth: [
3763
+ this.props.updateTriggers.getLineWidth,
3764
+ this.props.selectedFeatureIndexes,
3765
+ this.props.mode
3766
+ ]
4534
3767
  }
4535
3768
  });
4536
- let layers = [new import_layers6.GeoJsonLayer(subLayerProps)];
3769
+ let layers = [new import_layers2.GeoJsonLayer(subLayerProps)];
4537
3770
  layers = layers.concat(this.createGuidesLayers(), this.createTooltipsLayers());
4538
3771
  return layers;
4539
3772
  }
@@ -4647,7 +3880,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
4647
3880
  };
4648
3881
  if (this.props.editHandleType === "icon") {
4649
3882
  subLayerProps["points-icon"] = {
4650
- type: import_layers6.IconLayer,
3883
+ type: import_layers2.IconLayer,
4651
3884
  iconAtlas: this.props.editHandleIconAtlas,
4652
3885
  iconMapping: this.props.editHandleIconMapping,
4653
3886
  sizeUnits: this.props.editHandleIconSizeUnits,
@@ -4660,7 +3893,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
4660
3893
  };
4661
3894
  } else {
4662
3895
  subLayerProps["points-circle"] = {
4663
- type: import_layers6.ScatterplotLayer,
3896
+ type: import_layers2.ScatterplotLayer,
4664
3897
  radiusScale: this.props.editHandlePointRadiusScale,
4665
3898
  stroked: this.props.editHandlePointOutline,
4666
3899
  getLineWidth: this.props.editHandlePointStrokeWidth,
@@ -4673,7 +3906,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
4673
3906
  billboard: this.props.billboard
4674
3907
  };
4675
3908
  }
4676
- const layer = new import_layers6.GeoJsonLayer(this.getSubLayerProps({
3909
+ const layer = new import_layers2.GeoJsonLayer(this.getSubLayerProps({
4677
3910
  id: "guides",
4678
3911
  data: guides,
4679
3912
  fp64: this.props.fp64,
@@ -4696,7 +3929,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
4696
3929
  createTooltipsLayers() {
4697
3930
  const mode = this.getActiveMode();
4698
3931
  const tooltips = mode.getTooltips(this.getModeProps(this.props));
4699
- const layer = new import_layers6.TextLayer({
3932
+ const layer = new import_layers2.TextLayer({
4700
3933
  getSize: DEFAULT_TOOLTIP_FONT_SIZE,
4701
3934
  ...this.getSubLayerProps({
4702
3935
  id: "tooltips",
@@ -4762,7 +3995,7 @@ var defaultProps3 = {
4762
3995
  selectedIndexes: [],
4763
3996
  filled: false,
4764
3997
  stroked: true,
4765
- lineWidthScale: PROJECTED_PIXEL_SIZE_MULTIPLIER2,
3998
+ lineWidthScale: PROJECTED_PIXEL_SIZE_MULTIPLIER,
4766
3999
  lineWidthMinPixels: 1,
4767
4000
  lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,
4768
4001
  lineWidthUnits: "pixels",
@@ -4896,25 +4129,25 @@ __publicField(EditableH3ClusterLayer, "layerName", "EditableH3ClusterLayer");
4896
4129
  __publicField(EditableH3ClusterLayer, "defaultProps", defaultProps3);
4897
4130
 
4898
4131
  // dist/editable-layers/selection-layer.js
4899
- var import_core4 = require("@deck.gl/core");
4900
- var import_layers7 = require("@deck.gl/layers");
4132
+ var import_core2 = require("@deck.gl/core");
4133
+ var import_layers3 = require("@deck.gl/layers");
4901
4134
  var import_helpers16 = require("@turf/helpers");
4902
- var import_buffer3 = __toESM(require("@turf/buffer"), 1);
4903
- var import_difference4 = __toESM(require("@turf/difference"), 1);
4904
- var SELECTION_TYPE2 = {
4135
+ var import_buffer2 = __toESM(require("@turf/buffer"), 1);
4136
+ var import_difference3 = __toESM(require("@turf/difference"), 1);
4137
+ var SELECTION_TYPE = {
4905
4138
  NONE: null,
4906
4139
  RECTANGLE: "rectangle",
4907
4140
  POLYGON: "polygon"
4908
4141
  };
4909
4142
  var MODE_MAP = {
4910
- [SELECTION_TYPE2.RECTANGLE]: DrawRectangleMode,
4911
- [SELECTION_TYPE2.POLYGON]: DrawPolygonMode
4143
+ [SELECTION_TYPE.RECTANGLE]: DrawRectangleMode,
4144
+ [SELECTION_TYPE.POLYGON]: DrawPolygonMode
4912
4145
  };
4913
4146
  var MODE_CONFIG_MAP = {
4914
- [SELECTION_TYPE2.RECTANGLE]: { dragToDraw: true }
4147
+ [SELECTION_TYPE.RECTANGLE]: { dragToDraw: true }
4915
4148
  };
4916
4149
  var defaultProps4 = {
4917
- selectionType: SELECTION_TYPE2.RECTANGLE,
4150
+ selectionType: SELECTION_TYPE.RECTANGLE,
4918
4151
  layerIds: [],
4919
4152
  onSelect: () => {
4920
4153
  }
@@ -4923,7 +4156,7 @@ var EMPTY_DATA = {
4923
4156
  type: "FeatureCollection",
4924
4157
  features: []
4925
4158
  };
4926
- var EXPANSION_KM2 = 50;
4159
+ var EXPANSION_KM = 50;
4927
4160
  var LAYER_ID_GEOJSON = "selection-geojson";
4928
4161
  var LAYER_ID_BLOCKER = "selection-blocker";
4929
4162
  var PASS_THROUGH_PROPS = [
@@ -4948,7 +4181,7 @@ var PASS_THROUGH_PROPS = [
4948
4181
  "getTentativeFillColor",
4949
4182
  "getTentativeLineWidth"
4950
4183
  ];
4951
- var SelectionLayer = class extends import_core4.CompositeLayer {
4184
+ var SelectionLayer = class extends import_core2.CompositeLayer {
4952
4185
  state = void 0;
4953
4186
  _selectRectangleObjects(coordinates) {
4954
4187
  const { layerIds, onSelect } = this.props;
@@ -4973,10 +4206,10 @@ var SelectionLayer = class extends import_core4.CompositeLayer {
4973
4206
  const maxX = Math.max(...allX);
4974
4207
  const maxY = Math.max(...allY);
4975
4208
  const landPointsPoly = (0, import_helpers16.polygon)(coordinates);
4976
- const bigBuffer = (0, import_buffer3.default)(landPointsPoly, EXPANSION_KM2);
4209
+ const bigBuffer = (0, import_buffer2.default)(landPointsPoly, EXPANSION_KM);
4977
4210
  let bigPolygon;
4978
4211
  try {
4979
- bigPolygon = (0, import_difference4.default)(bigBuffer, landPointsPoly);
4212
+ bigPolygon = (0, import_difference3.default)((0, import_helpers16.featureCollection)([bigBuffer, landPointsPoly]));
4980
4213
  } catch (e) {
4981
4214
  console.log("turfDifference() error", e);
4982
4215
  return;
@@ -5020,9 +4253,9 @@ var SelectionLayer = class extends import_core4.CompositeLayer {
5020
4253
  onEdit: ({ updatedData, editType }) => {
5021
4254
  if (editType === "addFeature") {
5022
4255
  const { coordinates } = updatedData.features[0].geometry;
5023
- if (this.props.selectionType === SELECTION_TYPE2.RECTANGLE) {
4256
+ if (this.props.selectionType === SELECTION_TYPE.RECTANGLE) {
5024
4257
  this._selectRectangleObjects(coordinates);
5025
- } else if (this.props.selectionType === SELECTION_TYPE2.POLYGON) {
4258
+ } else if (this.props.selectionType === SELECTION_TYPE.POLYGON) {
5026
4259
  this._selectPolygonObjects(coordinates);
5027
4260
  }
5028
4261
  }
@@ -5032,7 +4265,7 @@ var SelectionLayer = class extends import_core4.CompositeLayer {
5032
4265
  ];
5033
4266
  if (pendingPolygonSelection) {
5034
4267
  const { bigPolygon } = pendingPolygonSelection;
5035
- layers.push(new import_layers7.PolygonLayer(this.getSubLayerProps({
4268
+ layers.push(new import_layers3.PolygonLayer(this.getSubLayerProps({
5036
4269
  id: LAYER_ID_BLOCKER,
5037
4270
  pickable: true,
5038
4271
  stroked: false,
@@ -5053,16 +4286,16 @@ __publicField(SelectionLayer, "layerName", "SelectionLayer");
5053
4286
  __publicField(SelectionLayer, "defaultProps", defaultProps4);
5054
4287
 
5055
4288
  // dist/editable-layers/elevated-edit-handle-layer.js
5056
- var import_core5 = require("@deck.gl/core");
5057
- var import_layers8 = require("@deck.gl/layers");
4289
+ var import_core3 = require("@deck.gl/core");
4290
+ var import_layers4 = require("@deck.gl/layers");
5058
4291
  var defaultProps5 = {};
5059
- var ElevatedEditHandleLayer = class extends import_core5.CompositeLayer {
4292
+ var ElevatedEditHandleLayer = class extends import_core3.CompositeLayer {
5060
4293
  renderLayers() {
5061
- const handles = new import_layers8.ScatterplotLayer(Object.assign({}, this.props, {
4294
+ const handles = new import_layers4.ScatterplotLayer(Object.assign({}, this.props, {
5062
4295
  id: `${this.props.id}-ScatterplotLayer`,
5063
4296
  data: this.props.data
5064
4297
  }));
5065
- const lines = new import_layers8.LineLayer(Object.assign({}, this.props, {
4298
+ const lines = new import_layers4.LineLayer(Object.assign({}, this.props, {
5066
4299
  id: `${this.props.id}-LineLayer`,
5067
4300
  data: this.props.data,
5068
4301
  pickable: false,
@@ -5080,7 +4313,7 @@ __publicField(ElevatedEditHandleLayer, "defaultProps", defaultProps5);
5080
4313
  // dist/widgets/edit-mode-tray-widget.js
5081
4314
  var import_jsx_runtime = require("preact/jsx-runtime");
5082
4315
  var import_preact = require("preact");
5083
- var import_core6 = require("@deck.gl/core");
4316
+ var import_core4 = require("@deck.gl/core");
5084
4317
  var ROOT_STYLE = {
5085
4318
  position: "absolute",
5086
4319
  display: "flex",
@@ -5124,7 +4357,7 @@ var BUTTON_LABEL_STYLE = {
5124
4357
  marginTop: "2px",
5125
4358
  lineHeight: "12px"
5126
4359
  };
5127
- var _EditModeTrayWidget = class extends import_core6.Widget {
4360
+ var _EditModeTrayWidget = class extends import_core4.Widget {
5128
4361
  placement = "top-left";
5129
4362
  className = "deck-widget-edit-mode-tray";
5130
4363
  layout = "vertical";
@@ -5288,6 +4521,7 @@ var _EditModeTrayWidget = class extends import_core6.Widget {
5288
4521
  var EditModeTrayWidget = _EditModeTrayWidget;
5289
4522
  __publicField(EditModeTrayWidget, "defaultProps", {
5290
4523
  id: "edit-mode-tray",
4524
+ _container: null,
5291
4525
  placement: "top-left",
5292
4526
  layout: "vertical",
5293
4527
  modes: [],
@@ -5295,11 +4529,223 @@ __publicField(EditModeTrayWidget, "defaultProps", {
5295
4529
  className: ""
5296
4530
  });
5297
4531
 
4532
+ // dist/widgets/editor-toolbar-widget.js
4533
+ var import_jsx_runtime2 = require("preact/jsx-runtime");
4534
+ var import_preact2 = require("preact");
4535
+ var import_core5 = require("@deck.gl/core");
4536
+ var ROOT_STYLE2 = {
4537
+ position: "absolute",
4538
+ display: "flex",
4539
+ flexDirection: "column",
4540
+ gap: "6px",
4541
+ pointerEvents: "auto",
4542
+ userSelect: "none",
4543
+ zIndex: "99"
4544
+ };
4545
+ var TRAY_STYLE = {
4546
+ display: "flex",
4547
+ gap: "4px",
4548
+ background: "rgba(36, 40, 41, 0.88)",
4549
+ borderRadius: "999px",
4550
+ padding: "5px 8px",
4551
+ alignItems: "center",
4552
+ justifyContent: "center",
4553
+ boxShadow: "0 4px 12px rgba(0, 0, 0, 0.25)"
4554
+ };
4555
+ var BUTTON_STYLE = {
4556
+ appearance: "none",
4557
+ background: "transparent",
4558
+ border: "none",
4559
+ color: "#f0f0f0",
4560
+ height: "30px",
4561
+ padding: "0 8px",
4562
+ display: "flex",
4563
+ alignItems: "center",
4564
+ justifyContent: "center",
4565
+ gap: "4px",
4566
+ borderRadius: "15px",
4567
+ cursor: "pointer",
4568
+ fontSize: "11px",
4569
+ fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
4570
+ fontWeight: "500",
4571
+ transition: "background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease",
4572
+ whiteSpace: "nowrap"
4573
+ };
4574
+ var BUTTON_ACTIVE_STYLE2 = {
4575
+ background: "#0071e3",
4576
+ color: "#ffffff",
4577
+ boxShadow: "0 0 0 2px rgba(255, 255, 255, 0.35)"
4578
+ };
4579
+ var DIVIDER_STYLE = {
4580
+ width: "1px",
4581
+ height: "20px",
4582
+ background: "rgba(255, 255, 255, 0.2)",
4583
+ margin: "0 2px",
4584
+ flexShrink: "0"
4585
+ };
4586
+ var BADGE_STYLE = {
4587
+ color: "rgba(255, 255, 255, 0.6)",
4588
+ fontSize: "11px",
4589
+ padding: "0 6px",
4590
+ fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
4591
+ whiteSpace: "nowrap"
4592
+ };
4593
+ function PencilIcon() {
4594
+ return (0, import_jsx_runtime2.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: (0, import_jsx_runtime2.jsx)("path", { d: "M10 1.5l2.5 2.5L4.5 12H2v-2.5z" }) });
4595
+ }
4596
+ function SubtractIcon() {
4597
+ return (0, import_jsx_runtime2.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "1.1", children: [(0, import_jsx_runtime2.jsx)("rect", { x: "1", y: "1", width: "8", height: "8", rx: "1.5" }), (0, import_jsx_runtime2.jsx)("rect", { x: "5", y: "5", width: "8", height: "8", rx: "1.5", fill: "rgba(36,40,41,0.88)" })] });
4598
+ }
4599
+ function UnionIcon() {
4600
+ return (0, import_jsx_runtime2.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "1.1", children: [(0, import_jsx_runtime2.jsx)("rect", { x: "1", y: "1", width: "8", height: "8", rx: "1.5" }), (0, import_jsx_runtime2.jsx)("rect", { x: "5", y: "5", width: "8", height: "8", rx: "1.5" })] });
4601
+ }
4602
+ function IntersectIcon() {
4603
+ return (0, import_jsx_runtime2.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", strokeWidth: "1.1", children: [(0, import_jsx_runtime2.jsx)("rect", { x: "1", y: "1", width: "8", height: "8", rx: "1.5", stroke: "currentColor", opacity: "0.4" }), (0, import_jsx_runtime2.jsx)("rect", { x: "5", y: "5", width: "8", height: "8", rx: "1.5", stroke: "currentColor", opacity: "0.4" }), (0, import_jsx_runtime2.jsx)("rect", { x: "5", y: "5", width: "4", height: "4", fill: "currentColor", opacity: "0.6" })] });
4604
+ }
4605
+ function TrashIcon() {
4606
+ return (0, import_jsx_runtime2.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "1.3", strokeLinecap: "round", strokeLinejoin: "round", children: (0, import_jsx_runtime2.jsx)("path", { d: "M2.5 4h9M5.5 4V2.5h3V4M3.5 4l.5 8h6l.5-8" }) });
4607
+ }
4608
+ function DownloadIcon() {
4609
+ return (0, import_jsx_runtime2.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "1.3", strokeLinecap: "round", strokeLinejoin: "round", children: (0, import_jsx_runtime2.jsx)("path", { d: "M7 2v7M4.5 6.5L7 9l2.5-2.5M2.5 11.5h9" }) });
4610
+ }
4611
+ var BOOLEAN_OPS = [
4612
+ { op: null, icon: PencilIcon, label: "Edit", title: "Draw new features" },
4613
+ { op: "difference", icon: SubtractIcon, label: "Sub", title: "Subtract from selection" },
4614
+ { op: "union", icon: UnionIcon, label: "Union", title: "Union with selection" },
4615
+ { op: "intersection", icon: IntersectIcon, label: "Sect", title: "Intersect with selection" }
4616
+ ];
4617
+ var _EditorToolbarWidget = class extends import_core5.Widget {
4618
+ placement = "bottom-left";
4619
+ className = "deck-widget-editor-toolbar";
4620
+ deck = null;
4621
+ appliedCustomClassName = null;
4622
+ constructor(props = {}) {
4623
+ super({ ..._EditorToolbarWidget.defaultProps, ...props });
4624
+ this.placement = props.placement ?? _EditorToolbarWidget.defaultProps.placement;
4625
+ }
4626
+ setProps(props) {
4627
+ if (props.placement !== void 0) {
4628
+ this.placement = props.placement;
4629
+ }
4630
+ super.setProps(props);
4631
+ this.renderToolbar();
4632
+ }
4633
+ onAdd({ deck }) {
4634
+ this.deck = deck;
4635
+ }
4636
+ onRemove() {
4637
+ this.deck = null;
4638
+ const root = this.rootElement;
4639
+ if (root) {
4640
+ (0, import_preact2.render)(null, root);
4641
+ }
4642
+ this.rootElement = null;
4643
+ }
4644
+ onRenderHTML(rootElement) {
4645
+ const style = { ...ROOT_STYLE2, ...this.props.style };
4646
+ Object.assign(rootElement.style, style);
4647
+ if (this.appliedCustomClassName && this.appliedCustomClassName !== this.props.className) {
4648
+ rootElement.classList.remove(this.appliedCustomClassName);
4649
+ this.appliedCustomClassName = null;
4650
+ }
4651
+ if (this.props.className) {
4652
+ rootElement.classList.add(this.props.className);
4653
+ this.appliedCustomClassName = this.props.className;
4654
+ }
4655
+ rootElement.classList.add(this.className);
4656
+ this.renderToolbar();
4657
+ }
4658
+ renderToolbar() {
4659
+ const root = this.rootElement;
4660
+ if (!root) {
4661
+ return;
4662
+ }
4663
+ const booleanOp = this.props.booleanOperation ?? null;
4664
+ const featureCount = this.props.featureCount ?? 0;
4665
+ const stopEvent = (event) => {
4666
+ event.stopPropagation();
4667
+ if (typeof event.stopImmediatePropagation === "function") {
4668
+ event.stopImmediatePropagation();
4669
+ }
4670
+ };
4671
+ const ui = (0, import_jsx_runtime2.jsxs)("div", { style: TRAY_STYLE, onPointerDown: stopEvent, onPointerMove: stopEvent, onPointerUp: stopEvent, onMouseDown: stopEvent, onMouseMove: stopEvent, onMouseUp: stopEvent, onTouchStart: stopEvent, onTouchMove: stopEvent, onTouchEnd: stopEvent, children: [BOOLEAN_OPS.map(({ op, icon: Icon, label, title }) => {
4672
+ const active = booleanOp === op;
4673
+ return (0, import_jsx_runtime2.jsxs)("button", { type: "button", title, "aria-pressed": active, style: { ...BUTTON_STYLE, ...active ? BUTTON_ACTIVE_STYLE2 : {} }, onClick: (event) => {
4674
+ var _a, _b;
4675
+ stopEvent(event);
4676
+ (_b = (_a = this.props).onSetBooleanOperation) == null ? void 0 : _b.call(_a, op);
4677
+ }, children: [(0, import_jsx_runtime2.jsx)(Icon, {}), (0, import_jsx_runtime2.jsx)("span", { children: label })] }, label);
4678
+ }), (0, import_jsx_runtime2.jsx)("div", { style: DIVIDER_STYLE }), (0, import_jsx_runtime2.jsx)("button", { type: "button", title: "Clear all features", style: BUTTON_STYLE, onClick: (event) => {
4679
+ var _a, _b;
4680
+ stopEvent(event);
4681
+ (_b = (_a = this.props).onClear) == null ? void 0 : _b.call(_a);
4682
+ }, children: (0, import_jsx_runtime2.jsx)(TrashIcon, {}) }), (0, import_jsx_runtime2.jsx)("button", { type: "button", title: "Download as GeoJSON", style: BUTTON_STYLE, onClick: (event) => {
4683
+ var _a, _b;
4684
+ stopEvent(event);
4685
+ (_b = (_a = this.props).onExport) == null ? void 0 : _b.call(_a);
4686
+ }, children: (0, import_jsx_runtime2.jsx)(DownloadIcon, {}) }), (0, import_jsx_runtime2.jsx)("div", { style: DIVIDER_STYLE }), (0, import_jsx_runtime2.jsxs)("span", { style: BADGE_STYLE, children: [featureCount, " feature", featureCount !== 1 ? "s" : ""] })] });
4687
+ (0, import_preact2.render)(ui, root);
4688
+ }
4689
+ };
4690
+ var EditorToolbarWidget = _EditorToolbarWidget;
4691
+ __publicField(EditorToolbarWidget, "defaultProps", {
4692
+ id: "editor-toolbar",
4693
+ _container: null,
4694
+ placement: "bottom-left",
4695
+ booleanOperation: null,
4696
+ featureCount: 0,
4697
+ style: {},
4698
+ className: ""
4699
+ });
4700
+
4701
+ // dist/editable-layers/junction-scatterplot-layer.js
4702
+ var import_core6 = require("@deck.gl/core");
4703
+ var import_layers5 = require("@deck.gl/layers");
4704
+ var JunctionScatterplotLayer = class extends import_core6.CompositeLayer {
4705
+ renderLayers() {
4706
+ const { id, getFillColor, getStrokeColor, getInnerRadius, updateTriggers } = this.props;
4707
+ return [
4708
+ // the full circles
4709
+ new import_layers5.ScatterplotLayer({
4710
+ ...this.props,
4711
+ id: `${id}-full`,
4712
+ data: this.props.data,
4713
+ getLineColor: getStrokeColor,
4714
+ updateTriggers: {
4715
+ ...updateTriggers,
4716
+ getStrokeColor: updateTriggers.getStrokeColor
4717
+ }
4718
+ }),
4719
+ // the inner part
4720
+ new import_layers5.ScatterplotLayer({
4721
+ ...this.props,
4722
+ id: `${id}-inner`,
4723
+ data: this.props.data,
4724
+ getFillColor,
4725
+ getRadius: getInnerRadius,
4726
+ pickable: false,
4727
+ updateTriggers: {
4728
+ ...updateTriggers,
4729
+ getFillColor: updateTriggers.getFillColor,
4730
+ getRadius: updateTriggers.getInnerRadius
4731
+ }
4732
+ })
4733
+ ];
4734
+ }
4735
+ };
4736
+ __publicField(JunctionScatterplotLayer, "layerName", "JunctionScatterplotLayer");
4737
+ __publicField(JunctionScatterplotLayer, "defaultProps", {
4738
+ ...import_layers5.ScatterplotLayer.defaultProps,
4739
+ getFillColor: (d) => [0, 0, 0, 255],
4740
+ getStrokeColor: (d) => [255, 255, 255, 255],
4741
+ getInnerRadius: (d) => 1
4742
+ });
4743
+
5298
4744
  // dist/edit-modes/resize-circle-mode.js
5299
4745
  var import_nearest_point_on_line2 = __toESM(require("@turf/nearest-point-on-line"), 1);
5300
4746
  var import_helpers17 = require("@turf/helpers");
5301
4747
  var import_circle3 = __toESM(require("@turf/circle"), 1);
5302
- var import_distance14 = __toESM(require("@turf/distance"), 1);
4748
+ var import_distance13 = __toESM(require("@turf/distance"), 1);
5303
4749
  var import_center2 = __toESM(require("@turf/center"), 1);
5304
4750
  var ResizeCircleMode = class extends GeoJsonEditMode {
5305
4751
  _selectedEditHandle;
@@ -5319,12 +4765,7 @@ var ResizeCircleMode = class extends GeoJsonEditMode {
5319
4765
  const referencePoint = (0, import_helpers17.point)(mapCoords2);
5320
4766
  recursivelyTraverseNestedArrays2(featureAsPick.object.geometry.coordinates, [], (lineString3, prefix) => {
5321
4767
  const lineStringFeature = (0, import_helpers17.lineString)(lineString3);
5322
- const candidateIntermediatePoint = this.getNearestPoint(
5323
- // @ts-expect-error turf types too wide
5324
- lineStringFeature,
5325
- referencePoint,
5326
- props.modeConfig && props.modeConfig.viewport
5327
- );
4768
+ const candidateIntermediatePoint = this.getNearestPoint(lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport);
5328
4769
  if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) {
5329
4770
  intermediatePoint = candidateIntermediatePoint;
5330
4771
  positionIndexPrefix = prefix;
@@ -5372,7 +4813,7 @@ var ResizeCircleMode = class extends GeoJsonEditMode {
5372
4813
  const feature = this.getSelectedFeature(props);
5373
4814
  const center = (0, import_center2.default)(feature).geometry.coordinates;
5374
4815
  const numberOfSteps = Object.entries(feature.geometry.coordinates[0]).length - 1;
5375
- const radius = Math.max((0, import_distance14.default)(center, event.mapCoords), 1e-3);
4816
+ const radius = Math.max((0, import_distance13.default)(center, event.mapCoords), 1e-3);
5376
4817
  const { steps = numberOfSteps } = {};
5377
4818
  const options = { steps };
5378
4819
  const updatedFeature = (0, import_circle3.default)(center, radius, options);
@@ -5488,7 +4929,7 @@ var ExtendLineStringMode = class extends GeoJsonEditMode {
5488
4929
  };
5489
4930
 
5490
4931
  // dist/edit-modes/measure-distance-mode.js
5491
- var import_distance15 = __toESM(require("@turf/distance"), 1);
4932
+ var import_distance14 = __toESM(require("@turf/distance"), 1);
5492
4933
  var import_midpoint = __toESM(require("@turf/midpoint"), 1);
5493
4934
  var MeasureDistanceMode = class extends GeoJsonEditMode {
5494
4935
  _isMeasuringSessionFinished = false;
@@ -5496,7 +4937,7 @@ var MeasureDistanceMode = class extends GeoJsonEditMode {
5496
4937
  _currentDistance = 0;
5497
4938
  _calculateDistanceForTooltip = ({ positionA, positionB, modeConfig }) => {
5498
4939
  const { turfOptions, measurementCallback } = modeConfig || {};
5499
- const distance7 = (0, import_distance15.default)(positionA, positionB, turfOptions);
4940
+ const distance7 = (0, import_distance14.default)(positionA, positionB, turfOptions);
5500
4941
  if (measurementCallback) {
5501
4942
  measurementCallback(distance7);
5502
4943
  }