@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
@@ -1,3 +1,7 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import turfUnion from '@turf/union';
2
6
  import turfDifference from '@turf/difference';
3
7
  import turfIntersect from '@turf/intersect';
@@ -14,18 +18,18 @@ import {
14
18
  Tooltip,
15
19
  ModeProps,
16
20
  GuideFeatureCollection,
17
- TentativeFeature,
21
+ TentativeFeature
18
22
  } from './types';
19
- import { FeatureCollection, Feature, Polygon, Geometry, Position } from '../geojson-types';
20
- import { getPickedEditHandles, getNonGuidePicks } from './utils';
21
- import { EditMode } from './edit-mode';
22
- import { ImmutableFeatureCollection } from './immutable-feature-collection';
23
+ import {FeatureCollection, Feature, Polygon, Geometry, Position} from '../utils/geojson-types';
24
+ import {getPickedEditHandles, getNonGuidePicks} from './utils';
25
+ import {EditMode} from './edit-mode';
26
+ import {ImmutableFeatureCollection} from './immutable-feature-collection';
23
27
 
24
28
  export type GeoJsonEditAction = EditAction<FeatureCollection>;
25
29
 
26
30
  const DEFAULT_GUIDES: GuideFeatureCollection = {
27
31
  type: 'FeatureCollection',
28
- features: [],
32
+ features: []
29
33
  };
30
34
  const DEFAULT_TOOLTIPS: Tooltip[] = [];
31
35
 
@@ -63,11 +67,11 @@ export class GeoJsonEditMode implements EditMode<FeatureCollection, GuideFeature
63
67
  }
64
68
 
65
69
  getSelectedFeaturesAsFeatureCollection(props: ModeProps<FeatureCollection>): FeatureCollection {
66
- const { features } = props.data;
70
+ const {features} = props.data;
67
71
  const selectedFeatures = props.selectedIndexes.map((selectedIndex) => features[selectedIndex]);
68
72
  return {
69
73
  type: 'FeatureCollection',
70
- features: selectedFeatures,
74
+ features: selectedFeatures
71
75
  };
72
76
  }
73
77
 
@@ -75,7 +79,7 @@ export class GeoJsonEditMode implements EditMode<FeatureCollection, GuideFeature
75
79
  return this._clickSequence;
76
80
  }
77
81
 
78
- addClickSequence({ mapCoords }: ClickEvent): void {
82
+ addClickSequence({mapCoords}: ClickEvent): void {
79
83
  this._clickSequence.push(mapCoords);
80
84
  }
81
85
 
@@ -92,16 +96,16 @@ export class GeoJsonEditMode implements EditMode<FeatureCollection, GuideFeature
92
96
 
93
97
  isSelectionPicked(picks: Pick[], props: ModeProps<FeatureCollection>): boolean {
94
98
  if (!picks.length) return false;
95
- const pickedFeatures = getNonGuidePicks(picks).map(({ index }) => index);
99
+ const pickedFeatures = getNonGuidePicks(picks).map(({index}) => index);
96
100
  const pickedHandles = getPickedEditHandles(picks).map(
97
- ({ properties }) => properties.featureIndex
101
+ ({properties}) => properties.featureIndex
98
102
  );
99
103
  const pickedIndexes = new Set([...pickedFeatures, ...pickedHandles]);
100
104
  return props.selectedIndexes.some((index) => pickedIndexes.has(index));
101
105
  }
102
106
 
103
107
  rewindPolygon(feature: Feature): Feature {
104
- const { geometry } = feature;
108
+ const {geometry} = feature;
105
109
 
106
110
  const isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon';
107
111
  if (isPolygonal) {
@@ -123,10 +127,10 @@ export class GeoJsonEditMode implements EditMode<FeatureCollection, GuideFeature
123
127
  featureOrGeometryAsAny.type === 'Feature'
124
128
  ? featureOrGeometryAsAny
125
129
  : {
126
- type: 'Feature',
127
- properties: {},
128
- geometry: featureOrGeometryAsAny,
129
- };
130
+ type: 'Feature',
131
+ properties: {},
132
+ geometry: featureOrGeometryAsAny
133
+ };
130
134
 
131
135
  const rewindFeature = this.rewindPolygon(feature);
132
136
  const updatedData = new ImmutableFeatureCollection(features)
@@ -137,25 +141,25 @@ export class GeoJsonEditMode implements EditMode<FeatureCollection, GuideFeature
137
141
  updatedData,
138
142
  editType: 'addFeature',
139
143
  editContext: {
140
- featureIndexes: [updatedData.features.length - 1],
141
- },
144
+ featureIndexes: [updatedData.features.length - 1]
145
+ }
142
146
  };
