@deck.gl-community/editable-layers 9.0.2 → 9.1.0-beta.2

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 (291) hide show
  1. package/dist/constants.d.ts +1 -0
  2. package/dist/constants.d.ts.map +1 -0
  3. package/dist/edit-modes/composite-mode.d.ts +4 -3
  4. package/dist/edit-modes/composite-mode.d.ts.map +1 -0
  5. package/dist/edit-modes/composite-mode.js +1 -1
  6. package/dist/edit-modes/delete-mode.d.ts +7 -0
  7. package/dist/edit-modes/delete-mode.d.ts.map +1 -0
  8. package/dist/edit-modes/delete-mode.js +22 -0
  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 +2 -2
  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 +7 -3
  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 +6 -2
  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 +11 -3
  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 +12 -3
  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 +3 -3
  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 +1 -1
  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 +2 -2
  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 +2 -2
  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 +1 -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 +1 -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 +2 -2
  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 +1 -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 +1 -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 +1 -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/elevation-mode.d.ts +4 -3
  57. package/dist/edit-modes/elevation-mode.d.ts.map +1 -0
  58. package/dist/edit-modes/elevation-mode.js +2 -2
  59. package/dist/edit-modes/extend-line-string-mode.d.ts +4 -3
  60. package/dist/edit-modes/extend-line-string-mode.d.ts.map +1 -0
  61. package/dist/edit-modes/extend-line-string-mode.js +5 -2
  62. package/dist/edit-modes/extrude-mode.d.ts +4 -3
  63. package/dist/edit-modes/extrude-mode.d.ts.map +1 -0
  64. package/dist/edit-modes/extrude-mode.js +6 -3
  65. package/dist/edit-modes/geojson-edit-mode.d.ts +6 -5
  66. package/dist/edit-modes/geojson-edit-mode.d.ts.map +1 -0
  67. package/dist/edit-modes/geojson-edit-mode.js +9 -6
  68. package/dist/edit-modes/immutable-feature-collection.d.ts +2 -1
  69. package/dist/edit-modes/immutable-feature-collection.d.ts.map +1 -0
  70. package/dist/edit-modes/measure-angle-mode.d.ts +4 -3
  71. package/dist/edit-modes/measure-angle-mode.d.ts.map +1 -0
  72. package/dist/edit-modes/measure-angle-mode.js +2 -2
  73. package/dist/edit-modes/measure-area-mode.d.ts +4 -3
  74. package/dist/edit-modes/measure-area-mode.d.ts.map +1 -0
  75. package/dist/edit-modes/measure-area-mode.js +1 -1
  76. package/dist/edit-modes/measure-distance-mode.d.ts +4 -3
  77. package/dist/edit-modes/measure-distance-mode.d.ts.map +1 -0
  78. package/dist/edit-modes/measure-distance-mode.js +2 -2
  79. package/dist/edit-modes/modify-mode.d.ts +5 -4
  80. package/dist/edit-modes/modify-mode.d.ts.map +1 -0
  81. package/dist/edit-modes/modify-mode.js +6 -3
  82. package/dist/edit-modes/resize-circle-mode.d.ts +6 -5
  83. package/dist/edit-modes/resize-circle-mode.d.ts.map +1 -0
  84. package/dist/edit-modes/resize-circle-mode.js +4 -3
  85. package/dist/edit-modes/rotate-mode.d.ts +4 -3
  86. package/dist/edit-modes/rotate-mode.d.ts.map +1 -0
  87. package/dist/edit-modes/rotate-mode.js +5 -4
  88. package/dist/edit-modes/scale-mode.d.ts +4 -3
  89. package/dist/edit-modes/scale-mode.d.ts.map +1 -0
  90. package/dist/edit-modes/scale-mode.js +5 -4
  91. package/dist/edit-modes/snappable-mode.d.ts +4 -3
  92. package/dist/edit-modes/snappable-mode.d.ts.map +1 -0
  93. package/dist/edit-modes/snappable-mode.js +2 -2
  94. package/dist/edit-modes/split-polygon-mode.d.ts +4 -3
  95. package/dist/edit-modes/split-polygon-mode.d.ts.map +1 -0
  96. package/dist/edit-modes/split-polygon-mode.js +3 -3
  97. package/dist/edit-modes/three-click-polygon-mode.d.ts +4 -3
  98. package/dist/edit-modes/three-click-polygon-mode.d.ts.map +1 -0
  99. package/dist/edit-modes/three-click-polygon-mode.js +4 -2
  100. package/dist/edit-modes/transform-mode.d.ts +4 -3
  101. package/dist/edit-modes/transform-mode.d.ts.map +1 -0
  102. package/dist/edit-modes/transform-mode.js +7 -4
  103. package/dist/edit-modes/translate-mode.d.ts +4 -3
  104. package/dist/edit-modes/translate-mode.d.ts.map +1 -0
  105. package/dist/edit-modes/translate-mode.js +6 -5
  106. package/dist/edit-modes/two-click-polygon-mode.d.ts +4 -3
  107. package/dist/edit-modes/two-click-polygon-mode.d.ts.map +1 -0
  108. package/dist/edit-modes/two-click-polygon-mode.js +4 -5
  109. package/dist/edit-modes/types.d.ts +3 -1
  110. package/dist/edit-modes/types.d.ts.map +1 -0
  111. package/dist/edit-modes/utils.d.ts +5 -3
  112. package/dist/edit-modes/utils.d.ts.map +1 -0
  113. package/dist/edit-modes/utils.js +5 -1
  114. package/dist/edit-modes/view-mode.d.ts +2 -1
  115. package/dist/edit-modes/view-mode.d.ts.map +1 -0
  116. package/dist/edit-modes/view-mode.js +1 -1
  117. package/dist/editable-layers/editable-geojson-layer.d.ts +10 -9
  118. package/dist/editable-layers/editable-geojson-layer.d.ts.map +1 -0
  119. package/dist/editable-layers/editable-geojson-layer.js +30 -28
  120. package/dist/editable-layers/editable-h3-cluster-layer.d.ts +3 -2
  121. package/dist/editable-layers/editable-h3-cluster-layer.d.ts.map +1 -0
  122. package/dist/editable-layers/editable-h3-cluster-layer.js +4 -5
  123. package/dist/editable-layers/editable-layer.d.ts +7 -4
  124. package/dist/editable-layers/editable-layer.d.ts.map +1 -0
  125. package/dist/editable-layers/editable-layer.js +8 -4
  126. package/dist/editable-layers/editable-path-layer.d.ts +14 -1
  127. package/dist/editable-layers/editable-path-layer.d.ts.map +1 -0
  128. package/dist/editable-layers/editable-path-layer.js +21 -13
  129. package/dist/editable-layers/elevated-edit-handle-layer.d.ts +1 -0
  130. package/dist/editable-layers/elevated-edit-handle-layer.d.ts.map +1 -0
  131. package/dist/editable-layers/junction-scatterplot-layer.d.ts +6 -3
  132. package/dist/editable-layers/junction-scatterplot-layer.d.ts.map +1 -0
  133. package/dist/editable-layers/selection-layer.d.ts +3 -1
  134. package/dist/editable-layers/selection-layer.d.ts.map +1 -0
  135. package/dist/editable-layers/selection-layer.js +4 -5
  136. package/dist/index.cjs +127 -45
  137. package/dist/index.cjs.map +4 -4
  138. package/dist/index.d.ts +60 -58
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +52 -52
  141. package/dist/lib/constants.d.ts +1 -0
  142. package/dist/lib/constants.d.ts.map +1 -0
  143. package/dist/lib/deck-renderer/deck-cache.d.ts +1 -0
  144. package/dist/lib/deck-renderer/deck-cache.d.ts.map +1 -0
  145. package/dist/lib/deck-renderer/deck-drawer.d.ts +2 -1
  146. package/dist/lib/deck-renderer/deck-drawer.d.ts.map +1 -0
  147. package/dist/lib/feature.d.ts +3 -2
  148. package/dist/lib/feature.d.ts.map +1 -0
  149. package/dist/lib/layer-mouse-event.d.ts +2 -1
  150. package/dist/lib/layer-mouse-event.d.ts.map +1 -0
  151. package/dist/lib/layers/junctions-layer.d.ts +4 -3
  152. package/dist/lib/layers/junctions-layer.d.ts.map +1 -0
  153. package/dist/lib/layers/junctions-layer.js +4 -4
  154. package/dist/lib/layers/segments-layer.d.ts +3 -2
  155. package/dist/lib/layers/segments-layer.d.ts.map +1 -0
  156. package/dist/lib/layers/segments-layer.js +4 -4
  157. package/dist/lib/layers/texts-layer.d.ts +3 -2
  158. package/dist/lib/layers/texts-layer.d.ts.map +1 -0
  159. package/dist/lib/layers/texts-layer.js +4 -4
  160. package/dist/lib/math.d.ts +2 -1
  161. package/dist/lib/math.d.ts.map +1 -0
  162. package/dist/lib/nebula-core.d.ts +2 -1
  163. package/dist/lib/nebula-core.d.ts.map +1 -0
  164. package/dist/lib/nebula-core.js +3 -3
  165. package/dist/lib/nebula-layer.d.ts +2 -1
  166. package/dist/lib/nebula-layer.d.ts.map +1 -0
  167. package/dist/lib/style.d.ts +1 -0
  168. package/dist/lib/style.d.ts.map +1 -0
  169. package/dist/mode-handlers/composite-mode-handler.d.ts +4 -3
  170. package/dist/mode-handlers/composite-mode-handler.d.ts.map +1 -0
  171. package/dist/mode-handlers/composite-mode-handler.js +1 -1
  172. package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts +4 -3
  173. package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts.map +1 -0
  174. package/dist/mode-handlers/draw-90degree-polygon-handler.js +2 -2
  175. package/dist/mode-handlers/draw-circle-by-bounding-box-handler.d.ts +4 -3
  176. package/dist/mode-handlers/draw-circle-by-bounding-box-handler.d.ts.map +1 -0
  177. package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js +2 -2
  178. package/dist/mode-handlers/draw-circle-from-center-handler.d.ts +4 -3
  179. package/dist/mode-handlers/draw-circle-from-center-handler.d.ts.map +1 -0
  180. package/dist/mode-handlers/draw-circle-from-center-handler.js +1 -1
  181. package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts +4 -3
  182. package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts.map +1 -0
  183. package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js +2 -2
  184. package/dist/mode-handlers/draw-ellipse-using-three-points-handler.d.ts +4 -3
  185. package/dist/mode-handlers/draw-ellipse-using-three-points-handler.d.ts.map +1 -0
  186. package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js +2 -2
  187. package/dist/mode-handlers/draw-line-string-handler.d.ts +3 -2
  188. package/dist/mode-handlers/draw-line-string-handler.d.ts.map +1 -0
  189. package/dist/mode-handlers/draw-line-string-handler.js +1 -1
  190. package/dist/mode-handlers/draw-point-handler.d.ts +3 -2
  191. package/dist/mode-handlers/draw-point-handler.d.ts.map +1 -0
  192. package/dist/mode-handlers/draw-point-handler.js +1 -1
  193. package/dist/mode-handlers/draw-polygon-handler.d.ts +4 -3
  194. package/dist/mode-handlers/draw-polygon-handler.d.ts.map +1 -0
  195. package/dist/mode-handlers/draw-polygon-handler.js +1 -1
  196. package/dist/mode-handlers/draw-rectangle-handler.d.ts +4 -3
  197. package/dist/mode-handlers/draw-rectangle-handler.d.ts.map +1 -0
  198. package/dist/mode-handlers/draw-rectangle-handler.js +1 -1
  199. package/dist/mode-handlers/draw-rectangle-using-three-points-handler.d.ts +4 -3
  200. package/dist/mode-handlers/draw-rectangle-using-three-points-handler.d.ts.map +1 -0
  201. package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js +2 -2
  202. package/dist/mode-handlers/duplicate-handler.d.ts +4 -3
  203. package/dist/mode-handlers/duplicate-handler.d.ts.map +1 -0
  204. package/dist/mode-handlers/duplicate-handler.js +1 -1
  205. package/dist/mode-handlers/elevation-handler.d.ts +5 -4
  206. package/dist/mode-handlers/elevation-handler.d.ts.map +1 -0
  207. package/dist/mode-handlers/elevation-handler.js +2 -2
  208. package/dist/mode-handlers/extrude-handler.d.ts +4 -3
  209. package/dist/mode-handlers/extrude-handler.d.ts.map +1 -0
  210. package/dist/mode-handlers/extrude-handler.js +3 -3
  211. package/dist/mode-handlers/mode-handler.d.ts +4 -3
  212. package/dist/mode-handlers/mode-handler.d.ts.map +1 -0
  213. package/dist/mode-handlers/mode-handler.js +1 -1
  214. package/dist/mode-handlers/modify-handler.d.ts +5 -4
  215. package/dist/mode-handlers/modify-handler.d.ts.map +1 -0
  216. package/dist/mode-handlers/modify-handler.js +2 -2
  217. package/dist/mode-handlers/rotate-handler.d.ts +4 -3
  218. package/dist/mode-handlers/rotate-handler.d.ts.map +1 -0
  219. package/dist/mode-handlers/rotate-handler.js +1 -1
  220. package/dist/mode-handlers/scale-handler.d.ts +4 -3
  221. package/dist/mode-handlers/scale-handler.d.ts.map +1 -0
  222. package/dist/mode-handlers/scale-handler.js +1 -1
  223. package/dist/mode-handlers/snappable-handler.d.ts +4 -3
  224. package/dist/mode-handlers/snappable-handler.d.ts.map +1 -0
  225. package/dist/mode-handlers/snappable-handler.js +1 -1
  226. package/dist/mode-handlers/split-polygon-handler.d.ts +3 -2
  227. package/dist/mode-handlers/split-polygon-handler.d.ts.map +1 -0
  228. package/dist/mode-handlers/split-polygon-handler.js +2 -2
  229. package/dist/mode-handlers/three-click-polygon-handler.d.ts +3 -2
  230. package/dist/mode-handlers/three-click-polygon-handler.d.ts.map +1 -0
  231. package/dist/mode-handlers/three-click-polygon-handler.js +1 -1
  232. package/dist/mode-handlers/translate-handler.d.ts +4 -3
  233. package/dist/mode-handlers/translate-handler.d.ts.map +1 -0
  234. package/dist/mode-handlers/translate-handler.js +1 -1
  235. package/dist/mode-handlers/two-click-polygon-handler.d.ts +3 -2
  236. package/dist/mode-handlers/two-click-polygon-handler.d.ts.map +1 -0
  237. package/dist/mode-handlers/two-click-polygon-handler.js +1 -1
  238. package/dist/mode-handlers/view-handler.d.ts +3 -2
  239. package/dist/mode-handlers/view-handler.d.ts.map +1 -0
  240. package/dist/mode-handlers/view-handler.js +1 -1
  241. package/dist/shaderlib/color/color.d.ts +13 -2
  242. package/dist/shaderlib/color/color.d.ts.map +1 -0
  243. package/dist/shaderlib/color/color.js +25 -18
  244. package/dist/shaderlib/utils/utils.d.ts +1 -0
  245. package/dist/shaderlib/utils/utils.d.ts.map +1 -0
  246. package/dist/utils/curve-utils.d.ts +1 -0
  247. package/dist/utils/curve-utils.d.ts.map +1 -0
  248. package/dist/utils/geojson-types.d.ts +1 -0
  249. package/dist/utils/geojson-types.d.ts.map +1 -0
  250. package/dist/utils/memoize.d.ts +1 -0
  251. package/dist/utils/memoize.d.ts.map +1 -0
  252. package/dist/utils/translate-from-center.d.ts +1 -0
  253. package/dist/utils/translate-from-center.d.ts.map +1 -0
  254. package/dist/utils/translate-from-center.js +4 -4
  255. package/dist/utils/types.d.ts +1 -0
  256. package/dist/utils/types.d.ts.map +1 -0
  257. package/dist/utils/utils.d.ts +5 -4
  258. package/dist/utils/utils.d.ts.map +1 -0
  259. package/dist/utils/utils.js +4 -4
  260. package/package.json +11 -10
  261. package/src/edit-modes/delete-mode.ts +28 -0
  262. package/src/edit-modes/draw-circle-by-diameter-mode.ts +4 -0
  263. package/src/edit-modes/draw-circle-from-center-mode.ts +4 -0
  264. package/src/edit-modes/draw-ellipse-by-bounding-box-mode.ts +10 -1
  265. package/src/edit-modes/draw-ellipse-using-three-points-mode.ts +11 -1
  266. package/src/edit-modes/extend-line-string-mode.ts +4 -0
  267. package/src/edit-modes/extrude-mode.ts +6 -1
  268. package/src/edit-modes/geojson-edit-mode.ts +9 -4
  269. package/src/edit-modes/measure-distance-mode.ts +1 -1
  270. package/src/edit-modes/modify-mode.ts +6 -1
  271. package/src/edit-modes/resize-circle-mode.ts +1 -0
  272. package/src/edit-modes/rotate-mode.ts +2 -1
  273. package/src/edit-modes/scale-mode.ts +2 -1
  274. package/src/edit-modes/split-polygon-mode.ts +4 -2
  275. package/src/edit-modes/three-click-polygon-mode.ts +7 -1
  276. package/src/edit-modes/transform-mode.ts +4 -0
  277. package/src/edit-modes/translate-mode.ts +4 -2
  278. package/src/edit-modes/two-click-polygon-mode.ts +3 -4
  279. package/src/edit-modes/types.ts +1 -0
  280. package/src/edit-modes/utils.ts +10 -3
  281. package/src/editable-layers/editable-geojson-layer.ts +6 -4
  282. package/src/editable-layers/editable-h3-cluster-layer.ts +1 -1
  283. package/src/editable-layers/editable-layer.ts +12 -4
  284. package/src/editable-layers/editable-path-layer.ts +29 -15
  285. package/src/editable-layers/junction-scatterplot-layer.ts +4 -2
  286. package/src/editable-layers/selection-layer.ts +2 -1
  287. package/src/index.ts +2 -0
  288. package/src/mode-handlers/split-polygon-handler.ts +2 -1
  289. package/src/shaderlib/color/color.ts +34 -20
  290. package/src/utils/translate-from-center.ts +5 -5
  291. package/src/utils/utils.ts +4 -4
