@deck.gl-community/editable-layers 9.0.0-alpha.1 → 9.0.3

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 (389) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +2 -81
  3. package/dist/constants.d.ts +1 -0
  4. package/dist/constants.d.ts.map +1 -0
  5. package/dist/constants.js +4 -1
  6. package/dist/edit-modes/composite-mode.d.ts +4 -3
  7. package/dist/edit-modes/composite-mode.d.ts.map +1 -0
  8. package/dist/edit-modes/composite-mode.js +5 -2
  9. package/dist/edit-modes/draw-90degree-polygon-mode.d.ts +4 -3
  10. package/dist/edit-modes/draw-90degree-polygon-mode.d.ts.map +1 -0
  11. package/dist/edit-modes/draw-90degree-polygon-mode.js +30 -25
  12. package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts +4 -3
  13. package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts.map +1 -0
  14. package/dist/edit-modes/draw-circle-by-diameter-mode.js +9 -6
  15. package/dist/edit-modes/draw-circle-from-center-mode.d.ts +4 -3
  16. package/dist/edit-modes/draw-circle-from-center-mode.d.ts.map +1 -0
  17. package/dist/edit-modes/draw-circle-from-center-mode.js +8 -5
  18. package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts +3 -2
  19. package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts.map +1 -0
  20. package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.js +5 -2
  21. package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts +3 -2
  22. package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts.map +1 -0
  23. package/dist/edit-modes/draw-ellipse-using-three-points-mode.js +5 -2
  24. package/dist/edit-modes/draw-line-string-mode.d.ts +4 -3
  25. package/dist/edit-modes/draw-line-string-mode.d.ts.map +1 -0
  26. package/dist/edit-modes/draw-line-string-mode.js +21 -18
  27. package/dist/edit-modes/draw-point-mode.d.ts +4 -3
  28. package/dist/edit-modes/draw-point-mode.d.ts.map +1 -0
  29. package/dist/edit-modes/draw-point-mode.js +8 -5
  30. package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts +4 -3
  31. package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts.map +1 -0
  32. package/dist/edit-modes/draw-polygon-by-dragging-mode.js +12 -7
  33. package/dist/edit-modes/draw-polygon-mode.d.ts +4 -3
  34. package/dist/edit-modes/draw-polygon-mode.d.ts.map +1 -0
  35. package/dist/edit-modes/draw-polygon-mode.js +22 -18
  36. package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts +3 -2
  37. package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts.map +1 -0
  38. package/dist/edit-modes/draw-rectangle-from-center-mode.js +4 -1
  39. package/dist/edit-modes/draw-rectangle-mode.d.ts +3 -2
  40. package/dist/edit-modes/draw-rectangle-mode.d.ts.map +1 -0
  41. package/dist/edit-modes/draw-rectangle-mode.js +4 -1
  42. package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts +3 -2
  43. package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts.map +1 -0
  44. package/dist/edit-modes/draw-rectangle-using-three-points-mode.js +10 -7
  45. package/dist/edit-modes/draw-square-from-center-mode.d.ts +3 -2
  46. package/dist/edit-modes/draw-square-from-center-mode.d.ts.map +1 -0
  47. package/dist/edit-modes/draw-square-from-center-mode.js +4 -1
  48. package/dist/edit-modes/draw-square-mode.d.ts +3 -2
  49. package/dist/edit-modes/draw-square-mode.d.ts.map +1 -0
  50. package/dist/edit-modes/draw-square-mode.js +4 -1
  51. package/dist/edit-modes/duplicate-mode.d.ts +4 -3
  52. package/dist/edit-modes/duplicate-mode.d.ts.map +1 -0
  53. package/dist/edit-modes/duplicate-mode.js +4 -1
  54. package/dist/edit-modes/edit-mode.d.ts +2 -1
  55. package/dist/edit-modes/edit-mode.d.ts.map +1 -0
  56. package/dist/edit-modes/edit-mode.js +3 -1
  57. package/dist/edit-modes/elevation-mode.d.ts +5 -4
  58. package/dist/edit-modes/elevation-mode.d.ts.map +1 -0
  59. package/dist/edit-modes/elevation-mode.js +10 -7
  60. package/dist/edit-modes/extend-line-string-mode.d.ts +4 -3
  61. package/dist/edit-modes/extend-line-string-mode.d.ts.map +1 -0
  62. package/dist/edit-modes/extend-line-string-mode.js +11 -8
  63. package/dist/edit-modes/extrude-mode.d.ts +4 -3
  64. package/dist/edit-modes/extrude-mode.d.ts.map +1 -0
  65. package/dist/edit-modes/extrude-mode.js +12 -9
  66. package/dist/edit-modes/geojson-edit-mode.d.ts +4 -3
  67. package/dist/edit-modes/geojson-edit-mode.d.ts.map +1 -0
  68. package/dist/edit-modes/geojson-edit-mode.js +20 -17
  69. package/dist/edit-modes/immutable-feature-collection.d.ts +3 -1
  70. package/dist/edit-modes/immutable-feature-collection.d.ts.map +1 -0
  71. package/dist/edit-modes/immutable-feature-collection.js +25 -20
  72. package/dist/edit-modes/measure-angle-mode.d.ts +4 -3
  73. package/dist/edit-modes/measure-angle-mode.d.ts.map +1 -0
  74. package/dist/edit-modes/measure-angle-mode.js +9 -9
  75. package/dist/edit-modes/measure-area-mode.d.ts +4 -3
  76. package/dist/edit-modes/measure-area-mode.d.ts.map +1 -0
  77. package/dist/edit-modes/measure-area-mode.js +8 -6
  78. package/dist/edit-modes/measure-distance-mode.d.ts +4 -3
  79. package/dist/edit-modes/measure-distance-mode.d.ts.map +1 -0
  80. package/dist/edit-modes/measure-distance-mode.js +19 -16
  81. package/dist/edit-modes/modify-mode.d.ts +5 -4
  82. package/dist/edit-modes/modify-mode.d.ts.map +1 -0
  83. package/dist/edit-modes/modify-mode.js +19 -16
  84. package/dist/edit-modes/resize-circle-mode.d.ts +6 -5
  85. package/dist/edit-modes/resize-circle-mode.d.ts.map +1 -0
  86. package/dist/edit-modes/resize-circle-mode.js +6 -4
  87. package/dist/edit-modes/rotate-mode.d.ts +4 -3
  88. package/dist/edit-modes/rotate-mode.d.ts.map +1 -0
  89. package/dist/edit-modes/rotate-mode.js +11 -8
  90. package/dist/edit-modes/scale-mode.d.ts +4 -3
  91. package/dist/edit-modes/scale-mode.d.ts.map +1 -0
  92. package/dist/edit-modes/scale-mode.js +11 -8
  93. package/dist/edit-modes/snappable-mode.d.ts +4 -3
  94. package/dist/edit-modes/snappable-mode.d.ts.map +1 -0
  95. package/dist/edit-modes/snappable-mode.js +9 -6
  96. package/dist/edit-modes/split-polygon-mode.d.ts +4 -3
  97. package/dist/edit-modes/split-polygon-mode.d.ts.map +1 -0
  98. package/dist/edit-modes/split-polygon-mode.js +15 -12
  99. package/dist/edit-modes/three-click-polygon-mode.d.ts +4 -3
  100. package/dist/edit-modes/three-click-polygon-mode.d.ts.map +1 -0
  101. package/dist/edit-modes/three-click-polygon-mode.js +10 -7
  102. package/dist/edit-modes/transform-mode.d.ts +4 -3
  103. package/dist/edit-modes/transform-mode.d.ts.map +1 -0
  104. package/dist/edit-modes/transform-mode.js +8 -5
  105. package/dist/edit-modes/translate-mode.d.ts +4 -3
  106. package/dist/edit-modes/translate-mode.d.ts.map +1 -0
  107. package/dist/edit-modes/translate-mode.js +10 -7
  108. package/dist/edit-modes/two-click-polygon-mode.d.ts +4 -3
  109. package/dist/edit-modes/two-click-polygon-mode.d.ts.map +1 -0
  110. package/dist/edit-modes/two-click-polygon-mode.js +10 -7
  111. package/dist/edit-modes/types.d.ts +2 -1
  112. package/dist/edit-modes/types.d.ts.map +1 -0
  113. package/dist/edit-modes/types.js +3 -0
  114. package/dist/edit-modes/utils.d.ts +3 -2
  115. package/dist/edit-modes/utils.d.ts.map +1 -0
  116. package/dist/edit-modes/utils.js +22 -19
  117. package/dist/edit-modes/view-mode.d.ts +2 -1
  118. package/dist/edit-modes/view-mode.d.ts.map +1 -0
  119. package/dist/edit-modes/view-mode.js +4 -1
  120. package/dist/editable-layers/editable-geojson-layer.d.ts +7 -6
  121. package/dist/editable-layers/editable-geojson-layer.d.ts.map +1 -0
  122. package/dist/editable-layers/editable-geojson-layer.js +53 -52
  123. package/dist/editable-layers/editable-h3-cluster-layer.d.ts +3 -2
  124. package/dist/editable-layers/editable-h3-cluster-layer.d.ts.map +1 -0
  125. package/dist/editable-layers/editable-h3-cluster-layer.js +8 -5
  126. package/dist/editable-layers/editable-layer.d.ts +7 -6
  127. package/dist/editable-layers/editable-layer.d.ts.map +1 -0
  128. package/dist/editable-layers/editable-layer.js +18 -15
  129. package/dist/editable-layers/editable-path-layer.d.ts +2 -1
  130. package/dist/editable-layers/editable-path-layer.d.ts.map +1 -0
  131. package/dist/editable-layers/editable-path-layer.js +10 -7
  132. package/dist/editable-layers/elevated-edit-handle-layer.d.ts +2 -1
  133. package/dist/editable-layers/elevated-edit-handle-layer.d.ts.map +1 -0
  134. package/dist/editable-layers/elevated-edit-handle-layer.js +6 -3
  135. package/dist/editable-layers/junction-scatterplot-layer.d.ts +3 -2
  136. package/dist/editable-layers/junction-scatterplot-layer.d.ts.map +1 -0
  137. package/dist/editable-layers/junction-scatterplot-layer.js +10 -7
  138. package/dist/editable-layers/selection-layer.d.ts +2 -1
  139. package/dist/editable-layers/selection-layer.d.ts.map +1 -0
  140. package/dist/editable-layers/selection-layer.js +8 -5
  141. package/dist/index.cjs +70 -542
  142. package/dist/index.cjs.map +4 -4
  143. package/dist/index.d.ts +59 -59
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/index.js +56 -54
  146. package/dist/lib/constants.d.ts +1 -0
  147. package/dist/lib/constants.d.ts.map +1 -0
  148. package/dist/lib/constants.js +3 -0
  149. package/dist/lib/deck-renderer/deck-cache.d.ts +2 -1
  150. package/dist/lib/deck-renderer/deck-cache.d.ts.map +1 -0
  151. package/dist/lib/deck-renderer/deck-cache.js +1 -1
  152. package/dist/lib/deck-renderer/deck-drawer.d.ts +3 -3
  153. package/dist/lib/deck-renderer/deck-drawer.d.ts.map +1 -0
  154. package/dist/lib/deck-renderer/deck-drawer.js +12 -12
  155. package/dist/lib/feature.d.ts +5 -4
  156. package/dist/lib/feature.d.ts.map +1 -0
  157. package/dist/lib/feature.js +4 -1
  158. package/dist/lib/layer-mouse-event.d.ts +3 -2
  159. package/dist/lib/layer-mouse-event.d.ts.map +1 -0
  160. package/dist/lib/layer-mouse-event.js +4 -1
  161. package/dist/lib/layers/junctions-layer.d.ts +5 -4
  162. package/dist/lib/layers/junctions-layer.d.ts.map +1 -0
  163. package/dist/lib/layers/junctions-layer.js +10 -7
  164. package/dist/lib/layers/segments-layer.d.ts +5 -4
  165. package/dist/lib/layers/segments-layer.d.ts.map +1 -0
  166. package/dist/lib/layers/segments-layer.js +12 -9
  167. package/dist/lib/layers/texts-layer.d.ts +4 -3
  168. package/dist/lib/layers/texts-layer.d.ts.map +1 -0
  169. package/dist/lib/layers/texts-layer.js +9 -6
  170. package/dist/lib/math.d.ts +2 -1
  171. package/dist/lib/math.d.ts.map +1 -0
  172. package/dist/lib/math.js +3 -0
  173. package/dist/lib/{nebula.d.ts → nebula-core.d.ts} +3 -2
  174. package/dist/lib/nebula-core.d.ts.map +1 -0
  175. package/dist/lib/{nebula.js → nebula-core.js} +7 -4
  176. package/dist/lib/nebula-layer.d.ts +3 -2
  177. package/dist/lib/nebula-layer.d.ts.map +1 -0
  178. package/dist/lib/nebula-layer.js +4 -1
  179. package/dist/lib/style.d.ts +1 -0
  180. package/dist/lib/style.d.ts.map +1 -0
  181. package/dist/lib/style.js +5 -2
  182. package/dist/mode-handlers/composite-mode-handler.d.ts +4 -3
  183. package/dist/mode-handlers/composite-mode-handler.d.ts.map +1 -0
  184. package/dist/mode-handlers/composite-mode-handler.js +1 -1
  185. package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts +4 -3
  186. package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts.map +1 -0
  187. package/dist/mode-handlers/draw-90degree-polygon-handler.js +13 -10
  188. package/dist/mode-handlers/draw-circle-by-bounding-box-handler.d.ts +4 -3
  189. package/dist/mode-handlers/draw-circle-by-bounding-box-handler.d.ts.map +1 -0
  190. package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js +5 -2
  191. package/dist/mode-handlers/draw-circle-from-center-handler.d.ts +4 -3
  192. package/dist/mode-handlers/draw-circle-from-center-handler.d.ts.map +1 -0
  193. package/dist/mode-handlers/draw-circle-from-center-handler.js +4 -1
  194. package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts +4 -3
  195. package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts.map +1 -0
  196. package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js +5 -2
  197. package/dist/mode-handlers/draw-ellipse-using-three-points-handler.d.ts +4 -3
  198. package/dist/mode-handlers/draw-ellipse-using-three-points-handler.d.ts.map +1 -0
  199. package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js +7 -4
  200. package/dist/mode-handlers/draw-line-string-handler.d.ts +3 -2
  201. package/dist/mode-handlers/draw-line-string-handler.d.ts.map +1 -0
  202. package/dist/mode-handlers/draw-line-string-handler.js +8 -5
  203. package/dist/mode-handlers/draw-point-handler.d.ts +3 -2
  204. package/dist/mode-handlers/draw-point-handler.d.ts.map +1 -0
  205. package/dist/mode-handlers/draw-point-handler.js +5 -2
  206. package/dist/mode-handlers/draw-polygon-handler.d.ts +4 -3
  207. package/dist/mode-handlers/draw-polygon-handler.d.ts.map +1 -0
  208. package/dist/mode-handlers/draw-polygon-handler.js +10 -7
  209. package/dist/mode-handlers/draw-rectangle-handler.d.ts +4 -3
  210. package/dist/mode-handlers/draw-rectangle-handler.d.ts.map +1 -0
  211. package/dist/mode-handlers/draw-rectangle-handler.js +4 -1
  212. package/dist/mode-handlers/draw-rectangle-using-three-points-handler.d.ts +4 -3
  213. package/dist/mode-handlers/draw-rectangle-using-three-points-handler.d.ts.map +1 -0
  214. package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js +12 -9
  215. package/dist/mode-handlers/duplicate-handler.d.ts +4 -3
  216. package/dist/mode-handlers/duplicate-handler.d.ts.map +1 -0
  217. package/dist/mode-handlers/duplicate-handler.js +4 -1
  218. package/dist/mode-handlers/elevation-handler.d.ts +6 -5
  219. package/dist/mode-handlers/elevation-handler.d.ts.map +1 -0
  220. package/dist/mode-handlers/elevation-handler.js +10 -7
  221. package/dist/mode-handlers/extrude-handler.d.ts +4 -3
  222. package/dist/mode-handlers/extrude-handler.d.ts.map +1 -0
  223. package/dist/mode-handlers/extrude-handler.js +12 -9
  224. package/dist/mode-handlers/mode-handler.d.ts +4 -3
  225. package/dist/mode-handlers/mode-handler.d.ts.map +1 -0
  226. package/dist/mode-handlers/mode-handler.js +18 -15
  227. package/dist/mode-handlers/modify-handler.d.ts +5 -4
  228. package/dist/mode-handlers/modify-handler.d.ts.map +1 -0
  229. package/dist/mode-handlers/modify-handler.js +18 -15
  230. package/dist/mode-handlers/rotate-handler.d.ts +4 -3
  231. package/dist/mode-handlers/rotate-handler.d.ts.map +1 -0
  232. package/dist/mode-handlers/rotate-handler.js +5 -2
  233. package/dist/mode-handlers/scale-handler.d.ts +4 -3
  234. package/dist/mode-handlers/scale-handler.d.ts.map +1 -0
  235. package/dist/mode-handlers/scale-handler.js +6 -3
  236. package/dist/mode-handlers/snappable-handler.d.ts +4 -3
  237. package/dist/mode-handlers/snappable-handler.d.ts.map +1 -0
  238. package/dist/mode-handlers/snappable-handler.js +6 -3
  239. package/dist/mode-handlers/split-polygon-handler.d.ts +3 -2
  240. package/dist/mode-handlers/split-polygon-handler.d.ts.map +1 -0
  241. package/dist/mode-handlers/split-polygon-handler.js +12 -9
  242. package/dist/mode-handlers/three-click-polygon-handler.d.ts +3 -2
  243. package/dist/mode-handlers/three-click-polygon-handler.d.ts.map +1 -0
  244. package/dist/mode-handlers/three-click-polygon-handler.js +4 -1
  245. package/dist/mode-handlers/translate-handler.d.ts +4 -3
  246. package/dist/mode-handlers/translate-handler.d.ts.map +1 -0
  247. package/dist/mode-handlers/translate-handler.js +5 -2
  248. package/dist/mode-handlers/two-click-polygon-handler.d.ts +3 -2
  249. package/dist/mode-handlers/two-click-polygon-handler.d.ts.map +1 -0
  250. package/dist/mode-handlers/two-click-polygon-handler.js +4 -1
  251. package/dist/mode-handlers/view-handler.d.ts +3 -2
  252. package/dist/mode-handlers/view-handler.d.ts.map +1 -0
  253. package/dist/mode-handlers/view-handler.js +4 -1
  254. package/dist/shaderlib/color/color.d.ts +8 -6
  255. package/dist/shaderlib/color/color.d.ts.map +1 -0
  256. package/dist/shaderlib/color/color.js +7 -4
  257. package/dist/shaderlib/utils/utils.d.ts +3 -2
  258. package/dist/shaderlib/utils/utils.d.ts.map +1 -0
  259. package/dist/shaderlib/utils/utils.js +5 -2
  260. package/dist/{curve-utils.d.ts → utils/curve-utils.d.ts} +1 -0
  261. package/dist/utils/curve-utils.d.ts.map +1 -0
  262. package/dist/{curve-utils.js → utils/curve-utils.js} +7 -4
  263. package/dist/{geojson-types.d.ts → utils/geojson-types.d.ts} +3 -25
  264. package/dist/utils/geojson-types.d.ts.map +1 -0
  265. package/dist/utils/geojson-types.js +4 -0
  266. package/dist/{memoize.d.ts → utils/memoize.d.ts} +2 -1
  267. package/dist/utils/memoize.d.ts.map +1 -0
  268. package/dist/{memoize.js → utils/memoize.js} +4 -1
  269. package/dist/{translateFromCenter.d.ts → utils/translate-from-center.d.ts} +1 -0
  270. package/dist/utils/translate-from-center.d.ts.map +1 -0
  271. package/dist/{translateFromCenter.js → utils/translate-from-center.js} +7 -4
  272. package/dist/{types.d.ts → utils/types.d.ts} +1 -0
  273. package/dist/utils/types.d.ts.map +1 -0
  274. package/dist/utils/types.js +4 -0
  275. package/dist/{utils.d.ts → utils/utils.d.ts} +5 -4
  276. package/dist/utils/utils.d.ts.map +1 -0
  277. package/dist/{utils.js → utils/utils.js} +11 -9
  278. package/package.json +11 -10
  279. package/src/constants.ts +5 -1
  280. package/src/edit-modes/composite-mode.ts +9 -5
  281. package/src/edit-modes/draw-90degree-polygon-mode.ts +38 -34
  282. package/src/edit-modes/draw-circle-by-diameter-mode.ts +16 -12
  283. package/src/edit-modes/draw-circle-from-center-mode.ts +15 -11
  284. package/src/edit-modes/draw-ellipse-by-bounding-box-mode.ts +8 -4
  285. package/src/edit-modes/draw-ellipse-using-three-points-mode.ts +9 -5
  286. package/src/edit-modes/draw-line-string-mode.ts +29 -25
  287. package/src/edit-modes/draw-point-mode.ts +13 -9
  288. package/src/edit-modes/draw-polygon-by-dragging-mode.ts +16 -16
  289. package/src/edit-modes/draw-polygon-mode.ts +28 -23
  290. package/src/edit-modes/draw-rectangle-from-center-mode.ts +6 -2
  291. package/src/edit-modes/draw-rectangle-mode.ts +6 -2
  292. package/src/edit-modes/draw-rectangle-using-three-points-mode.ts +12 -8
  293. package/src/edit-modes/draw-square-from-center-mode.ts +7 -3
  294. package/src/edit-modes/draw-square-mode.ts +7 -3
  295. package/src/edit-modes/duplicate-mode.ts +7 -3
  296. package/src/edit-modes/edit-mode.ts +5 -1
  297. package/src/edit-modes/elevation-mode.ts +13 -9
  298. package/src/edit-modes/extend-line-string-mode.ts +16 -12
  299. package/src/edit-modes/extrude-mode.ts +22 -18
  300. package/src/edit-modes/geojson-edit-mode.ts +37 -33
  301. package/src/edit-modes/immutable-feature-collection.ts +28 -22
  302. package/src/edit-modes/measure-angle-mode.ts +66 -59
  303. package/src/edit-modes/measure-area-mode.ts +13 -10
  304. package/src/edit-modes/measure-distance-mode.ts +37 -33
  305. package/src/edit-modes/modify-mode.ts +36 -32
  306. package/src/edit-modes/resize-circle-mode.ts +8 -5
  307. package/src/edit-modes/rotate-mode.ts +22 -18
  308. package/src/edit-modes/scale-mode.ts +29 -23
  309. package/src/edit-modes/snappable-mode.ts +19 -15
  310. package/src/edit-modes/split-polygon-mode.ts +25 -21
  311. package/src/edit-modes/three-click-polygon-mode.ts +15 -11
  312. package/src/edit-modes/transform-mode.ts +15 -11
  313. package/src/edit-modes/translate-mode.ts +15 -11
  314. package/src/edit-modes/two-click-polygon-mode.ts +15 -11
  315. package/src/edit-modes/types.ts +5 -1
  316. package/src/edit-modes/utils.ts +35 -30
  317. package/src/edit-modes/view-mode.ts +5 -1
  318. package/src/editable-layers/editable-geojson-layer.ts +44 -41
  319. package/src/editable-layers/editable-h3-cluster-layer.ts +17 -14
  320. package/src/editable-layers/editable-layer.ts +42 -32
  321. package/src/editable-layers/editable-path-layer.ts +12 -8
  322. package/src/editable-layers/elevated-edit-handle-layer.ts +11 -7
  323. package/src/editable-layers/junction-scatterplot-layer.ts +15 -11
  324. package/src/editable-layers/selection-layer.ts +11 -7
  325. package/src/index.ts +68 -65
  326. package/src/lib/constants.ts +4 -0
  327. package/src/lib/deck-renderer/deck-cache.ts +1 -1
  328. package/src/lib/deck-renderer/deck-drawer.ts +28 -28
  329. package/src/lib/feature.ts +7 -3
  330. package/src/lib/layer-mouse-event.ts +7 -6
  331. package/src/lib/layers/junctions-layer.ts +14 -10
  332. package/src/lib/layers/segments-layer.ts +24 -20
  333. package/src/lib/layers/texts-layer.ts +18 -14
  334. package/src/lib/math.ts +5 -1
  335. package/src/lib/{nebula.ts → nebula-core.ts} +8 -4
  336. package/src/lib/nebula-layer.ts +9 -5
  337. package/src/lib/style.ts +6 -2
  338. package/src/mode-handlers/composite-mode-handler.ts +6 -6
  339. package/src/mode-handlers/draw-90degree-polygon-handler.ts +22 -18
  340. package/src/mode-handlers/draw-circle-by-bounding-box-handler.ts +10 -6
  341. package/src/mode-handlers/draw-circle-from-center-handler.ts +10 -6
  342. package/src/mode-handlers/draw-ellipse-by-bounding-box-handler.ts +9 -5
  343. package/src/mode-handlers/draw-ellipse-using-three-points-handler.ts +12 -8
  344. package/src/mode-handlers/draw-line-string-handler.ts +12 -8
  345. package/src/mode-handlers/draw-point-handler.ts +9 -5
  346. package/src/mode-handlers/draw-polygon-handler.ts +16 -12
  347. package/src/mode-handlers/draw-rectangle-handler.ts +8 -4
  348. package/src/mode-handlers/draw-rectangle-using-three-points-handler.ts +17 -13
  349. package/src/mode-handlers/duplicate-handler.ts +8 -4
  350. package/src/mode-handlers/elevation-handler.ts +14 -10
  351. package/src/mode-handlers/extrude-handler.ts +15 -11
  352. package/src/mode-handlers/mode-handler.ts +26 -28
  353. package/src/mode-handlers/modify-handler.ts +29 -25
  354. package/src/mode-handlers/rotate-handler.ts +13 -17
  355. package/src/mode-handlers/scale-handler.ts +13 -13
  356. package/src/mode-handlers/snappable-handler.ts +28 -24
  357. package/src/mode-handlers/split-polygon-handler.ts +22 -18
  358. package/src/mode-handlers/three-click-polygon-handler.ts +6 -2
  359. package/src/mode-handlers/translate-handler.ts +12 -8
  360. package/src/mode-handlers/two-click-polygon-handler.ts +6 -2
  361. package/src/mode-handlers/view-handler.ts +7 -3
  362. package/src/shaderlib/color/color.ts +10 -5
  363. package/src/shaderlib/utils/utils.ts +6 -2
  364. package/src/{curve-utils.ts → utils/curve-utils.ts} +11 -7
  365. package/src/{geojson-types.ts → utils/geojson-types.ts} +16 -31
  366. package/src/{memoize.ts → utils/memoize.ts} +5 -1
  367. package/src/{translateFromCenter.ts → utils/translate-from-center.ts} +12 -8
  368. package/src/{types.ts → utils/types.ts} +4 -0
  369. package/src/{utils.ts → utils/utils.ts} +17 -14
  370. package/dist/editable-layers/path-marker-layer/arrow-2d-geometry.d.ts +0 -4
  371. package/dist/editable-layers/path-marker-layer/arrow-2d-geometry.js +0 -55
  372. package/dist/editable-layers/path-marker-layer/create-path-markers.d.ts +0 -16
  373. package/dist/editable-layers/path-marker-layer/create-path-markers.js +0 -75
  374. package/dist/editable-layers/path-marker-layer/path-marker-layer.d.ts +0 -40
  375. package/dist/editable-layers/path-marker-layer/path-marker-layer.js +0 -121
  376. package/dist/editable-layers/path-marker-layer/polyline.d.ts +0 -18
  377. package/dist/editable-layers/path-marker-layer/polyline.js +0 -37
  378. package/dist/editable-layers/path-outline-layer/path-outline-layer.d.ts +0 -26
  379. package/dist/editable-layers/path-outline-layer/path-outline-layer.js +0 -106
  380. package/dist/geojson-types.js +0 -2
  381. package/dist/shaderlib/outline/outline.d.ts +0 -8
  382. package/dist/shaderlib/outline/outline.js +0 -97
  383. package/dist/types.js +0 -1
  384. package/src/editable-layers/path-marker-layer/arrow-2d-geometry.ts +0 -61
  385. package/src/editable-layers/path-marker-layer/create-path-markers.ts +0 -107
  386. package/src/editable-layers/path-marker-layer/path-marker-layer.ts +0 -179
  387. package/src/editable-layers/path-marker-layer/polyline.ts +0 -40
  388. package/src/editable-layers/path-outline-layer/path-outline-layer.ts +0 -147
  389. package/src/shaderlib/outline/outline.ts +0 -101