143
147
  }
144
148
 
145
149
  getAddManyFeaturesAction(
146
- { features: featuresToAdd }: FeatureCollection,
150
+ {features: featuresToAdd}: FeatureCollection,
147
151
  features: FeatureCollection
148
152
  ): GeoJsonEditAction {
149
153
  let updatedData = new ImmutableFeatureCollection(features);
150
154
  const initialIndex = updatedData.getObject().features.length;
151
155
  const updatedIndexes: number[] = [];
152
156
  for (const feature of featuresToAdd) {
153
- const { properties, geometry } = feature;
157
+ const {properties, geometry} = feature;
154
158
  const geometryAsAny: any = geometry;
155
159
  updatedData = updatedData.addFeature({
156
160
  type: 'Feature',
157
161
  properties,
158
- geometry: geometryAsAny,
162
+ geometry: geometryAsAny
159
163
  });
160
164
  updatedIndexes.push(initialIndex + updatedIndexes.length);
161
165
  }
@@ -164,8 +168,8 @@ export class GeoJsonEditMode implements EditMode<FeatureCollection, GuideFeature
164
168
  updatedData: updatedData.getObject(),
165
169
  editType: 'addFeature',
166
170
  editContext: {
167
- featureIndexes: updatedIndexes,
168
- },
171
+ featureIndexes: updatedIndexes
172
+ }
169
173
  };
170
174
  }
171
175
 
@@ -176,7 +180,7 @@ export class GeoJsonEditMode implements EditMode<FeatureCollection, GuideFeature
176
180
  const featureOrGeometryAsAny: any = featureOrGeometry;
177
181
 
178
182
  const selectedFeature = this.getSelectedFeature(props);
179
- const { modeConfig } = props;
183
+ const {modeConfig} = props;
180
184
  if (modeConfig && modeConfig.booleanOperation) {
181
185
  if (
182
186
  !selectedFeature ||
@@ -194,9 +198,9 @@ export class GeoJsonEditMode implements EditMode<FeatureCollection, GuideFeature
194
198
  featureOrGeometryAsAny.type === 'Feature'
195
199
  ? featureOrGeometryAsAny
196
200
  : {
197
- type: 'Feature',
198
- geometry: featureOrGeometryAsAny,
199
- };
201
+ type: 'Feature',
202
+ geometry: featureOrGeometryAsAny
203
+ };
200
204
 
201
205
  let updatedGeometry;
202
206
  if (modeConfig.booleanOperation === 'union') {
@@ -230,8 +234,8 @@ export class GeoJsonEditMode implements EditMode<FeatureCollection, GuideFeature
230
234
  updatedData,
231
235
  editType: 'unionGeometry',
232
236
  editContext: {
233
- featureIndexes: [featureIndex],
234
- },
237
+ featureIndexes: [featureIndex]
238
+ }
235
239
  };
236
240
 
237
241
  return editAction;
@@ -251,8 +255,8 @@ export class GeoJsonEditMode implements EditMode<FeatureCollection, GuideFeature
251
255
  updatedData: props.data,
252
256
  editType: 'updateTentativeFeature',
253
257
  editContext: {
254
- feature: tentativeFeature,
255
- },
258
+ feature: tentativeFeature
259
+ }
256
260
  });
257
261
  }
258
262
  }
@@ -267,7 +271,7 @@ export class GeoJsonEditMode implements EditMode<FeatureCollection, GuideFeature
267
271
  // Because the new drawing feature is dropped, so the data will keep as the same.
268
272
  updatedData: props.data,
269
273
  editType: 'cancelFeature',
270
- editContext: {},
274
+ editContext: {}
271
275
  });
272
276
  }
273
277
  }