@@ -11,6 +11,7 @@ import {
11
11
  } from './types';
12
12
  import {Position, Polygon, FeatureOf, FeatureCollection} from '../utils/geojson-types';
13
13
  import {GeoJsonEditMode} from './geojson-edit-mode';
14
+ import {omit} from 'lodash';
14
15
 
15
16
  export class ThreeClickPolygonMode extends GeoJsonEditMode {
16
17
  handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {
@@ -23,7 +24,11 @@ export class ThreeClickPolygonMode extends GeoJsonEditMode {
23
24
  tentativeFeature &&
24
25
  tentativeFeature.geometry.type === 'Polygon'
25
26
  ) {
26
- const editAction = this.getAddFeatureOrBooleanPolygonAction(tentativeFeature.geometry, props);
27
+ const editAction = this.getAddFeatureOrBooleanPolygonAction(
28
+ tentativeFeature.geometry,
29
+ props,
30
+ omit(tentativeFeature.properties, 'guideType')
31
+ );
27
32
  this.resetClickSequence();
28
33
 
29
34
  if (editAction) {
@@ -70,6 +75,7 @@ export class ThreeClickPolygonMode extends GeoJsonEditMode {
70
75
  guides.features.push({
71
76
  type: 'Feature',
72
77
  properties: {
78
+ ...polygon.properties,
73
79
  guideType: 'tentative'
74
80
  },
75
81
  geometry: polygon.geometry
@@ -33,6 +33,10 @@ export class TransformMode extends CompositeMode {
33
33
  let translateMode: TranslateMode | null = null;
34
34
  const filteredModes: GeoJsonEditMode[] = [];
35
35
 
36
+ if (event.picks.length) {
37
+ event.cancelPan();
38
+ }
39
+
36
40
  // If the user selects a scaling edit handle that overlaps with part of the selected feature,
37
41
  // it is possible for both scale and translate actions to be triggered. This logic prevents
38
42
  // this simultaneous action trigger from happening by putting a higher priority on scaling
@@ -5,8 +5,9 @@
5
5
  import turfBearing from '@turf/bearing';
6
6
  import turfDistance from '@turf/distance';
7
7
  import clone from '@turf/clone';
8
- import {point, Feature as TurfFeature, Geometry as TurfGeometry} from '@turf/helpers';
9
- import WebMercatorViewport from 'viewport-mercator-project';
8
+ import type {Feature as TurfFeature, Geometry as TurfGeometry} from '@turf/helpers';
9
+ import {point} from '@turf/helpers';
10
+ import {WebMercatorViewport} from 'viewport-mercator-project';
10
11
  import {FeatureCollection, Position, Geometry} from '../utils/geojson-types';
11
12
  import {
12
13
  PointerMoveEvent,
@@ -59,6 +60,7 @@ export class TranslateMode extends GeoJsonEditMode {
59
60
  return;
60
61
  }
61
62
 
63
+ event.cancelPan();
62
64
  this._geometryBeforeTranslate = this.getSelectedFeaturesAsFeatureCollection(props);
63
65
  }
64
66
 
@@ -13,6 +13,7 @@ import {
13
13
  } from './types';
14
14
  import {Polygon, FeatureCollection, FeatureOf, Position} from '../utils/geojson-types';
15
15
  import {GeoJsonEditMode} from './geojson-edit-mode';
16
+ import {omit} from 'lodash';
16
17
 
17
18
  export class TwoClickPolygonMode extends GeoJsonEditMode {
18
19
  handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {
@@ -57,9 +58,7 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
57
58
  ) {
58
59
  const feature: FeatureOf<Polygon> = {
59
60
  type: 'Feature',
60
- properties: {
61
- shape: tentativeFeature.properties.shape
62
- },
61
+ properties: omit(tentativeFeature.properties, 'guideType'),
63
62
  geometry: {
64
63
  type: 'Polygon',
65
64
  coordinates: tentativeFeature.geometry.coordinates
@@ -97,7 +96,7 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
97
96
  guides.features.push({
98
97
  type: 'Feature',
99
98
  properties: {
100
- shape: polygon.properties && polygon.properties.shape,
99
+ ...polygon.properties,
101
100
  guideType: 'tentative'
102
101
  },
103
102
  geometry: polygon.geometry
@@ -18,6 +18,7 @@ export type Pick = {
18
18
  index: number;
19
19
  object?: any;
20
20
  isGuide?: boolean;
21
+ featureType?: string;
21
22
  featureIndex?: number;
22
23
  type?: string;
23
24
  isEditingHandle?: boolean | null;
@@ -2,14 +2,17 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
+ /* eslint-disable no-shadow */
6
+
5
7
  import destination from '@turf/destination';
6
8
  import bearing from '@turf/bearing';
7
9
  import pointToLineDistance from '@turf/point-to-line-distance';
8
10
  import {flattenEach} from '@turf/meta';
9
- import {point, MultiLineString} from '@turf/helpers';
11
+ import type {MultiLineString} from '@turf/helpers';
12
+ import {point} from '@turf/helpers';
10
13
  import {getCoords} from '@turf/invariant';
11
- import WebMercatorViewport from 'viewport-mercator-project';
12
- import {Viewport, Pick, EditHandleFeature, EditHandleType} from './types';
14
+ import {WebMercatorViewport} from 'viewport-mercator-project';
15
+ import {Viewport, Pick, EditHandleFeature, EditHandleType, StartDraggingEvent} from './types';
13
16
  import {
14
17
  Geometry,
15
18
  Position,
@@ -514,3 +517,7 @@ export function mapCoords(
514
517
  })
515
518
  .filter(Boolean);
516
519
  }
520
+
521
+ export function shouldCancelPan(event: StartDraggingEvent) {
522
+ return event.picks.length && event.picks.find((p) => p.featureType === 'points');
523
+ }
@@ -40,6 +40,7 @@ import {Draw90DegreePolygonMode} from '../edit-modes/draw-90degree-polygon-mode'
40
40
  import {DrawPolygonByDraggingMode} from '../edit-modes/draw-polygon-by-dragging-mode';
41
41
  import {SnappableMode} from '../edit-modes/snappable-mode';
42
42
  import {TransformMode} from '../edit-modes/transform-mode';
43
+ import {DeleteMode} from '../edit-modes/delete-mode';
43
44
  import {GeoJsonEditModeType} from '../edit-modes/geojson-edit-mode';
44
45
 
45
46
  import {Color} from '../utils/types';
@@ -112,7 +113,7 @@ function getEditHandleRadius(handle) {
112
113
  }
113
114
  }
114
115
 
115
- export type EditableGeojsonLayerProps<DataT = any> = EditableLayerProps & {
116
+ export type EditableGeoJsonLayerProps<DataT = any> = EditableLayerProps & {
116
117
  data: DataT;
117
118
  mode?: any;
118
119
  modeConfig?: any;
@@ -172,7 +173,7 @@ export type EditableGeojsonLayerProps<DataT = any> = EditableLayerProps & {
172
173
  billboard?: boolean;
173
174
  };
174
175
 
175
- const defaultProps: DefaultProps<EditableGeojsonLayerProps<any>> = {
176
+ const defaultProps: DefaultProps<EditableGeoJsonLayerProps<any>> = {
176
177
  mode: DEFAULT_EDIT_MODE,
177
178
 
178
179
  // Edit and interaction events
@@ -250,6 +251,7 @@ const modeNameMapping = {
250
251
  split: SplitPolygonMode,
251
252
  extrude: ExtrudeMode,
252
253
  elevation: ElevationMode,
254
+ delete: DeleteMode,
253
255
 
254
256
  // Draw modes
255
257
  drawPoint: DrawPointMode,
@@ -270,7 +272,7 @@ const modeNameMapping = {
270
272
 
271
273
  export class EditableGeoJsonLayer extends EditableLayer<
272
274
  FeatureCollection,
273
- EditableGeojsonLayerProps<FeatureCollection>
275
+ EditableGeoJsonLayerProps<FeatureCollection>
274
276
  > {
275
277
  static layerName = 'EditableGeoJsonLayer';
276
278
  static defaultProps = defaultProps;
@@ -411,7 +413,7 @@ export class EditableGeoJsonLayer extends EditableLayer<
411
413
  this.setState({selectedFeatures});
412
414
  }
413
415
 
414
- getModeProps(props: EditableGeojsonLayerProps<any>) {
416
+ getModeProps(props: EditableGeoJsonLayerProps<any>) {
415
417
  return {
416
418
  modeConfig: props.modeConfig,
417
419
  data: props.data,
@@ -4,8 +4,8 @@
4
4
 
5
5
  /* eslint-env browser */
6
6
 
7
+ import type {DefaultProps} from '@deck.gl/core';
7
8
  import {H3ClusterLayer} from '@deck.gl/geo-layers';
8
- import {DefaultProps} from '@deck.gl/core';
9
9
  // TODO: Fix H3 support.
10
10
  // import { polyfill, geoToH3 } from 'h3-js';
11
11
  import {PROJECTED_PIXEL_SIZE_MULTIPLIER} from '../constants';
@@ -4,7 +4,8 @@
4
4
 
5
5
  /* eslint-env browser */
6
6
 
7
- import {CompositeLayer, CompositeLayerProps} from '@deck.gl/core';
7
+ import type {CompositeLayerProps} from '@deck.gl/core';
8
+ import {CompositeLayer} from '@deck.gl/core';
8
9
  import {
9
10
  DraggingEvent,
10
11
  ClickEvent,
@@ -14,12 +15,13 @@ import {
14
15
  } from '../edit-modes/types';
15
16
  import {Position} from '../utils/geojson-types';
16
17
 
17
- const EVENT_TYPES = ['anyclick', 'pointermove', 'panstart', 'panmove', 'panend', 'keyup'];
18
+ const EVENT_TYPES = ['click', 'pointermove', 'panstart', 'panmove', 'panend', 'keyup'];
18
19
 
19
20
  // TODO(v9): remove generic layer
20
21
  export type EditableLayerProps<DataType = any> = CompositeLayerProps & {
21
22
  pickingRadius?: number;
22
23
  pickingDepth?: number;
24
+ onCancelPan?: () => void;
23
25
  };
24
26
 
25
27
  export abstract class EditableLayer<
@@ -116,7 +118,7 @@ export abstract class EditableLayer<
116
118
  func(event);
117
119
  }
118
120
 
119
- _onanyclick({srcEvent}: any) {
121
+ _onclick({srcEvent}: any) {
120
122
  const screenCoords = this.getScreenCoords(srcEvent) as [number, number];
121
123
  const mapCoords = this.getMapCoords(screenCoords);
122
124
 
@@ -154,7 +156,13 @@ export abstract class EditableLayer<
154
156
  mapCoords,
155
157
  pointerDownScreenCoords: screenCoords,
156
158
  pointerDownMapCoords: mapCoords,
157
- cancelPan: event.stopImmediatePropagation,
159
+ cancelPan: () => {
160
+ if (this.props.onCancelPan) {
161
+ this.props.onCancelPan();
162
+ }
163
+
164
+ event.stopImmediatePropagation();
165
+ },
158
166
  sourceEvent: event.srcEvent
159
167
  });
160
168
  }
@@ -2,10 +2,31 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- import {PathLayer, PathLayerProps} from '@deck.gl/layers';
5
+ import type {PathLayerProps} from '@deck.gl/layers';
6
+ import {PathLayer} from '@deck.gl/layers';
7
+ import type {ShaderModule} from '@luma.gl/shadertools';
6
8
 
7
9
  import {insertBefore} from '../utils/utils';
8
10
 
11
+ const uniformBlock = `\
12
+ uniform pickingLineWidthUniforms {
13
+ float extraPixels;
14
+ } pickingLineWidth;
15
+ `;
16
+
17
+ export type PickingLineWidthProps = {
18
+ extraPixels: number;
19
+ };
20
+
21
+ export const pickingUniforms = {
22
+ name: 'pickingLineWidth',
23
+ vs: uniformBlock,
24
+ fs: uniformBlock,
25
+ uniformTypes: {
26
+ extraPixels: 'f32'
27
+ }
28
+ } as const satisfies ShaderModule<PickingLineWidthProps>;
29
+
9
30
  interface EditablePathLayerProps extends PathLayerProps<any> {
10
31
  pickingLineWidthExtraPixels?: number;
11
32
  }
@@ -24,30 +45,23 @@ export class EditablePathLayer extends PathLayer<any, EditablePathLayerProps> {
24
45
  'vec3 width;',
25
46
  `
26
47
  if(bool(picking.isActive)){
27
- widthPixels.xy += pickingLineWidthExtraPixels;
48
+ widthPixels.xy += pickingLineWidth.extraPixels;
28
49
  }
29
50
  `
30
51
  );
31
52
 
32
53
  return {
33
54
  ...shaders,
34
- inject: {
35
- ...(shaders.inject || {}),
36
- 'vs:#decl': (shaders.inject?.['vs:#decl'] || '').concat(
37
- 'uniform float pickingLineWidthExtraPixels;'
38
- )
39
- }
55
+ modules: [...shaders.modules, pickingUniforms]
40
56
  };
41
57
  }
42
58
 
43
59
  draw(props) {
44
- super.draw({
45
- ...props,
46
- uniforms: {
47
- ...props.uniforms,
48
- pickingLineWidthExtraPixels: this.props.pickingLineWidthExtraPixels
49
- }
50
- });
60
+ const {pickingLineWidthExtraPixels} = this.props;
61
+ const pickingProps: PickingLineWidthProps = {extraPixels: pickingLineWidthExtraPixels};
62
+ const model = this.state.model;
63
+ model.shaderInputs.setProps({pickingLineWidth: pickingProps});
64
+ super.draw(props);
51
65
  }
52
66
  }
53
67
 
@@ -2,8 +2,10 @@
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
4
 
5
- import {CompositeLayer, CompositeLayerProps, DefaultProps} from '@deck.gl/core';
6
- import {ScatterplotLayer, ScatterplotLayerProps} from '@deck.gl/layers';
5
+ import type {CompositeLayerProps, DefaultProps} from '@deck.gl/core';
6
+ import {CompositeLayer} from '@deck.gl/core';
7
+ import type {ScatterplotLayerProps} from '@deck.gl/layers';
8
+ import {ScatterplotLayer} from '@deck.gl/layers';
7
9
 
8
10
  import {Color} from '../utils/types';
9
11
 
@@ -4,7 +4,8 @@
4
4
 
5
5
  /* eslint-env browser */
6
6
 
7
- import {CompositeLayer, CompositeLayerProps, DefaultProps} from '@deck.gl/core';
7
+ import type {CompositeLayerProps, DefaultProps} from '@deck.gl/core';
8
+ import {CompositeLayer} from '@deck.gl/core';
8
9
  import {PolygonLayer} from '@deck.gl/layers';
9
10
  import {polygon} from '@turf/helpers';
10
11
  import turfBuffer from '@turf/buffer';
package/src/index.ts CHANGED
@@ -44,6 +44,8 @@ export type {EditMode} from './edit-modes/edit-mode';
44
44
  export type {GeoJsonEditModeType} from './edit-modes/geojson-edit-mode';
45
45
  export type {GeoJsonEditModeConstructor} from './edit-modes/geojson-edit-mode';
46
46
 
47
+ export type {EditableGeoJsonLayerProps} from './editable-layers/editable-geojson-layer';
48
+
47
49
  export {GeoJsonEditMode} from './edit-modes/geojson-edit-mode';
48
50
 
49
51
  // Alter modes
@@ -11,7 +11,8 @@ import turfBearing from '@turf/bearing';
11
11
  import turfDistance from '@turf/distance';
12
12
  import turfDestination from '@turf/destination';
13
13
  import turfPolygonToLine from '@turf/polygon-to-line';
14
- import nearestPointOnLine, {NearestPointOnLine} from '@turf/nearest-point-on-line';
14
+ import type {NearestPointOnLine} from '@turf/nearest-point-on-line';
15
+ import nearestPointOnLine from '@turf/nearest-point-on-line';
15
16
  import {generatePointsParallelToLinePoints} from '../utils/utils';
16
17
  import {EditAction, ModeHandler} from './mode-handler';
17
18
  import {ClickEvent, PointerMoveEvent} from '../edit-modes/types';
@@ -4,19 +4,28 @@
4
4
 
5
5
  import type {ShaderModule} from '@luma.gl/shadertools';
6
6
 
7
- /* eslint-disable camelcase */
8
- const INITIAL_STATE: Record<string, number> = {
9
- color_uOpacity: 1.0,
10
- color_uDesaturate: 0.0,
11
- color_uBrightness: 1.0
7
+ const uniformBlock = `\
8
+ uniform colorUniforms {
9
+ float opacity;
10
+ float desaturate;
11
+ float brightness;
12
+ } color;
13
+ `;
14
+
15
+ export type ColorProps = {
16
+ opacity: number;
17
+ desaturate: number;
18
+ brightness: number;
19
+ };
20
+
21
+ const INITIAL_STATE: ColorProps = {
22
+ opacity: 1.0,
23
+ desaturate: 0.0,
24
+ brightness: 1.0
12
25
  };
13
26
 
14
27
  function getUniforms(opts = INITIAL_STATE) {
15
- const uniforms: Record<string, number> = {};
16
- if (opts.opacity) {
17
- uniforms.color_uOpacity = opts.opacity;
18
- }
19
- return uniforms;
28
+ return opts;
20
29
  }
21
30
 
22
31
  const vs = `\
@@ -28,9 +37,7 @@ color_setColor(vec4 color) {
28
37
  `;
29
38
 
30
39
  const fs = `\
31
- uniform float color_uOpacity;
32
- uniform float color_uDesaturate;
33
- uniform float color_uBrightness;
40
+ ${uniformBlock}
34
41
 
35
42
  in vec4 color_vColor;
36
43
 
@@ -40,14 +47,16 @@ vec4 color_getColor() {
40
47
  return color_vColor;
41
48
  }
42
49
 
43
- vec4 color_filterColor(vec4 color) {
50
+ vec4 color_filterColor(vec4 inputColor) {
51
+ vec4 color = inputColor;
44
52
  // apply desaturation and brightness
45
- if (color_uDesaturate > 0.01) {
46
- float luminance = (color.r + color.g + color.b) * 0.333333333 + color_uBrightness;
47
- color = vec4(mix(color.rgb, vec3(luminance), color_uDesaturate), color.a);
53
+ if (color.desaturate > 0.01) {
54
+ float luminance = (color.r + color.g + color.b) * 0.333333333 + color.brightness;
55
+ color = vec4(mix(color.rgb, vec3(luminance), color.desaturate), color.a);
56
+ }
48
57
 
49
58
  // Apply opacity
50
- color = vec4(color.rgb, color.a * color_uOpacity);
59
+ color = vec4(color.rgb, color.a * color.opacity);
51
60
  return color;
52
61
  }
53
62
  `;
@@ -57,5 +66,10 @@ export const color = {
57
66
  name: 'color',
58
67
  vs,
59
68
  fs,
60
- getUniforms
61
- } as const satisfies ShaderModule;
69
+ getUniforms,
70
+ uniformTypes: {
71
+ opacity: 'f32',
72
+ desaturate: 'f32',
73
+ brightness: 'f32'
74
+ }
75
+ } as const satisfies ShaderModule<ColorProps>;
@@ -12,7 +12,7 @@ import type {
12
12
  Geometry as TurfGeometry
13
13
  } from '@turf/helpers';
14
14
  import {mapCoords} from '../edit-modes/utils';
15
- import type {AnyCoordinates, Position} from './geojson-types';
15
+ import type {AnyCoordinates /* , Position */} from './geojson-types';
16
16
 
17
17
  // This function takes feature's center, moves it,
18
18
  // and builds new feature around it keeping the proportions
@@ -28,19 +28,19 @@ export function translateFromCenter(
28
28
  const movedCoordinates = mapCoords(
29
29
  feature.geometry.coordinates as AnyCoordinates,
30
30
  (coordinate) => {
31
- const distance = turfRhumbDistance(
31
+ const rhumbDistance = turfRhumbDistance(
32
32
  initialCenterPoint.geometry.coordinates,
33
33
  coordinate as TurfPosition
34
34
  );
35
- const direction = turfRhumbBearing(
35
+ const rhumbDirection = turfRhumbBearing(
36
36
  initialCenterPoint.geometry.coordinates,
37
37
  coordinate as TurfPosition
38
38
  );
39
39
 
40
40
  const movedPosition = turfRhumbDestination(
41
41
  movedCenterPoint.geometry.coordinates,
42
- distance,
43
- direction
42
+ rhumbDistance,
43
+ rhumbDirection
44
44
  ).geometry.coordinates;
45
45
  return movedPosition;
46
46
  }
@@ -6,7 +6,7 @@ import destination from '@turf/destination';
6
6
  import bearing from '@turf/bearing';
7
7
  import pointToLineDistance from '@turf/point-to-line-distance';
8
8
  import {point} from '@turf/helpers';
9
- import WebMercatorViewport from 'viewport-mercator-project';
9
+ import {WebMercatorViewport} from 'viewport-mercator-project';
10
10
  import {FeatureOf, FeatureWithProps, LineString, Point, Position} from './geojson-types';
11
11
  import {Viewport} from './types';
12
12
 
@@ -175,12 +175,12 @@ export function nearestPointOnProjectedLine(
175
175
  /**
176
176
  * Inserts toInsert string into base string before insertBefore string.
177
177
  * @param base A string to insert into.
178
- * @param insertBefore A sub string in `base` string to insert before.
178
+ * @param insertBeforeText A sub string in `base` string to insert before.
179
179
  * @param toInsert A string to insert.
180
180
  * @returns Combined string. `base` string if `insertBefore` string isn't found.
181
181
  */
182
- export function insertBefore(base: string, insertBefore: string, toInsert: string): string {
183
- const at = base.indexOf(insertBefore);
182
+ export function insertBefore(base: string, insertBeforeText: string, toInsert: string): string {
183
+ const at = base.indexOf(insertBeforeText);
184
184
  if (at < 0) {
185
185
  return base;
186
186
  }