package/dist/index.cjs CHANGED
@@ -69,11 +69,9 @@ __export(dist_exports, {
69
69
  MeasureAreaMode: () => MeasureAreaMode,
70
70
  MeasureDistanceMode: () => MeasureDistanceMode,
71
71
  ModifyMode: () => ModifyMode,
72
- NebulaCore: () => Nebula,
72
+ NebulaCore: () => NebulaCore,
73
73
  NebulaLayer: () => NebulaLayer,
74
74
  PROJECTED_PIXEL_SIZE_MULTIPLIER: () => PROJECTED_PIXEL_SIZE_MULTIPLIER,
75
- PathMarkerLayer: () => PathMarkerLayer,
76
- PathOutlineLayer: () => PathOutlineLayer,
77
75
  ResizeCircleMode: () => ResizeCircleMode,
78
76
  RotateMode: () => RotateMode,
79
77
  SELECTION_TYPE: () => SELECTION_TYPE,
@@ -87,6 +85,8 @@ __export(dist_exports, {
87
85
  TranslateMode: () => TranslateMode,
88
86
  ViewMode: () => ViewMode,
89
87
  _memoize: () => memoize,
88
+ getEditHandlesForGeometry: () => getEditHandlesForGeometry,
89
+ getPickedEditHandle: () => getPickedEditHandle,
90
90
  toDeckColor: () => toDeckColor,
91
91
  utils: () => utils_exports
92
92
  });
@@ -388,7 +388,7 @@ var NebulaLayer = class extends import_eventemitter3.EventEmitter {
388
388
  }
389
389
  };
390
390
 
391
- // dist/utils.js
391
+ // dist/utils/utils.js
392
392
  var utils_exports = {};
393
393
  __export(utils_exports, {
394
394
  distance2d: () => distance2d,
@@ -481,7 +481,6 @@ function nearestPointOnProjectedLine(line, inPoint, viewport) {
481
481
  type: "Feature",
482
482
  geometry: {
483
483
  type: "Point",
484
- // @ts-expect-error Position type diff
485
484
  coordinates: wmViewport.unproject([x0, y0, z0])
486
485
  },
487
486
  properties: {
@@ -491,8 +490,8 @@ function nearestPointOnProjectedLine(line, inPoint, viewport) {
491
490
  }
492
491
  };
493
492
  }
494
- function insertBefore(base, insertBefore2, toInsert) {
495
- const at = base.indexOf(insertBefore2);
493
+ function insertBefore(base, insertBeforeText, toInsert) {
494
+ const at = base.indexOf(insertBeforeText);
496
495
  if (at < 0) {
497
496
  return base;
498
497
  }
@@ -620,7 +619,7 @@ var JunctionsLayer = class extends NebulaLayer {
620
619
  depthCompare: "always"
621
620
  },
622
621
  updateTriggers: { all: updateTrigger },
623
- // @ts-ignore
622
+ // @ts-expect-error TODO
624
623
  nebulaLayer: this
625
624
  });
626
625
  }
@@ -661,484 +660,8 @@ var TextsLayer = class extends NebulaLayer {
661
660
  }
662
661
  };
663
662
 
664
- // dist/editable-layers/path-marker-layer/path-marker-layer.js
665
- var import_core4 = require("@deck.gl/core");
666
- var import_layers5 = require("@deck.gl/layers");
667
- var import_mesh_layers = require("@deck.gl/mesh-layers");
668
-
669
- // dist/editable-layers/path-outline-layer/path-outline-layer.js
670
- var import_layers4 = require("@deck.gl/layers");
671
- var import_constants2 = require("@luma.gl/constants");
672
-
673
- // dist/shaderlib/outline/outline.js
674
- var INITIAL_STATE = {
675
- outlineEnabled: false,
676
- outlineRenderShadowmap: false,
677
- outlineShadowmap: null
678
- };
679
- function getUniforms({ outlineEnabled, outlineRenderShadowmap, outlineShadowmap } = INITIAL_STATE) {
680
- const uniforms = {};
681
- if (outlineEnabled !== void 0) {
682
- uniforms.outline_uEnabled = outlineEnabled;
683
- }
684
- if (outlineRenderShadowmap !== void 0) {
685
- uniforms.outline_uRenderOutlines = outlineRenderShadowmap;
686
- }
687
- if (outlineShadowmap !== void 0) {
688
- uniforms.outline_uShadowmap = outlineShadowmap;
689
- }
690
- return uniforms;
691
- }
692
- var vs = `#version 300 es
693
- in float instanceZLevel;
694
- out float outline_vzLevel;
695
- out vec4 outline_vPosition;
696
-
697
- // Set the z level for the outline shadowmap rendering
698
- void outline_setZLevel(float zLevel) {
699
- outline_vzLevel = zLevel;
700
- }
701
-
702
- // Store an adjusted position for texture2DProj
703
- void outline_setUV(vec4 position) {
704
- // mat4(
705
- // 0.5, 0.0, 0.0, 0.0,
706
- // 0.0, 0.5, 0.0, 0.0,
707
- // 0.0, 0.0, 0.5, 0.0,
708
- // 0.5, 0.5, 0.5, 1.0
709
- // ) * position;
710
- outline_vPosition = vec4(position.xyz * 0.5 + position.w * 0.5, position.w);
711
- }
712
- `;
713
- var fs = `uniform bool outline_uEnabled;
714
- uniform bool outline_uRenderOutlines;
715
- uniform sampler2D outline_uShadowmap;
716
-
717
- in float outline_vzLevel;
718
- // in vec2 outline_vUV;
719
- in vec4 outline_vPosition;
720
-
721
- out vec4 fragColor;
722
-
723
- const float OUTLINE_Z_LEVEL_ERROR = 0.01;
724
-
725
- // Return a darker color in shadowmap
726
- vec4 outline_filterShadowColor(vec4 color) {
727
- return vec4(outline_vzLevel / 255., outline_vzLevel / 255., outline_vzLevel / 255., 1.);
728
- }
729
-
730
- // Return a darker color if in shadowmap
731
- vec4 outline_filterDarkenColor(vec4 color) {
732
- if (outline_uEnabled) {
733
- float maxZLevel;
734
- if (outline_vPosition.q > 0.0) {
735
- maxZLevel = texture2DProj(outline_uShadowmap, outline_vPosition).r * 255.;
736
- } else {
737
- discard;
738
- }
739
- if (maxZLevel < outline_vzLevel + OUTLINE_Z_LEVEL_ERROR) {
740
- vec4(color.rgb * 0.5, color.a);
741
- } else {
742
- discard;
743
- }
744
- }
745
- return color;
746
- }
747
-
748
- // if enabled and rendering outlines - Render depth to shadowmap
749
- // if enabled and rendering colors - Return a darker color if in shadowmap
750
- // if disabled, just return color
751
- vec4 outline_filterColor(vec4 color) {
752
- if (outline_uEnabled) {
753
- return outline_uRenderOutlines ?
754
- outline_filterShadowColor(color) :
755
- outline_filterDarkenColor(color);
756
- }
757
- return color;
758
- }
759
- `;
760
- var outline_default = {
761
- name: "outline",
762
- vs,
763
- fs,
764
- getUniforms
765
- };
766
-
767
- // dist/constants.js
768
- var PROJECTED_PIXEL_SIZE_MULTIPLIER2 = 2 / 3;
769
- var UNIT = {
770
- common: 0,
771
- meters: 1,
772
- pixels: 2
773
- };
774
-
775
- // dist/editable-layers/path-outline-layer/path-outline-layer.js
776
- function injectShaderCode({ source, code = "" }) {
777
- const INJECT_CODE = /}[^{}]*$/;
778
- return source.replace(INJECT_CODE, code.concat("\n}\n"));
779
- }
780
- var VS_CODE = ` outline_setUV(gl_Position);
781
- outline_setZLevel(instanceZLevel);
782
- `;
783
- var FS_CODE = ` fragColor = outline_filterColor(fragColor);
784
- `;
785
- var defaultProps = {
786
- getZLevel: () => 0
787
- };
788
- var PathOutlineLayer = class extends import_layers4.PathLayer {
789
- state = void 0;
790
- // Override getShaders to inject the outline module
791
- getShaders() {
792
- const shaders = super.getShaders();
793
- return Object.assign({}, shaders, {
794
- modules: shaders.modules.concat([outline_default]),
795
- vs: injectShaderCode({ source: shaders.vs, code: VS_CODE }),
796
- fs: injectShaderCode({ source: shaders.fs, code: FS_CODE })
797
- });
798
- }
799
- // @ts-expect-error PathLayer is missing LayerContext arg
800
- initializeState(context) {
801
- super.initializeState();
802
- this.setState({
803
- outlineFramebuffer: context.device.createFramebuffer({}),
804
- dummyTexture: context.device.createTexture({})
805
- });
806
- this.state.attributeManager.addInstanced({
807
- instanceZLevel: {
808
- size: 1,
809
- type: import_constants2.GL.UNSIGNED_BYTE,
810
- accessor: "getZLevel"
811
- }
812
- });
813
- }
814
- // Override draw to add render module
815
- draw({ moduleParameters = {}, parameters, uniforms, context }) {
816
- const { jointRounded, capRounded, billboard, miterLimit, widthUnits, widthScale, widthMinPixels, widthMaxPixels } = this.props;
817
- uniforms = Object.assign({}, uniforms, {
818
- jointType: Number(jointRounded),
819
- capType: Number(capRounded),
820
- billboard,
821
- widthUnits: UNIT[widthUnits],
822
- widthScale,
823
- miterLimit,
824
- widthMinPixels,
825
- widthMaxPixels
826
- });
827
- const { outlineFramebuffer, dummyTexture } = this.state;
828
- this.state.model.updateModuleSettings({
829
- outlineEnabled: true,
830
- outlineRenderShadowmap: true,
831
- outlineShadowmap: dummyTexture
832
- });
833
- this.state.model.draw({
834
- uniforms: Object.assign({}, uniforms, {
835
- jointType: 0,
836
- widthScale: this.props.widthScale * 1.3
837
- }),
838
- parameters: {
839
- depthTest: false,
840
- // Biggest value needs to go into buffer
841
- blendEquation: import_constants2.GL.MAX
842
- },
843
- framebuffer: outlineFramebuffer
844
- });
845
- this.state.model.updateModuleSettings({
846
- outlineEnabled: true,
847
- outlineRenderShadowmap: false,
848
- outlineShadowmap: outlineFramebuffer
849
- });
850
- this.state.model.draw({
851
- uniforms: Object.assign({}, uniforms, {
852
- jointType: Number(jointRounded),
853
- capType: Number(capRounded),
854
- widthScale: this.props.widthScale
855
- }),
856
- parameters: {
857
- depthTest: false
858
- }
859
- });
860
- }
861
- };
862
- __publicField(PathOutlineLayer, "layerName", "PathOutlineLayer");
863
- __publicField(PathOutlineLayer, "defaultProps", defaultProps);
864
-
865
- // dist/editable-layers/path-marker-layer/arrow-2d-geometry.js
866
- var import_engine = require("@luma.gl/engine");
867
- var Arrow2DGeometry = class extends import_engine.Geometry {
868
- constructor(opts = {}) {
869
- super(Object.assign({}, opts, {
870
- attributes: getArrowAttributes(opts),
871
- topology: "triangle-list"
872
- }));
873
- }
874
- };
875
- function getArrowAttributes({ length = 1, headSize = 0.2, tailWidth = 0.05, tailStart = 0.05 }) {
876
- const texCoords = [
877
- // HEAD
878
- 0.5,
879
- 1,
880
- 0,
881
- 0.5 - headSize / 2,
882
- 1 - headSize,
883
- 0,
884
- 0.5 + headSize / 2,
885
- 1 - headSize,
886
- 0,
887
- 0.5 - tailWidth / 2,
888
- tailStart,
889
- 0,
890
- 0.5 + tailWidth / 2,
891
- 1 - headSize,
892
- 0,
893
- 0.5 + tailWidth / 2,
894
- tailStart,
895
- 0,
896
- 0.5 - tailWidth / 2,
897
- tailStart,
898
- 0,
899
- 0.5 - tailWidth / 2,
900
- 1 - headSize,
901
- 0,
902
- 0.5 + tailWidth / 2,
903
- 1 - headSize,
904
- 0
905
- ];
906
- const normals = [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1];
907
- const positions = new Array(texCoords.length);
908
- for (let i = 0; i < texCoords.length / 3; i++) {
909
- const i3 = i * 3;
910
- positions[i3 + 0] = (texCoords[i3 + 0] - 0.5) * length;
911
- positions[i3 + 1] = (texCoords[i3 + 1] - 0.5) * length;
912
- positions[i3 + 2] = 0;
913
- }
914
- return {
915
- positions: { size: 3, value: new Float32Array(positions) },
916
- normals: { size: 3, value: new Float32Array(normals) },
917
- texCoords: { size: 2, value: new Float32Array(texCoords) }
918
- };
919
- }
920
-
921
- // dist/editable-layers/path-marker-layer/create-path-markers.js
922
- var import_core2 = require("@math.gl/core");
923
- function getLineLength(vPoints) {
924
- let lineLength = 0;
925
- for (let i = 0; i < vPoints.length - 1; i++) {
926
- lineLength += vPoints[i].distance(vPoints[i + 1]);
927
- }
928
- return lineLength;
929
- }
930
- var DEFAULT_COLOR = [0, 0, 0, 255];
931
- var DEFAULT_DIRECTION = { forward: true, backward: false };
932
- function createPathMarkers({ data, getPath = (x, context) => x.path, getDirection = (x) => x.direction, getColor = (x) => DEFAULT_COLOR, getMarkerPercentages = (x, info) => [0.5], projectFlat }) {
933
- const markers = [];
934
- for (const object of data) {
935
- const path = getPath(object, null);
936
- const direction = getDirection(object) || DEFAULT_DIRECTION;
937
- const color = getColor(object);
938
- const vPoints = path.map((p) => new import_core2.Vector2(p));
939
- const vPointsReverse = vPoints.slice(0).reverse();
940
- const lineLength = getLineLength(vPoints);
941
- const percentages = getMarkerPercentages(object, { lineLength });
942
- for (const percentage of percentages) {
943
- if (direction.forward) {
944
- const marker = createMarkerAlongPath({
945
- path: vPoints,
946
- percentage,
947
- lineLength,
948
- color,
949
- object,
950
- projectFlat
951
- });
952
- markers.push(marker);
953
- }
954
- if (direction.backward) {
955
- const marker = createMarkerAlongPath({
956
- path: vPointsReverse,
957
- percentage,
958
- lineLength,
959
- color,
960
- object,
961
- projectFlat
962
- });
963
- markers.push(marker);
964
- }
965
- }
966
- }
967
- return markers;
968
- }
969
- function createMarkerAlongPath({ path, percentage, lineLength, color, object, projectFlat }) {
970
- const distanceAlong = lineLength * percentage;
971
- let currentDistance = 0;
972
- let previousDistance = 0;
973
- let i = 0;
974
- for (i = 0; i < path.length - 1; i++) {
975
- currentDistance += path[i].distance(path[i + 1]);
976
- if (currentDistance > distanceAlong) {
977
- break;
978
- }
979
- previousDistance = currentDistance;
980
- }
981
- if (i === path.length - 1) {
982
- i -= 1;
983
- }
984
- const vDirection = path[i + 1].clone().subtract(path[i]).normalize();
985
- const along = distanceAlong - previousDistance;
986
- const vCenter = vDirection.clone().multiply(new import_core2.Vector2(along, along)).add(path[i]);
987
- const vDirection2 = new import_core2.Vector2(projectFlat(path[i + 1])).subtract(projectFlat(path[i]));
988
- const angle = vDirection2.verticalAngle() * 180 / Math.PI;
989
- return { position: [vCenter.x, vCenter.y, 0], angle, color, object };
990
- }
991
-
992
- // dist/editable-layers/path-marker-layer/polyline.js
993
- var import_core3 = require("@math.gl/core");
994
- function getClosestPointOnLine({ p, p1, p2, clampToLine = true }) {
995
- const lineVector = new import_core3.Vector3(p2).subtract(p1);
996
- const pointVector = new import_core3.Vector3(p).subtract(p1);
997
- let dotProduct = lineVector.dot(pointVector);
998
- if (clampToLine) {
999
- dotProduct = (0, import_core3.clamp)(dotProduct, 0, 1);
1000
- }
1001
- return lineVector.lerp(p1, p2, dotProduct);
1002
- }
1003
- function getClosestPointOnPolyline({ p, points }) {
1004
- p = new import_core3.Vector3(p);
1005
- let pClosest = null;
1006
- let distanceSquared = Infinity;
1007
- let index = -1;
1008
- for (let i = 0; i < points.length - 1; ++i) {
1009
- const p1 = points[i];
1010
- const p2 = points[i + 1];
1011
- const pClosestOnLine = getClosestPointOnLine({ p, p1, p2 });
1012
- const distanceToLineSquared = p.distanceSquared(pClosestOnLine);
1013
- if (distanceToLineSquared < distanceSquared) {
1014
- distanceSquared = distanceToLineSquared;
1015
- pClosest = pClosestOnLine;
1016
- index = i;
1017
- }
1018
- }
1019
- return {
1020
- point: pClosest,
1021
- index,
1022
- p1: points[index],
1023
- p2: points[index + 1],
1024
- distanceSquared,
1025
- distance: Math.sqrt(distanceSquared)
1026
- };
1027
- }
1028
-
1029
- // dist/editable-layers/path-marker-layer/path-marker-layer.js
1030
- var DISTANCE_FOR_MULTI_ARROWS = 0.1;
1031
- var ARROW_HEAD_SIZE = 0.2;
1032
- var ARROW_TAIL_WIDTH = 0.05;
1033
- var DEFAULT_MARKER_LAYER = import_mesh_layers.SimpleMeshLayer;
1034
- var DEFAULT_MARKER_LAYER_PROPS = {
1035
- mesh: new Arrow2DGeometry({ headSize: ARROW_HEAD_SIZE, tailWidth: ARROW_TAIL_WIDTH })
1036
- };
1037
- var defaultProps2 = Object.assign({}, PathOutlineLayer.defaultProps, {
1038
- MarkerLayer: DEFAULT_MARKER_LAYER,
1039
- markerLayerProps: DEFAULT_MARKER_LAYER_PROPS,
1040
- sizeScale: 100,
1041
- fp64: false,
1042
- highlightIndex: -1,
1043
- highlightPoint: null,
1044
- getPath: (x) => x.path,
1045
- getColor: (x) => x.color,
1046
- getMarkerColor: (x) => [0, 0, 0, 255],
1047
- getDirection: (x) => x.direction,
1048
- getMarkerPercentages: (object, { lineLength }) => lineLength > DISTANCE_FOR_MULTI_ARROWS ? [0.25, 0.5, 0.75] : [0.5]
1049
- });
1050
- var PathMarkerLayer = class extends import_core4.CompositeLayer {
1051
- state = void 0;
1052
- initializeState() {
1053
- this.state = {
1054
- markers: [],
1055
- mesh: new Arrow2DGeometry({ headSize: ARROW_HEAD_SIZE, tailWidth: ARROW_TAIL_WIDTH }),
1056
- closestPoint: null,
1057
- closestPoints: []
1058
- };
1059
- }
1060
- projectFlat(xyz, viewport, coordinateSystem, coordinateOrigin) {
1061
- if (coordinateSystem === import_core4.COORDINATE_SYSTEM.METER_OFFSETS) {
1062
- const [dx, dy] = viewport.metersToLngLatDelta(xyz);
1063
- const [x, y] = coordinateOrigin;
1064
- return viewport.projectFlat([x + dx, dy + y]);
1065
- } else if (coordinateSystem === import_core4.COORDINATE_SYSTEM.LNGLAT_OFFSETS) {
1066
- const [dx, dy] = xyz;
1067
- const [x, y] = coordinateOrigin;
1068
- return viewport.projectFlat([x + dx, dy + y]);
1069
- }
1070
- return viewport.projectFlat(xyz);
1071
- }
1072
- updateState({ props, oldProps, changeFlags }) {
1073
- if (changeFlags.dataChanged || changeFlags.updateTriggersChanged) {
1074
- const { data, getPath, getDirection, getMarkerColor, getMarkerPercentages, coordinateSystem, coordinateOrigin } = this.props;
1075
- const { viewport } = this.context;
1076
- const projectFlat = (o) => this.projectFlat(o, viewport, coordinateSystem, coordinateOrigin);
1077
- this.state.markers = createPathMarkers({
1078
- data,
1079
- getPath,
1080
- getDirection,
1081
- getColor: getMarkerColor,
1082
- getMarkerPercentages,
1083
- projectFlat
1084
- });
1085
- this._recalculateClosestPoint();
1086
- }
1087
- if (changeFlags.propsChanged) {
1088
- if (props.point !== oldProps.point) {
1089
- this._recalculateClosestPoint();
1090
- }
1091
- }
1092
- }
1093
- _recalculateClosestPoint() {
1094
- const { highlightPoint, highlightIndex } = this.props;
1095
- if (highlightPoint && highlightIndex >= 0) {
1096
- const object = this.props.data[highlightIndex];
1097
- const points = this.props.getPath(object, null);
1098
- const { point: point14 } = getClosestPointOnPolyline({ points, p: highlightPoint });
1099
- this.state.closestPoints = [{ position: point14 }];
1100
- } else {
1101
- this.state.closestPoints = [];
1102
- }
1103
- }
1104
- getPickingInfo({ info }) {
1105
- return Object.assign(info, {
1106
- // override object with picked feature
1107
- object: info.object && info.object.path || info.object
1108
- });
1109
- }
1110
- renderLayers() {
1111
- return [
1112
- new PathOutlineLayer(this.props, this.getSubLayerProps({
1113
- id: "paths",
1114
- // Note: data has to be passed explicitly like this to avoid being empty
1115
- data: this.props.data
1116
- })),
1117
- new this.props.MarkerLayer(this.getSubLayerProps(Object.assign({}, this.props.markerLayerProps, {
1118
- id: "markers",
1119
- data: this.state.markers,
1120
- getOrientation: (x) => [0, -x.angle, 0],
1121
- getColor: (x) => x.color,
1122
- sizeScale: this.props.sizeScale,
1123
- fp64: this.props.fp64,
1124
- pickable: false,
1125
- parameters: {
1126
- blend: false,
1127
- depthTest: false
1128
- }
1129
- }))),
1130
- this.state.closestPoints && new import_layers5.ScatterplotLayer({
1131
- id: `${this.props.id}-highlight`,
1132
- data: this.state.closestPoints,
1133
- fp64: this.props.fp64
1134
- })
1135
- ];
1136
- }
1137
- };
1138
- __publicField(PathMarkerLayer, "layerName", "PathMarkerLayer");
1139
- __publicField(PathMarkerLayer, "defaultProps", defaultProps2);
1140
-
1141
663
  // dist/lib/layers/segments-layer.js