@@ -276,7 +280,7 @@ export class GeoJsonEditMode implements EditMode<FeatureCollection, GuideFeature
276
280
  export function getIntermediatePosition(position1: Position, position2: Position): Position {
277
281
  const intermediatePosition: Position = [
278
282
  (position1[0] + position2[0]) / 2.0,
279
- (position1[1] + position2[1]) / 2.0,
283
+ (position1[1] + position2[1]) / 2.0
280
284
  ];
281
285
 
282
286
  return intermediatePosition;
@@ -1,3 +1,7 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import {
2
6
  Feature,
3
7
  FeatureCollection,
@@ -6,8 +10,8 @@ import {
6
10
  MultiLineString,
7
11
  MultiPolygon,
8
12
  Position,
9
- PolygonCoordinates,
10
- } from '../geojson-types';
13
+ PolygonCoordinates
14
+ } from '../utils/geojson-types';
11
15
 
12
16
  export class ImmutableFeatureCollection {
13
17
  featureCollection: FeatureCollection;
@@ -45,7 +49,7 @@ export class ImmutableFeatureCollection {
45
49
  positionIndexes,
46
50
  updatedPosition,
47
51
  isPolygonal
48
- ),
52
+ )
49
53
  };
50
54
 
51
55
  return this.replaceGeometry(featureIndex, updatedGeometry);