664
+ var import_layers4 = require("@deck.gl-community/layers");
1142
665
  var NEBULA_TO_DECK_DIRECTIONS = {
1143
666
  [ArrowStyles.NONE]: { forward: false, backward: false },
1144
667
  [ArrowStyles.FORWARD]: { forward: true, backward: false },
@@ -1194,7 +717,7 @@ var SegmentsLayer = class extends NebulaLayer {
1194
717
  render({ nebula }) {
1195
718
  const defaultColor = [0, 0, 0, 255];
1196
719
  const { objects, updateTrigger } = this.deckCache;
1197
- return new PathMarkerLayer({
720
+ return new import_layers4.PathMarkerLayer({
1198
721
  id: `segments-${this.id}`,
1199
722
  data: objects,
1200
723
  opacity: 1,
@@ -1220,20 +743,20 @@ var SegmentsLayer = class extends NebulaLayer {
1220
743
  highlightColor: toDeckColor(this.highlightColor),
1221
744
  dashJustified: this.dashed,
1222
745
  getDashArray: this.dashed ? (nf) => nf.style.dashArray : void 0,
1223
- markerLayerProps: this.markerLayerProps || PathMarkerLayer.defaultProps.markerLayerProps,
746
+ markerLayerProps: this.markerLayerProps || import_layers4.PathMarkerLayer.defaultProps.markerLayerProps,
1224
747
  nebulaLayer: this
1225
748
  });
1226
749
  }
1227
750
  };
1228
751
 
1229
- // dist/lib/nebula.js
752
+ // dist/lib/nebula-core.js
1230
753
  var import_eventemitter32 = require("eventemitter3");
1231
- var import_core5 = require("@deck.gl/core");
754
+ var import_core2 = require("@deck.gl/core");
1232
755
  var LOGGER_PREFIX = "Nebula: ";
1233
- var Nebula = class {
756
+ var NebulaCore = class {
1234
757
  init(props) {
1235
758
  this.props = props;
1236
- this.wmViewport = new import_core5.WebMercatorViewport(this.props.viewport);
759
+ this.wmViewport = new import_core2.WebMercatorViewport(this.props.viewport);
1237
760
  ["click", "mousemove", "mouseup", "mousedown"].forEach((name) => document.addEventListener(name, this._onMouseEvent, true));
1238
761
  }
1239
762
  detach() {
@@ -1242,7 +765,7 @@ var Nebula = class {
1242
765
  updateProps(newProps) {
1243
766
  this.props = newProps;
1244
767
  const { viewport } = this.props;
1245
- this.wmViewport = new import_core5.WebMercatorViewport(viewport);
768
+ this.wmViewport = new import_core2.WebMercatorViewport(viewport);
1246
769
  }
1247
770
  props = null;
1248
771
  deckgl = null;
@@ -1443,7 +966,7 @@ var Nebula = class {
1443
966
  };
1444
967
 
1445
968
  // dist/editable-layers/editable-geojson-layer.js
1446
- var import_layers7 = require("@deck.gl/layers");
969
+ var import_layers6 = require("@deck.gl/layers");
1447
970
 
1448
971
  // dist/edit-modes/geojson-edit-mode.js
1449
972
  var import_union = __toESM(require("@turf/union"), 1);
@@ -1530,7 +1053,6 @@ function nearestPointOnProjectedLine2(line, inPoint, viewport) {
1530
1053
  type: "Feature",
1531
1054
  geometry: {
1532
1055
  type: "Point",
1533
- // @ts-expect-error
1534
1056
  coordinates: wmViewport.unproject([x0, y0, z0])
1535
1057
  },
1536
1058
  properties: {
@@ -1777,7 +1299,9 @@ var ImmutableFeatureCollection = class {
1777
1299
  * @param positionIndexes An array containing the indexes of the postion to remove
1778
1300
  *
1779
1301
  * @returns A new `ImmutableFeatureCollection` with the given coordinate removed. Does not modify this `ImmutableFeatureCollection`.
1302
+ *
1780
1303
  */
1304
+ // eslint-disable-next-line complexity
1781
1305
  removePosition(featureIndex, positionIndexes) {
1782
1306
  const geometry = this.featureCollection.features[featureIndex].geometry;
1783
1307
  if (geometry.type === "Point") {
@@ -2216,7 +1740,7 @@ var import_clone = __toESM(require("@turf/clone"), 1);
2216
1740
  var import_helpers4 = require("@turf/helpers");
2217
1741
  var import_viewport_mercator_project3 = __toESM(require("viewport-mercator-project"), 1);
2218
1742
 
2219
- // dist/translateFromCenter.js
1743
+ // dist/utils/translate-from-center.js
2220
1744
  var import_center = __toESM(require("@turf/center"), 1);
2221
1745
  var import_rhumb_bearing = __toESM(require("@turf/rhumb-bearing"), 1);
2222
1746
  var import_rhumb_distance = __toESM(require("@turf/rhumb-distance"), 1);
@@ -2225,9 +1749,9 @@ function translateFromCenter(feature, distance7, direction) {
2225
1749
  const initialCenterPoint = (0, import_center.default)(feature);
2226
1750
  const movedCenterPoint = (0, import_rhumb_destination.default)(initialCenterPoint, distance7, direction);
2227
1751
  const movedCoordinates = mapCoords(feature.geometry.coordinates, (coordinate) => {
2228
- const distance8 = (0, import_rhumb_distance.default)(initialCenterPoint.geometry.coordinates, coordinate);
2229
- const direction2 = (0, import_rhumb_bearing.default)(initialCenterPoint.geometry.coordinates, coordinate);
2230
- const movedPosition = (0, import_rhumb_destination.default)(movedCenterPoint.geometry.coordinates, distance8, direction2).geometry.coordinates;
1752
+ const rhumbDistance = (0, import_rhumb_distance.default)(initialCenterPoint.geometry.coordinates, coordinate);
1753
+ const rhumbDirection = (0, import_rhumb_bearing.default)(initialCenterPoint.geometry.coordinates, coordinate);
1754
+ const movedPosition = (0, import_rhumb_destination.default)(movedCenterPoint.geometry.coordinates, rhumbDistance, rhumbDirection).geometry.coordinates;
2231
1755
  return movedPosition;
2232
1756
  });
2233
1757
  feature.geometry.coordinates = movedCoordinates;
@@ -3209,7 +2733,7 @@ var DrawPointMode = class extends GeoJsonEditMode {
3209
2733
  // dist/edit-modes/draw-line-string-mode.js
3210
2734
  var import_distance6 = __toESM(require("@turf/distance"), 1);
3211
2735
 
3212
- // dist/memoize.js
2736
+ // dist/utils/memoize.js
3213
2737
  function isEqual(a, b) {
3214
2738
  if (a === b) {
3215
2739
  return true;
@@ -3455,6 +2979,7 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
3455
2979
  guides.features.push(...editHandles);
3456
2980
  return guides;
3457
2981
  }
2982
+ // eslint-disable-next-line complexity
3458
2983
  handleClick(event, props) {
3459
2984
  const { picks } = event;
3460
2985
  const clickedEditHandle = getPickedEditHandle(picks);
@@ -3966,7 +3491,7 @@ var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
3966
3491
  const clickSequence = this.getClickSequence();
3967
3492
  const { mapCoords: mapCoords2 } = props.lastPointerMoveEvent;
3968
3493
  let p3;
3969
- if (clickSequence.length === 1) {
3494
+ if (clickSequence.length <= 1) {
3970
3495
  p3 = mapCoords2;
3971
3496
  } else {
3972
3497
  const p1 = clickSequence[clickSequence.length - 2];
@@ -4044,19 +3569,20 @@ var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
4044
3569
  props.onEdit(editAction);
4045
3570
  }
4046
3571
  }
3572
+ } else {
3573
+ const fakePointerMoveEvent = {
3574
+ screenCoords: [-1, -1],
3575
+ mapCoords: event.mapCoords,
3576
+ picks: [],
3577
+ pointerDownPicks: null,
3578
+ pointerDownScreenCoords: null,
3579
+ pointerDownMapCoords: null,
3580
+ cancelPan: () => {
3581
+ },
3582
+ sourceEvent: null
3583
+ };
3584
+ this.handlePointerMove(fakePointerMoveEvent, props);
4047
3585
  }
4048
- const fakePointerMoveEvent = {
4049
- screenCoords: [-1, -1],
4050
- mapCoords: event.mapCoords,
4051
- picks: [],
4052
- pointerDownPicks: null,
4053
- pointerDownScreenCoords: null,
4054
- pointerDownMapCoords: null,
4055
- cancelPan: () => {
4056
- },
4057
- sourceEvent: null
4058
- };
4059
- this.handlePointerMove(fakePointerMoveEvent, props);
4060
3586
  }
4061
3587
  finalizedCoordinates(coords) {
4062
3588
  let coordinates = [[...coords.slice(0, -2), coords[0]]];
@@ -4391,10 +3917,13 @@ var TransformMode = class extends CompositeMode {
4391
3917
  }
4392
3918
  };
4393
3919
 
3920
+ // dist/constants.js
3921
+ var PROJECTED_PIXEL_SIZE_MULTIPLIER2 = 2 / 3;
3922
+
4394
3923
  // dist/editable-layers/editable-layer.js
4395
- var import_core6 = require("@deck.gl/core");
3924
+ var import_core3 = require("@deck.gl/core");
4396
3925
  var EVENT_TYPES = ["anyclick", "pointermove", "panstart", "panmove", "panend", "keyup"];
4397
- var EditableLayer = class extends import_core6.CompositeLayer {
3926
+ var EditableLayer = class extends import_core3.CompositeLayer {
4398
3927
  state = void 0;
4399
3928
  // Overridable interaction event handlers
4400
3929
  onLayerClick(event) {
@@ -4577,12 +4106,12 @@ var EditableLayer = class extends import_core6.CompositeLayer {
4577
4106
  __publicField(EditableLayer, "layerName", "EditableLayer");
4578
4107
 
4579
4108
  // dist/editable-layers/editable-path-layer.js
4580
- var import_layers6 = require("@deck.gl/layers");
4581
- var defaultProps3 = {
4582
- ...import_layers6.PathLayer.defaultProps,
4109
+ var import_layers5 = require("@deck.gl/layers");
4110
+ var defaultProps = {
4111
+ ...import_layers5.PathLayer.defaultProps,
4583
4112
  pickingLineWidthExtraPixels: { type: "number", min: 0, value: Number.MAX_SAFE_INTEGER }
4584
4113
  };
4585
- var EditablePathLayer = class extends import_layers6.PathLayer {
4114
+ var EditablePathLayer = class extends import_layers5.PathLayer {
4586
4115
  getShaders() {
4587
4116
  var _a;
4588
4117
  const shaders = super.getShaders();
@@ -4609,7 +4138,7 @@ var EditablePathLayer = class extends import_layers6.PathLayer {
4609
4138
  });
4610
4139
  }
4611
4140
  };
4612
- EditablePathLayer.defaultProps = defaultProps3;
4141
+ EditablePathLayer.defaultProps = defaultProps;
4613
4142
  EditablePathLayer.layerName = "EditablePathLayer";
4614
4143
 
4615
4144
  // dist/editable-layers/editable-geojson-layer.js
@@ -4667,7 +4196,7 @@ function getEditHandleRadius(handle) {
4667
4196
  return DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS;
4668
4197
  }
4669
4198
  }
4670
- var defaultProps4 = {
4199
+ var defaultProps2 = {
4671
4200
  mode: DEFAULT_EDIT_MODE,
4672
4201
  // Edit and interaction events
4673
4202
  onEdit: () => {
@@ -4798,7 +4327,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
4798
4327
  getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode]
4799
4328
  }
4800
4329
  });
4801
- let layers = [new import_layers7.GeoJsonLayer(subLayerProps)];
4330
+ let layers = [new import_layers6.GeoJsonLayer(subLayerProps)];
4802
4331
  layers = layers.concat(this.createGuidesLayers(), this.createTooltipsLayers());
4803
4332
  return layers;
4804
4333
  }
@@ -4912,7 +4441,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
4912
4441
  };
4913
4442
  if (this.props.editHandleType === "icon") {
4914
4443
  subLayerProps["points-icon"] = {
4915
- type: import_layers7.IconLayer,
4444
+ type: import_layers6.IconLayer,
4916
4445
  iconAtlas: this.props.editHandleIconAtlas,
4917
4446
  iconMapping: this.props.editHandleIconMapping,
4918
4447
  sizeUnits: this.props.editHandleIconSizeUnits,
@@ -4925,7 +4454,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
4925
4454
  };
4926
4455
  } else {
4927
4456
  subLayerProps["points-circle"] = {
4928
- type: import_layers7.ScatterplotLayer,
4457
+ type: import_layers6.ScatterplotLayer,
4929
4458
  radiusScale: this.props.editHandlePointRadiusScale,
4930
4459
  stroked: this.props.editHandlePointOutline,
4931
4460
  getLineWidth: this.props.editHandlePointStrokeWidth,
@@ -4938,7 +4467,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
4938
4467
  billboard: this.props.billboard
4939
4468
  };
4940
4469
  }
4941
- const layer = new import_layers7.GeoJsonLayer(this.getSubLayerProps({
4470
+ const layer = new import_layers6.GeoJsonLayer(this.getSubLayerProps({
4942
4471
  id: "guides",
4943
4472
  data: guides,
4944
4473
  fp64: this.props.fp64,
@@ -4961,7 +4490,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
4961
4490
  createTooltipsLayers() {
4962
4491
  const mode = this.getActiveMode();
4963
4492
  const tooltips = mode.getTooltips(this.getModeProps(this.props));
4964
- const layer = new import_layers7.TextLayer({
4493
+ const layer = new import_layers6.TextLayer({
4965
4494
  getSize: DEFAULT_TOOLTIP_FONT_SIZE,
4966
4495
  ...this.getSubLayerProps({
4967
4496
  id: "tooltips",
@@ -5004,7 +4533,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
5004
4533
  }
5005
4534
  };
5006
4535
  __publicField(EditableGeoJsonLayer, "layerName", "EditableGeoJsonLayer");
5007
- __publicField(EditableGeoJsonLayer, "defaultProps", defaultProps4);
4536
+ __publicField(EditableGeoJsonLayer, "defaultProps", defaultProps2);
5008
4537
 
5009
4538
  // dist/editable-layers/editable-h3-cluster-layer.js
5010
4539
  var import_geo_layers = require("@deck.gl/geo-layers");
@@ -5014,7 +4543,7 @@ var EMPTY_FEATURE_COLLECTION = {
5014
4543
  type: "FeatureCollection",
5015
4544
  features: []
5016
4545
  };
5017
- var defaultProps5 = {
4546
+ var defaultProps3 = {
5018
4547
  mode: DEFAULT_EDIT_MODE2,
5019
4548
  ...EditableGeoJsonLayer.defaultProps,
5020
4549
  // h3 layer
@@ -5153,11 +4682,11 @@ var EditableH3ClusterLayer = class extends EditableLayer {
5153
4682
  }
5154
4683
  };
5155
4684
  __publicField(EditableH3ClusterLayer, "layerName", "EditableH3ClusterLayer");
5156
- __publicField(EditableH3ClusterLayer, "defaultProps", defaultProps5);
4685
+ __publicField(EditableH3ClusterLayer, "defaultProps", defaultProps3);
5157
4686
 
5158
4687
  // dist/editable-layers/selection-layer.js
5159
- var import_core7 = require("@deck.gl/core");
5160
- var import_layers8 = require("@deck.gl/layers");
4688
+ var import_core4 = require("@deck.gl/core");
4689
+ var import_layers7 = require("@deck.gl/layers");
5161
4690
  var import_helpers16 = require("@turf/helpers");
5162
4691
  var import_buffer3 = __toESM(require("@turf/buffer"), 1);
5163
4692
  var import_difference4 = __toESM(require("@turf/difference"), 1);
@@ -5173,7 +4702,7 @@ var MODE_MAP = {
5173
4702
  var MODE_CONFIG_MAP = {
5174
4703
  [SELECTION_TYPE2.RECTANGLE]: { dragToDraw: true }
5175
4704
  };
5176
- var defaultProps6 = {
4705
+ var defaultProps4 = {
5177
4706
  selectionType: SELECTION_TYPE2.RECTANGLE,
5178
4707
  layerIds: [],
5179
4708
  onSelect: () => {
@@ -5208,7 +4737,7 @@ var PASS_THROUGH_PROPS = [
5208
4737
  "getTentativeFillColor",
5209
4738
  "getTentativeLineWidth"
5210
4739
  ];
5211
- var SelectionLayer = class extends import_core7.CompositeLayer {
4740
+ var SelectionLayer = class extends import_core4.CompositeLayer {
5212
4741
  state = void 0;
5213
4742
  _selectRectangleObjects(coordinates) {
5214
4743
  const { layerIds, onSelect } = this.props;
@@ -5292,7 +4821,7 @@ var SelectionLayer = class extends import_core7.CompositeLayer {
5292
4821
  ];
5293
4822
  if (pendingPolygonSelection) {
5294
4823
  const { bigPolygon } = pendingPolygonSelection;
5295
- layers.push(new import_layers8.PolygonLayer(this.getSubLayerProps({
4824
+ layers.push(new import_layers7.PolygonLayer(this.getSubLayerProps({
5296
4825
  id: LAYER_ID_BLOCKER,
5297
4826
  pickable: true,
5298
4827
  stroked: false,
@@ -5310,19 +4839,19 @@ var SelectionLayer = class extends import_core7.CompositeLayer {
5310
4839
  }
5311
4840
  };
5312
4841
  __publicField(SelectionLayer, "layerName", "SelectionLayer");
5313
- __publicField(SelectionLayer, "defaultProps", defaultProps6);
4842
+ __publicField(SelectionLayer, "defaultProps", defaultProps4);
5314
4843
 
5315
4844
  // dist/editable-layers/elevated-edit-handle-layer.js
5316
- var import_core8 = require("@deck.gl/core");
5317
- var import_layers9 = require("@deck.gl/layers");
5318
- var defaultProps7 = {};
5319
- var ElevatedEditHandleLayer = class extends import_core8.CompositeLayer {
4845
+ var import_core5 = require("@deck.gl/core");
4846
+ var import_layers8 = require("@deck.gl/layers");
4847
+ var defaultProps5 = {};
4848
+ var ElevatedEditHandleLayer = class extends import_core5.CompositeLayer {
5320
4849
  renderLayers() {
5321
- const handles = new import_layers9.ScatterplotLayer(Object.assign({}, this.props, {
4850
+ const handles = new import_layers8.ScatterplotLayer(Object.assign({}, this.props, {
5322
4851
  id: `${this.props.id}-ScatterplotLayer`,
5323
4852
  data: this.props.data
5324
4853
  }));
5325
- const lines = new import_layers9.LineLayer(Object.assign({}, this.props, {
4854
+ const lines = new import_layers8.LineLayer(Object.assign({}, this.props, {
5326
4855
  id: `${this.props.id}-LineLayer`,
5327
4856
  data: this.props.data,
5328
4857
  pickable: false,
@@ -5335,7 +4864,7 @@ var ElevatedEditHandleLayer = class extends import_core8.CompositeLayer {
5335
4864
  }
5336
4865
  };
5337
4866
  __publicField(ElevatedEditHandleLayer, "layerName", "ElevatedEditHandleLayer");
5338
- __publicField(ElevatedEditHandleLayer, "defaultProps", defaultProps7);
4867
+ __publicField(ElevatedEditHandleLayer, "defaultProps", defaultProps5);
5339
4868
 
5340
4869
  // dist/edit-modes/resize-circle-mode.js
5341
4870
  var import_nearest_point_on_line2 = __toESM(require("@turf/nearest-point-on-line"), 1);
@@ -5718,7 +5247,6 @@ var MeasureAreaMode = class extends DrawPolygonMode {
5718
5247
  }
5719
5248
  return [
5720
5249
  {
5721
- // @ts-expect-error turf types diff
5722
5250
  position: centroid.geometry.coordinates,
5723
5251
  text
5724
5252
  }