@@ -59,7 +63,9 @@ export class ImmutableFeatureCollection {
59
63
  * @param positionIndexes An array containing the indexes of the postion to remove
60
64
  *
61
65
  * @returns A new `ImmutableFeatureCollection` with the given coordinate removed. Does not modify this `ImmutableFeatureCollection`.
66
+ *
62
67
  */
68
+ // eslint-disable-next-line complexity
63
69
  removePosition(
64
70
  featureIndex: number,
65
71
  positionIndexes: number[] | null | undefined
@@ -67,19 +73,19 @@ export class ImmutableFeatureCollection {
67
73
  const geometry = this.featureCollection.features[featureIndex].geometry;
68
74
 
69
75
  if (geometry.type === 'Point') {
70
- throw Error('Can\'t remove a position from a Point or there\'d be nothing left');
76
+ throw Error("Can't remove a position from a Point or there'd be nothing left");
71
77
  }
72
78
  if (
73
79
  geometry.type === 'MultiPoint' && // only 1 point left
74
80
  geometry.coordinates.length < 2
75
81
  ) {
76
- throw Error('Can\'t remove the last point of a MultiPoint or there\'d be nothing left');
82
+ throw Error("Can't remove the last point of a MultiPoint or there'd be nothing left");
77
83
  }
78
84
  if (
79
85
  geometry.type === 'LineString' && // only 2 positions
80
86
  geometry.coordinates.length < 3
81
87
  ) {
82
- throw Error('Can\'t remove position. LineString must have at least two positions');
88
+ throw Error("Can't remove position. LineString must have at least two positions");
83
89
  }
84
90
  if (
85
91
  geometry.type === 'Polygon' && // outer ring is a triangle
@@ -87,14 +93,14 @@ export class ImmutableFeatureCollection {
87
93
  Array.isArray(positionIndexes) && // trying to remove from outer ring
88
94
  positionIndexes[0] === 0
89
95
  ) {
90
- throw Error('Can\'t remove position. Polygon\'s outer ring must have at least four positions');
96
+ throw Error("Can't remove position. Polygon's outer ring must have at least four positions");
91
97
  }
92
98
  if (
93
99
  geometry.type === 'MultiLineString' && // only 1 LineString left
94
100
  geometry.coordinates.length === 1 && // only 2 positions
95
101
  geometry.coordinates[0].length < 3
96
102
  ) {
97
- throw Error('Can\'t remove position. MultiLineString must have at least two positions');
103
+ throw Error("Can't remove position. MultiLineString must have at least two positions");
98
104
  }
99
105
  if (
100
106
  geometry.type === 'MultiPolygon' && // only 1 polygon left
@@ -105,14 +111,14 @@ export class ImmutableFeatureCollection {
105
111
  positionIndexes[1] === 0
106
112
  ) {
107
113
  throw Error(
108
- 'Can\'t remove position. MultiPolygon\'s outer ring must have at least four positions'
114
+ "Can't remove position. MultiPolygon's outer ring must have at least four positions"
109
115
  );
110
116
  }
111
117
 
112
118
  const isPolygonal = geometry.type === 'Polygon' || geometry.type === 'MultiPolygon';
113
119
  const updatedGeometry: any = {
114
120
  ...geometry,
115
- coordinates: immutablyRemovePosition(geometry.coordinates, positionIndexes, isPolygonal),
121
+ coordinates: immutablyRemovePosition(geometry.coordinates, positionIndexes, isPolygonal)
116
122
  };
117
123
 
118
124
  // Handle cases where incomplete geometries need pruned (e.g. holes that were triangles)
@@ -150,7 +156,7 @@ export class ImmutableFeatureCollection {
150
156
  positionIndexes,
151
157
  positionToAdd,
152
158
  isPolygonal
153
- ),
159
+ )
154
160
  };
155
161
 
156
162
  return this.replaceGeometry(featureIndex, updatedGeometry);
@@ -159,7 +165,7 @@ export class ImmutableFeatureCollection {
159
165
  replaceGeometry(featureIndex: number, geometry: Geometry): ImmutableFeatureCollection {
160
166
  const updatedFeature: any = {
161
167
  ...this.featureCollection.features[featureIndex],
162
- geometry,
168
+ geometry
163
169
  };
164
170
 
165
171
  const updatedFeatureCollection = {
@@ -167,8 +173,8 @@ export class ImmutableFeatureCollection {
167
173
  features: [
168
174
  ...this.featureCollection.features.slice(0, featureIndex),
169
175
  updatedFeature,
170
- ...this.featureCollection.features.slice(featureIndex + 1),
171
- ],
176
+ ...this.featureCollection.features.slice(featureIndex + 1)
177
+ ]
172
178
  };
173
179
 
174
180
  return new ImmutableFeatureCollection(updatedFeatureCollection);
@@ -181,7 +187,7 @@ export class ImmutableFeatureCollection {
181
187
  addFeatures(features: Feature[]): ImmutableFeatureCollection {
182
188
  const updatedFeatureCollection = {
183
189
  ...this.featureCollection,
184
- features: [...this.featureCollection.features, ...features],
190
+ features: [...this.featureCollection.features, ...features]
185
191
  };
186
192
 
187
193
  return new ImmutableFeatureCollection(updatedFeatureCollection);
@@ -203,7 +209,7 @@ export class ImmutableFeatureCollection {
203
209
 
204
210
  const updatedFeatureCollection = {
205
211
  ...this.featureCollection,
206
- features,
212
+ features
207
213
  };
208
214
 
209
215
  return new ImmutableFeatureCollection(updatedFeatureCollection);
@@ -237,7 +243,7 @@ function immutablyReplacePosition(
237
243
  const updated = [
238
244
  ...coordinates.slice(0, positionIndexes[0]),
239
245
  getUpdatedPosition(updatedPosition, coordinates[positionIndexes[0]]),
240
- ...coordinates.slice(positionIndexes[0] + 1),
246
+ ...coordinates.slice(positionIndexes[0] + 1)
241
247
  ];
242
248
 
243
249
  if (
@@ -261,7 +267,7 @@ function immutablyReplacePosition(
261
267
  updatedPosition,
262
268
  isPolygonal
263
269
  ),
264
- ...coordinates.slice(positionIndexes[0] + 1),
270
+ ...coordinates.slice(positionIndexes[0] + 1)
265
271
  ];
266
272
  }
267
273
 
@@ -279,7 +285,7 @@ function immutablyRemovePosition(
279
285
  if (positionIndexes.length === 1) {
280
286
  const updated = [
281
287
  ...coordinates.slice(0, positionIndexes[0]),
282
- ...coordinates.slice(positionIndexes[0] + 1),
288
+ ...coordinates.slice(positionIndexes[0] + 1)
283
289
  ];
284
290
 
285
291
  if (
@@ -307,7 +313,7 @@ function immutablyRemovePosition(
307
313
  positionIndexes.slice(1, positionIndexes.length),
308
314
  isPolygonal
309
315
  ),
310
- ...coordinates.slice(positionIndexes[0] + 1),
316
+ ...coordinates.slice(positionIndexes[0] + 1)
311
317
  ];
312
318
  }
313
319
 
@@ -327,7 +333,7 @@ function immutablyAddPosition(
327
333
  const updated = [
328
334
  ...coordinates.slice(0, positionIndexes[0]),
329
335
  positionToAdd,
330
- ...coordinates.slice(positionIndexes[0]),
336
+ ...coordinates.slice(positionIndexes[0])
331
337
  ];
332
338
  return updated;
333
339
  }
@@ -341,7 +347,7 @@ function immutablyAddPosition(
341
347
  positionToAdd,
342
348
  isPolygonal
343
349
  ),
344
- ...coordinates.slice(positionIndexes[0] + 1),
350
+ ...coordinates.slice(positionIndexes[0] + 1)
345
351
  ];
346
352
  }
347
353
 
@@ -1,63 +1,70 @@
1
1
  import turfBearing from '@turf/bearing';
2
2
  import turfCenter from '@turf/center';
3
- import memoize from '../memoize';
3
+ import {memoize} from '../utils/memoize';
4
4
 
5
- import { ClickEvent, PointerMoveEvent, Tooltip, ModeProps, GuideFeatureCollection } from './types';
6
- import { FeatureCollection, Position } from '../geojson-types';
7
- import { GeoJsonEditMode } from './geojson-edit-mode';
5
+ import {ClickEvent, PointerMoveEvent, Tooltip, ModeProps, GuideFeatureCollection} from './types';
6
+ import {FeatureCollection, Position} from '../utils/geojson-types';
7
+ import {GeoJsonEditMode} from './geojson-edit-mode';
8
8
 
9
9
  const DEFAULT_TOOLTIPS: Tooltip[] = [];
10
10
 
11
11
  export class MeasureAngleMode extends GeoJsonEditMode {
12
- _getTooltips = memoize(({ modeConfig, vertex, point1, point2 }: {
13
- modeConfig: any,
14
- vertex: any,
15
- point1: Position,
16
- point2: Position
17
- }): Tooltip[] => {
18
- let tooltips = DEFAULT_TOOLTIPS;
19
-
20
- if (vertex && point1 && point2) {
21
- const { formatTooltip, measurementCallback } = modeConfig || {};
22
- const units = 'deg';
23
-
24
- const angle1 = turfBearing(vertex, point1);
25
- const angle2 = turfBearing(vertex, point2);
26
- let angle = Math.abs(angle1 - angle2);
27
- if (angle > 180) {
28
- angle = 360 - angle;
12
+ _getTooltips = memoize(
13
+ ({
14
+ modeConfig,
15
+ vertex,
16
+ point1,
17
+ point2
18
+ }: {
19
+ modeConfig: any;
20
+ vertex: any;
21
+ point1: Position;
22
+ point2: Position;
23
+ }): Tooltip[] => {
24
+ let tooltips = DEFAULT_TOOLTIPS;
25
+
26
+ if (vertex && point1 && point2) {
27
+ const {formatTooltip, measurementCallback} = modeConfig || {};
28
+ const units = 'deg';
29
+
30
+ const angle1 = turfBearing(vertex, point1);
31
+ const angle2 = turfBearing(vertex, point2);
32
+ let angle = Math.abs(angle1 - angle2);
33
+ if (angle > 180) {
34
+ angle = 360 - angle;
35
+ }
36
+
37
+ let text: string;
38
+ if (formatTooltip) {
39
+ text = formatTooltip(angle);
40
+ } else {
41
+ // By default, round to 2 decimal places and append units
42
+ // @ts-expect-error angle isn't string
43
+ text = `${parseFloat(angle).toFixed(2)} ${units}`;
44
+ }
45
+
46
+ if (measurementCallback) {
47
+ measurementCallback(angle);
48
+ }
49
+
50
+ const position = turfCenter({
51
+ type: 'FeatureCollection',
52
+ features: [point1, point2].map((p) => ({
53
+ type: 'Feature',
54
+ geometry: {
55
+ type: 'Point',
56
+ coordinates: p
57
+ },
58
+ properties: {}
59
+ }))
60
+ }).geometry.coordinates;
61
+
62
+ tooltips = [{position, text}];
29
63
  }
30
64
 
31
- let text: string;
32
- if (formatTooltip) {
33
- text = formatTooltip(angle);
34
- } else {
35
- // By default, round to 2 decimal places and append units
36
- // @ts-expect-error angle isn't string
37
- text = `${parseFloat(angle).toFixed(2)} ${units}`;
38
- }
39
-
40
- if (measurementCallback) {
41
- measurementCallback(angle);
42
- }
43
-
44
- const position = turfCenter({
45
- type: 'FeatureCollection',
46
- features: [point1, point2].map((p) => ({
47
- type: 'Feature',
48
- geometry: {
49
- type: 'Point',
50
- coordinates: p,
51
- },
52
- properties: {}
53
- })),
54
- }).geometry.coordinates as Position;
55
-
56
- tooltips = [{position, text}];
65
+ return tooltips;
57
66
  }
58
-
59
- return tooltips;
60
- });
67
+ );
61
68
 
62
69
  handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>): void {
63
70
  if (this.getClickSequence().length >= 3) {
@@ -86,28 +93,28 @@ export class MeasureAngleMode extends GeoJsonEditMode {
86
93
 
87
94
  // Return features that can be used as a guide for editing the data
88
95
  getGuides(props: ModeProps<FeatureCollection>): GuideFeatureCollection {
89
- const guides: GuideFeatureCollection = { type: 'FeatureCollection', features: [] };
90
- const { features } = guides;
96
+ const guides: GuideFeatureCollection = {type: 'FeatureCollection', features: []};
97
+ const {features} = guides;
91
98
 
92
99
  const points = this.getPoints(props);
93
100
 
94
101
  if (points.length > 2) {
95
102
  features.push({
96
103
  type: 'Feature',
97
- properties: { guideType: 'tentative' },
104
+ properties: {guideType: 'tentative'},
98
105
  geometry: {
99
106
  type: 'LineString',
100
- coordinates: [points[1], points[0], points[2]],
101
- },
107
+ coordinates: [points[1], points[0], points[2]]
108
+ }
102
109
  });
103
110
  } else if (points.length > 1) {
104
111
  features.push({
105
112
  type: 'Feature',
106
- properties: { guideType: 'tentative' },
113
+ properties: {guideType: 'tentative'},
107
114
  geometry: {
108
115
  type: 'LineString',
109
- coordinates: [points[1], points[0]],
110
- },
116
+ coordinates: [points[1], points[0]]
117
+ }
111
118
  });
112
119
  }
113
120
 
@@ -121,7 +128,7 @@ export class MeasureAngleMode extends GeoJsonEditMode {
121
128
  modeConfig: props.modeConfig,
122
129
  vertex: points[0],
123
130
  point1: points[1],
124
- point2: points[2],
131
+ point2: points[2]
125
132
  }) as Tooltip[];
126
133
  }
127
134
  }
@@ -1,8 +1,12 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import turfArea from '@turf/area';
2
6
  import turfCentroid from '@turf/centroid';
3
- import { ClickEvent, Tooltip, ModeProps } from './types';
4
- import { FeatureCollection } from '../geojson-types';
5
- import { DrawPolygonMode } from './draw-polygon-mode';
7
+ import {ClickEvent, Tooltip, ModeProps} from './types';
8
+ import {FeatureCollection} from '../utils/geojson-types';
9
+ import {DrawPolygonMode} from './draw-polygon-mode';
6
10
 
7
11
  const DEFAULT_TOOLTIPS = [];
8
12
 
@@ -10,7 +14,7 @@ export class MeasureAreaMode extends DrawPolygonMode {
10
14
  handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {
11
15
  const propsWithoutEdit = {
12
16
  ...props,
13
- onEdit: () => {},
17
+ onEdit: () => {}
14
18
  };
15
19
 
16
20
  super.handleClick(event, propsWithoutEdit);
@@ -19,7 +23,7 @@ export class MeasureAreaMode extends DrawPolygonMode {
19
23
  handleKeyUp(event: KeyboardEvent, props: ModeProps<FeatureCollection>): void {
20
24
  const propsWithoutEdit = {
21
25
  ...props,
22
- onEdit: () => {},
26
+ onEdit: () => {}
23
27
  };
24
28
 
25
29
  super.handleKeyUp(event, propsWithoutEdit);
@@ -29,8 +33,8 @@ export class MeasureAreaMode extends DrawPolygonMode {
29
33
  const tentativeGuide = this.getTentativeGuide(props);
30
34
 
31
35
  if (tentativeGuide && tentativeGuide.geometry.type === 'Polygon') {
32
- const { modeConfig } = props;
33
- const { formatTooltip, measurementCallback } = modeConfig || {};
36
+ const {modeConfig} = props;
37
+ const {formatTooltip, measurementCallback} = modeConfig || {};
34
38
  const units = 'sq. m';
35
39
 
36
40
  const centroid = turfCentroid(tentativeGuide);
@@ -51,10 +55,9 @@ export class MeasureAreaMode extends DrawPolygonMode {
51
55
 
52
56
  return [
53
57
  {
54
- // @ts-expect-error turf types diff
55
58
  position: centroid.geometry.coordinates,
56
- text,
57
- },
59
+ text
60
+ }
58
61
  ];
59
62
  }
60
63
  return DEFAULT_TOOLTIPS;