@deck.gl-community/editable-layers 9.0.0-alpha.1 → 9.0.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 (279) hide show
  1. package/LICENSE +19 -0
  2. package/README.md +2 -81
  3. package/dist/constants.js +4 -1
  4. package/dist/edit-modes/composite-mode.d.ts +1 -1
  5. package/dist/edit-modes/composite-mode.js +4 -1
  6. package/dist/edit-modes/draw-90degree-polygon-mode.d.ts +1 -1
  7. package/dist/edit-modes/draw-90degree-polygon-mode.js +29 -24
  8. package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts +1 -1
  9. package/dist/edit-modes/draw-circle-by-diameter-mode.js +7 -4
  10. package/dist/edit-modes/draw-circle-from-center-mode.d.ts +1 -1
  11. package/dist/edit-modes/draw-circle-from-center-mode.js +7 -4
  12. package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts +1 -1
  13. package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.js +3 -0
  14. package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts +1 -1
  15. package/dist/edit-modes/draw-ellipse-using-three-points-mode.js +3 -0
  16. package/dist/edit-modes/draw-line-string-mode.d.ts +1 -1
  17. package/dist/edit-modes/draw-line-string-mode.js +19 -16
  18. package/dist/edit-modes/draw-point-mode.d.ts +1 -1
  19. package/dist/edit-modes/draw-point-mode.js +7 -4
  20. package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts +1 -1
  21. package/dist/edit-modes/draw-polygon-by-dragging-mode.js +10 -5
  22. package/dist/edit-modes/draw-polygon-mode.d.ts +1 -1
  23. package/dist/edit-modes/draw-polygon-mode.js +20 -16
  24. package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts +1 -1
  25. package/dist/edit-modes/draw-rectangle-from-center-mode.js +3 -0
  26. package/dist/edit-modes/draw-rectangle-mode.d.ts +1 -1
  27. package/dist/edit-modes/draw-rectangle-mode.js +3 -0
  28. package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts +1 -1
  29. package/dist/edit-modes/draw-rectangle-using-three-points-mode.js +8 -5
  30. package/dist/edit-modes/draw-square-from-center-mode.d.ts +1 -1
  31. package/dist/edit-modes/draw-square-from-center-mode.js +3 -0
  32. package/dist/edit-modes/draw-square-mode.d.ts +1 -1
  33. package/dist/edit-modes/draw-square-mode.js +3 -0
  34. package/dist/edit-modes/duplicate-mode.d.ts +1 -1
  35. package/dist/edit-modes/duplicate-mode.js +3 -0
  36. package/dist/edit-modes/edit-mode.js +3 -1
  37. package/dist/edit-modes/elevation-mode.d.ts +2 -2
  38. package/dist/edit-modes/elevation-mode.js +8 -5
  39. package/dist/edit-modes/extend-line-string-mode.d.ts +1 -1
  40. package/dist/edit-modes/extend-line-string-mode.js +9 -6
  41. package/dist/edit-modes/extrude-mode.d.ts +1 -1
  42. package/dist/edit-modes/extrude-mode.js +10 -7
  43. package/dist/edit-modes/geojson-edit-mode.d.ts +1 -1
  44. package/dist/edit-modes/geojson-edit-mode.js +18 -15
  45. package/dist/edit-modes/immutable-feature-collection.d.ts +2 -1
  46. package/dist/edit-modes/immutable-feature-collection.js +25 -20
  47. package/dist/edit-modes/measure-angle-mode.d.ts +1 -1
  48. package/dist/edit-modes/measure-angle-mode.js +8 -8
  49. package/dist/edit-modes/measure-area-mode.d.ts +1 -1
  50. package/dist/edit-modes/measure-area-mode.js +7 -5
  51. package/dist/edit-modes/measure-distance-mode.d.ts +1 -1
  52. package/dist/edit-modes/measure-distance-mode.js +17 -14
  53. package/dist/edit-modes/modify-mode.d.ts +1 -1
  54. package/dist/edit-modes/modify-mode.js +17 -14
  55. package/dist/edit-modes/resize-circle-mode.d.ts +2 -2
  56. package/dist/edit-modes/resize-circle-mode.js +3 -1
  57. package/dist/edit-modes/rotate-mode.d.ts +1 -1
  58. package/dist/edit-modes/rotate-mode.js +8 -5
  59. package/dist/edit-modes/scale-mode.d.ts +1 -1
  60. package/dist/edit-modes/scale-mode.js +8 -5
  61. package/dist/edit-modes/snappable-mode.d.ts +1 -1
  62. package/dist/edit-modes/snappable-mode.js +8 -5
  63. package/dist/edit-modes/split-polygon-mode.d.ts +1 -1
  64. package/dist/edit-modes/split-polygon-mode.js +12 -9
  65. package/dist/edit-modes/three-click-polygon-mode.d.ts +1 -1
  66. package/dist/edit-modes/three-click-polygon-mode.js +9 -6
  67. package/dist/edit-modes/transform-mode.d.ts +1 -1
  68. package/dist/edit-modes/transform-mode.js +4 -1
  69. package/dist/edit-modes/translate-mode.d.ts +1 -1
  70. package/dist/edit-modes/translate-mode.js +7 -4
  71. package/dist/edit-modes/two-click-polygon-mode.d.ts +1 -1
  72. package/dist/edit-modes/two-click-polygon-mode.js +9 -6
  73. package/dist/edit-modes/types.d.ts +1 -1
  74. package/dist/edit-modes/types.js +3 -0
  75. package/dist/edit-modes/utils.d.ts +1 -1
  76. package/dist/edit-modes/utils.js +21 -19
  77. package/dist/edit-modes/view-mode.js +3 -0
  78. package/dist/editable-layers/editable-geojson-layer.d.ts +4 -4
  79. package/dist/editable-layers/editable-geojson-layer.js +27 -26
  80. package/dist/editable-layers/editable-h3-cluster-layer.d.ts +2 -2
  81. package/dist/editable-layers/editable-h3-cluster-layer.js +6 -3
  82. package/dist/editable-layers/editable-layer.d.ts +5 -5
  83. package/dist/editable-layers/editable-layer.js +18 -15
  84. package/dist/editable-layers/editable-path-layer.d.ts +1 -1
  85. package/dist/editable-layers/editable-path-layer.js +10 -7
  86. package/dist/editable-layers/elevated-edit-handle-layer.d.ts +1 -1
  87. package/dist/editable-layers/elevated-edit-handle-layer.js +6 -3
  88. package/dist/editable-layers/junction-scatterplot-layer.d.ts +2 -2
  89. package/dist/editable-layers/junction-scatterplot-layer.js +10 -7
  90. package/dist/editable-layers/selection-layer.d.ts +1 -1
  91. package/dist/editable-layers/selection-layer.js +5 -2
  92. package/dist/index.cjs +65 -537
  93. package/dist/index.cjs.map +4 -4
  94. package/dist/index.d.ts +19 -20
  95. package/dist/index.js +20 -18
  96. package/dist/lib/constants.js +3 -0
  97. package/dist/lib/deck-renderer/deck-cache.d.ts +1 -1
  98. package/dist/lib/deck-renderer/deck-cache.js +1 -1
  99. package/dist/lib/deck-renderer/deck-drawer.d.ts +2 -3
  100. package/dist/lib/deck-renderer/deck-drawer.js +12 -12
  101. package/dist/lib/feature.d.ts +4 -4
  102. package/dist/lib/feature.js +4 -1
  103. package/dist/lib/layer-mouse-event.d.ts +2 -2
  104. package/dist/lib/layer-mouse-event.js +4 -1
  105. package/dist/lib/layers/junctions-layer.d.ts +4 -4
  106. package/dist/lib/layers/junctions-layer.js +10 -7
  107. package/dist/lib/layers/segments-layer.d.ts +4 -4
  108. package/dist/lib/layers/segments-layer.js +11 -8
  109. package/dist/lib/layers/texts-layer.d.ts +3 -3
  110. package/dist/lib/layers/texts-layer.js +8 -5
  111. package/dist/lib/math.d.ts +1 -1
  112. package/dist/lib/math.js +3 -0
  113. package/dist/lib/{nebula.d.ts → nebula-core.d.ts} +2 -2
  114. package/dist/lib/{nebula.js → nebula-core.js} +7 -4
  115. package/dist/lib/nebula-layer.d.ts +2 -2
  116. package/dist/lib/nebula-layer.js +4 -1
  117. package/dist/lib/style.js +5 -2
  118. package/dist/mode-handlers/composite-mode-handler.d.ts +1 -1
  119. package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts +1 -1
  120. package/dist/mode-handlers/draw-90degree-polygon-handler.js +13 -10
  121. package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js +3 -0
  122. package/dist/mode-handlers/draw-circle-from-center-handler.js +3 -0
  123. package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js +3 -0
  124. package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js +5 -2
  125. package/dist/mode-handlers/draw-line-string-handler.js +7 -4
  126. package/dist/mode-handlers/draw-point-handler.js +4 -1
  127. package/dist/mode-handlers/draw-polygon-handler.d.ts +1 -1
  128. package/dist/mode-handlers/draw-polygon-handler.js +10 -7
  129. package/dist/mode-handlers/draw-rectangle-handler.js +3 -0
  130. package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js +11 -8
  131. package/dist/mode-handlers/duplicate-handler.js +3 -0
  132. package/dist/mode-handlers/elevation-handler.d.ts +2 -2
  133. package/dist/mode-handlers/elevation-handler.js +8 -5
  134. package/dist/mode-handlers/extrude-handler.js +10 -7
  135. package/dist/mode-handlers/mode-handler.d.ts +1 -1
  136. package/dist/mode-handlers/mode-handler.js +17 -14
  137. package/dist/mode-handlers/modify-handler.d.ts +2 -2
  138. package/dist/mode-handlers/modify-handler.js +18 -15
  139. package/dist/mode-handlers/rotate-handler.d.ts +1 -1
  140. package/dist/mode-handlers/rotate-handler.js +4 -1
  141. package/dist/mode-handlers/scale-handler.d.ts +1 -1
  142. package/dist/mode-handlers/scale-handler.js +5 -2
  143. package/dist/mode-handlers/snappable-handler.d.ts +1 -1
  144. package/dist/mode-handlers/snappable-handler.js +6 -3
  145. package/dist/mode-handlers/split-polygon-handler.js +11 -8
  146. package/dist/mode-handlers/three-click-polygon-handler.js +3 -0
  147. package/dist/mode-handlers/translate-handler.d.ts +1 -1
  148. package/dist/mode-handlers/translate-handler.js +4 -1
  149. package/dist/mode-handlers/two-click-polygon-handler.js +3 -0
  150. package/dist/mode-handlers/view-handler.d.ts +1 -1
  151. package/dist/mode-handlers/view-handler.js +3 -0
  152. package/dist/shaderlib/color/color.d.ts +7 -6
  153. package/dist/shaderlib/color/color.js +7 -4
  154. package/dist/shaderlib/utils/utils.d.ts +2 -2
  155. package/dist/shaderlib/utils/utils.js +5 -2
  156. package/dist/{curve-utils.js → utils/curve-utils.js} +7 -4
  157. package/dist/{geojson-types.d.ts → utils/geojson-types.d.ts} +2 -25
  158. package/dist/utils/geojson-types.js +4 -0
  159. package/dist/{memoize.d.ts → utils/memoize.d.ts} +1 -1
  160. package/dist/{memoize.js → utils/memoize.js} +4 -1
  161. package/dist/{translateFromCenter.js → utils/translate-from-center.js} +4 -1
  162. package/dist/utils/types.js +4 -0
  163. package/dist/{utils.js → utils/utils.js} +8 -6
  164. package/package.json +10 -10
  165. package/src/constants.ts +5 -1
  166. package/src/edit-modes/composite-mode.ts +9 -5
  167. package/src/edit-modes/draw-90degree-polygon-mode.ts +38 -34
  168. package/src/edit-modes/draw-circle-by-diameter-mode.ts +16 -12
  169. package/src/edit-modes/draw-circle-from-center-mode.ts +15 -11
  170. package/src/edit-modes/draw-ellipse-by-bounding-box-mode.ts +8 -4
  171. package/src/edit-modes/draw-ellipse-using-three-points-mode.ts +9 -5
  172. package/src/edit-modes/draw-line-string-mode.ts +29 -25
  173. package/src/edit-modes/draw-point-mode.ts +13 -9
  174. package/src/edit-modes/draw-polygon-by-dragging-mode.ts +16 -16
  175. package/src/edit-modes/draw-polygon-mode.ts +28 -23
  176. package/src/edit-modes/draw-rectangle-from-center-mode.ts +6 -2
  177. package/src/edit-modes/draw-rectangle-mode.ts +6 -2
  178. package/src/edit-modes/draw-rectangle-using-three-points-mode.ts +12 -8
  179. package/src/edit-modes/draw-square-from-center-mode.ts +7 -3
  180. package/src/edit-modes/draw-square-mode.ts +7 -3
  181. package/src/edit-modes/duplicate-mode.ts +7 -3
  182. package/src/edit-modes/edit-mode.ts +5 -1
  183. package/src/edit-modes/elevation-mode.ts +13 -9
  184. package/src/edit-modes/extend-line-string-mode.ts +16 -12
  185. package/src/edit-modes/extrude-mode.ts +22 -18
  186. package/src/edit-modes/geojson-edit-mode.ts +37 -33
  187. package/src/edit-modes/immutable-feature-collection.ts +28 -22
  188. package/src/edit-modes/measure-angle-mode.ts +66 -59
  189. package/src/edit-modes/measure-area-mode.ts +13 -10
  190. package/src/edit-modes/measure-distance-mode.ts +37 -33
  191. package/src/edit-modes/modify-mode.ts +36 -32
  192. package/src/edit-modes/resize-circle-mode.ts +8 -5
  193. package/src/edit-modes/rotate-mode.ts +22 -18
  194. package/src/edit-modes/scale-mode.ts +29 -23
  195. package/src/edit-modes/snappable-mode.ts +19 -15
  196. package/src/edit-modes/split-polygon-mode.ts +25 -21
  197. package/src/edit-modes/three-click-polygon-mode.ts +15 -11
  198. package/src/edit-modes/transform-mode.ts +15 -11
  199. package/src/edit-modes/translate-mode.ts +15 -11
  200. package/src/edit-modes/two-click-polygon-mode.ts +15 -11
  201. package/src/edit-modes/types.ts +5 -1
  202. package/src/edit-modes/utils.ts +33 -30
  203. package/src/edit-modes/view-mode.ts +5 -1
  204. package/src/editable-layers/editable-geojson-layer.ts +44 -41
  205. package/src/editable-layers/editable-h3-cluster-layer.ts +17 -14
  206. package/src/editable-layers/editable-layer.ts +42 -32
  207. package/src/editable-layers/editable-path-layer.ts +12 -8
  208. package/src/editable-layers/elevated-edit-handle-layer.ts +11 -7
  209. package/src/editable-layers/junction-scatterplot-layer.ts +15 -11
  210. package/src/editable-layers/selection-layer.ts +11 -7
  211. package/src/index.ts +68 -65
  212. package/src/lib/constants.ts +4 -0
  213. package/src/lib/deck-renderer/deck-cache.ts +1 -1
  214. package/src/lib/deck-renderer/deck-drawer.ts +28 -28
  215. package/src/lib/feature.ts +7 -3
  216. package/src/lib/layer-mouse-event.ts +7 -6
  217. package/src/lib/layers/junctions-layer.ts +14 -10
  218. package/src/lib/layers/segments-layer.ts +24 -20
  219. package/src/lib/layers/texts-layer.ts +18 -14
  220. package/src/lib/math.ts +5 -1
  221. package/src/lib/{nebula.ts → nebula-core.ts} +8 -4
  222. package/src/lib/nebula-layer.ts +9 -5
  223. package/src/lib/style.ts +6 -2
  224. package/src/mode-handlers/composite-mode-handler.ts +6 -6
  225. package/src/mode-handlers/draw-90degree-polygon-handler.ts +22 -18
  226. package/src/mode-handlers/draw-circle-by-bounding-box-handler.ts +10 -6
  227. package/src/mode-handlers/draw-circle-from-center-handler.ts +10 -6
  228. package/src/mode-handlers/draw-ellipse-by-bounding-box-handler.ts +9 -5
  229. package/src/mode-handlers/draw-ellipse-using-three-points-handler.ts +12 -8
  230. package/src/mode-handlers/draw-line-string-handler.ts +12 -8
  231. package/src/mode-handlers/draw-point-handler.ts +9 -5
  232. package/src/mode-handlers/draw-polygon-handler.ts +16 -12
  233. package/src/mode-handlers/draw-rectangle-handler.ts +8 -4
  234. package/src/mode-handlers/draw-rectangle-using-three-points-handler.ts +17 -13
  235. package/src/mode-handlers/duplicate-handler.ts +8 -4
  236. package/src/mode-handlers/elevation-handler.ts +14 -10
  237. package/src/mode-handlers/extrude-handler.ts +15 -11
  238. package/src/mode-handlers/mode-handler.ts +26 -28
  239. package/src/mode-handlers/modify-handler.ts +29 -25
  240. package/src/mode-handlers/rotate-handler.ts +13 -17
  241. package/src/mode-handlers/scale-handler.ts +13 -13
  242. package/src/mode-handlers/snappable-handler.ts +28 -24
  243. package/src/mode-handlers/split-polygon-handler.ts +22 -18
  244. package/src/mode-handlers/three-click-polygon-handler.ts +6 -2
  245. package/src/mode-handlers/translate-handler.ts +12 -8
  246. package/src/mode-handlers/two-click-polygon-handler.ts +6 -2
  247. package/src/mode-handlers/view-handler.ts +7 -3
  248. package/src/shaderlib/color/color.ts +10 -5
  249. package/src/shaderlib/utils/utils.ts +6 -2
  250. package/src/{curve-utils.ts → utils/curve-utils.ts} +11 -7
  251. package/src/{geojson-types.ts → utils/geojson-types.ts} +16 -31
  252. package/src/{memoize.ts → utils/memoize.ts} +5 -1
  253. package/src/{translateFromCenter.ts → utils/translate-from-center.ts} +8 -4
  254. package/src/{types.ts → utils/types.ts} +4 -0
  255. package/src/{utils.ts → utils/utils.ts} +14 -11
  256. package/dist/editable-layers/path-marker-layer/arrow-2d-geometry.d.ts +0 -4
  257. package/dist/editable-layers/path-marker-layer/arrow-2d-geometry.js +0 -55
  258. package/dist/editable-layers/path-marker-layer/create-path-markers.d.ts +0 -16
  259. package/dist/editable-layers/path-marker-layer/create-path-markers.js +0 -75
  260. package/dist/editable-layers/path-marker-layer/path-marker-layer.d.ts +0 -40
  261. package/dist/editable-layers/path-marker-layer/path-marker-layer.js +0 -121
  262. package/dist/editable-layers/path-marker-layer/polyline.d.ts +0 -18
  263. package/dist/editable-layers/path-marker-layer/polyline.js +0 -37
  264. package/dist/editable-layers/path-outline-layer/path-outline-layer.d.ts +0 -26
  265. package/dist/editable-layers/path-outline-layer/path-outline-layer.js +0 -106
  266. package/dist/geojson-types.js +0 -2
  267. package/dist/shaderlib/outline/outline.d.ts +0 -8
  268. package/dist/shaderlib/outline/outline.js +0 -97
  269. package/dist/types.js +0 -1
  270. package/src/editable-layers/path-marker-layer/arrow-2d-geometry.ts +0 -61
  271. package/src/editable-layers/path-marker-layer/create-path-markers.ts +0 -107
  272. package/src/editable-layers/path-marker-layer/path-marker-layer.ts +0 -179
  273. package/src/editable-layers/path-marker-layer/polyline.ts +0 -40
  274. package/src/editable-layers/path-outline-layer/path-outline-layer.ts +0 -147
  275. package/src/shaderlib/outline/outline.ts +0 -101
  276. /package/dist/{curve-utils.d.ts → utils/curve-utils.d.ts} +0 -0
  277. /package/dist/{translateFromCenter.d.ts → utils/translate-from-center.d.ts} +0 -0
  278. /package/dist/{types.d.ts → utils/types.d.ts} +0 -0
  279. /package/dist/{utils.d.ts → utils/utils.d.ts} +0 -0
@@ -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
  ClickEvent,
3
7
  StartDraggingEvent,
@@ -5,10 +9,10 @@ import {
5
9
  PointerMoveEvent,
6
10
  ModeProps,
7
11
  GuideFeatureCollection,
8
- TentativeFeature,
12
+ TentativeFeature
9
13
  } from './types';
10
- import { Polygon, FeatureCollection, FeatureOf, Position } from '../geojson-types';
11
- import { GeoJsonEditMode } from './geojson-edit-mode';
14
+ import {Polygon, FeatureCollection, FeatureOf, Position} from '../utils/geojson-types';
15
+ import {GeoJsonEditMode} from './geojson-edit-mode';
12
16
 
13
17
  export class TwoClickPolygonMode extends GeoJsonEditMode {
14
18
  handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {
@@ -54,12 +58,12 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
54
58
  const feature: FeatureOf<Polygon> = {
55
59
  type: 'Feature',
56
60
  properties: {
57
- shape: tentativeFeature.properties.shape,
61
+ shape: tentativeFeature.properties.shape
58
62
  },
59
63
  geometry: {
60
64
  type: 'Polygon',
61
- coordinates: tentativeFeature.geometry.coordinates,
62
- },
65
+ coordinates: tentativeFeature.geometry.coordinates
66
+ }
63
67
  };
64
68
  const editAction = this.getAddFeatureOrBooleanPolygonAction(feature, props);
65
69
 
@@ -72,12 +76,12 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
72
76
  }
73
77
 
74
78
  getGuides(props: ModeProps<FeatureCollection>): GuideFeatureCollection {
75
- const { lastPointerMoveEvent, modeConfig } = props;
79
+ const {lastPointerMoveEvent, modeConfig} = props;
76
80
  const clickSequence = this.getClickSequence();
77
81
 
78
82
  const guides: GuideFeatureCollection = {
79
83
  type: 'FeatureCollection',
80
- features: [],
84
+ features: []
81
85
  };
82
86
 
83
87
  if (clickSequence.length === 0 || !lastPointerMoveEvent) {
@@ -94,9 +98,9 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
94
98
  type: 'Feature',
95
99
  properties: {
96
100
  shape: polygon.properties && polygon.properties.shape,
97
- guideType: 'tentative',
101
+ guideType: 'tentative'
98
102
  },
99
- geometry: polygon.geometry,
103
+ geometry: polygon.geometry
100
104
  });
101
105
  }
102
106
 
@@ -117,7 +121,7 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
117
121
  }
118
122
 
119
123
  createTentativeFeature(props: ModeProps<FeatureCollection>): TentativeFeature {
120
- const { lastPointerMoveEvent } = props;
124
+ const {lastPointerMoveEvent} = props;
121
125
  const clickSequence = this.getClickSequence();
122
126
 
123
127
  const lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];
@@ -1,4 +1,8 @@
1
- import { Position, Point, Geometry, FeatureWithProps } from '../geojson-types';
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {Position, Point, Geometry, FeatureWithProps} from '../utils/geojson-types';
2
6
 
3
7
  export type ScreenCoordinates = [number, number];
4
8
 
@@ -1,11 +1,15 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  import destination from '@turf/destination';
2
6
  import bearing from '@turf/bearing';
3
7
  import pointToLineDistance from '@turf/point-to-line-distance';
4
- import { flattenEach } from '@turf/meta';
5
- import { point, MultiLineString } from '@turf/helpers';
6
- import { getCoords } from '@turf/invariant';
8
+ import {flattenEach} from '@turf/meta';
9
+ import {point, MultiLineString} from '@turf/helpers';
10
+ import {getCoords} from '@turf/invariant';
7
11
  import WebMercatorViewport from 'viewport-mercator-project';
8
- import { Viewport, Pick, EditHandleFeature, EditHandleType } from './types';
12
+ import {Viewport, Pick, EditHandleFeature, EditHandleType} from './types';
9
13
  import {
10
14
  Geometry,
11
15
  Position,
@@ -14,10 +18,10 @@ import {
14
18
  Polygon,
15
19
  FeatureOf,
16
20
  FeatureWithProps,
17
- AnyCoordinates,
18
- } from '../geojson-types';
21
+ AnyCoordinates
22
+ } from '../utils/geojson-types';
19
23
 
20
- export type NearestPointType = FeatureWithProps<Point, { dist: number; index: number }>;
24
+ export type NearestPointType = FeatureWithProps<Point, {dist: number; index: number}>;
21
25
 
22
26
  export function toDeckColor(
23
27
  color?: [number, number, number, number] | number,
@@ -78,7 +82,7 @@ export function generatePointsParallelToLinePoints(
78
82
  ): Position[] {
79
83
  const lineString: LineString = {
80
84
  type: 'LineString',
81
- coordinates: [p1, p2],
85
+ coordinates: [p1, p2]
82
86
  };
83
87
  const pt = point(mapCoords);
84
88
  const ddistance = pointToLineDistance(pt, lineString);
@@ -150,12 +154,12 @@ export function nearestPointOnProjectedLine(
150
154
  minPointInfo = {
151
155
  index,
152
156
  x0: (B * (B * x - A * y) - A * C) / div,
153
- y0: (A * (-B * x + A * y) - B * C) / div,
157
+ y0: (A * (-B * x + A * y) - B * C) / div
154
158
  };
155
159
  }
156
160
  });
157
- // @ts-ignore
158
- const { index, x0, y0 } = minPointInfo;
161
+ // @ts-expect-error TODO
162
+ const {index, x0, y0} = minPointInfo;
159
163
  const [x1, y1, z1 = 0] = projectedCoords[index - 1];
160
164
  const [x2, y2, z2 = 0] = projectedCoords[index];
161
165
 
@@ -169,14 +173,13 @@ export function nearestPointOnProjectedLine(
169
173
  type: 'Feature',
170
174
  geometry: {
171
175
  type: 'Point',
172
- // @ts-expect-error
173
- coordinates: wmViewport.unproject([x0, y0, z0]),
176
+ coordinates: wmViewport.unproject([x0, y0, z0])
174
177
  },
175
178
  properties: {
176
179
  // TODO: calculate the distance in proper units
177
180
  dist: minDistance,
178
- index: index - 1,
179
- },
181
+ index: index - 1
182
+ }
180
183
  };
181
184
  }
182
185
 
@@ -191,18 +194,18 @@ export function nearestPointOnLine<G extends LineString | MultiLineString>(
191
194
  mercator = new WebMercatorViewport(viewport);
192
195
  }
193
196
  let closestPoint: any = point([Infinity, Infinity], {
194
- dist: Infinity,
197
+ dist: Infinity
195
198
  });
196
199
 
197
200
  if (!lines.geometry?.coordinates.length || lines.geometry?.coordinates.length < 2) {
198
201
  return closestPoint;
199
202
  }
200
203
 
201
- // @ts-ignore
204
+ // @ts-expect-error TODO
202
205
  // eslint-disable-next-line max-statements, complexity
203
206
  flattenEach(lines, (line: any) => {
204
207
  const coords: any = getCoords(line);
205
- // @ts-ignore
208
+ // @ts-expect-error TODO
206
209
  const pointCoords: any = getCoords(inPoint);
207
210
 
208
211
  let minDist;
@@ -293,7 +296,7 @@ export function nearestPointOnLine<G extends LineString | MultiLineString>(
293
296
  }
294
297
 
295
298
  // index needs to be -1 because we have to account for the shift from initial backscan
296
- let snapPoint = { x, y, idx: segmentIdx - 1, to, from };
299
+ let snapPoint = {x, y, idx: segmentIdx - 1, to, from};
297
300
 
298
301
  if (mercator) {
299
302
  const pixelToLatLong = mercator.unproject([snapPoint.x, snapPoint.y]);
@@ -302,13 +305,13 @@ export function nearestPointOnLine<G extends LineString | MultiLineString>(
302
305
  y: pixelToLatLong[1],
303
306
  idx: segmentIdx - 1,
304
307
  to,
305
- from,
308
+ from
306
309
  };
307
310
  }
308
311
 
309
312
  closestPoint = point([snapPoint.x, snapPoint.y], {
310
313
  dist: Math.abs(snapPoint.from - snapPoint.to),
311
- index: snapPoint.idx,
314
+ index: snapPoint.idx
312
315
  });
313
316
  });
314
317
 
@@ -338,7 +341,7 @@ export function getPickedExistingEditHandle(
338
341
  ): EditHandleFeature | null | undefined {
339
342
  const handles = getPickedEditHandles(picks);
340
343
  return handles.find(
341
- ({ properties }) => properties.featureIndex >= 0 && properties.editHandleType === 'existing'
344
+ ({properties}) => properties.featureIndex >= 0 && properties.editHandleType === 'existing'
342
345
  );
343
346
  }
344
347
 
@@ -347,7 +350,7 @@ export function getPickedIntermediateEditHandle(
347
350
  ): EditHandleFeature | null | undefined {
348
351
  const handles = getPickedEditHandles(picks);
349
352
  return handles.find(
350
- ({ properties }) => properties.featureIndex >= 0 && properties.editHandleType === 'intermediate'
353
+ ({properties}) => properties.featureIndex >= 0 && properties.editHandleType === 'intermediate'
351
354
  );
352
355
  }
353
356
 
@@ -379,13 +382,13 @@ export function getEditHandlesForGeometry(
379
382
  guideType: 'editHandle',
380
383
  editHandleType,
381
384
  positionIndexes: [],
382
- featureIndex,
385
+ featureIndex
383
386
  },
384
387
  geometry: {
385
388
  type: 'Point',
386
- coordinates: geometry.coordinates,
387
- },
388
- },
389
+ coordinates: geometry.coordinates
390
+ }
391
+ }
389
392
  ];
390
393
  break;
391
394
  case 'MultiPoint':
@@ -449,12 +452,12 @@ function getEditHandlesForCoordinates(
449
452
  guideType: 'editHandle',
450
453
  positionIndexes: [...positionIndexPrefix, i],
451
454
  featureIndex,
452
- editHandleType,
455
+ editHandleType
453
456
  },
454
457
  geometry: {
455
458
  type: 'Point',
456
- coordinates: position,
457
- },
459
+ coordinates: position
460
+ }
458
461
  });
459
462
  }
460
463
  return editHandles;
@@ -1,3 +1,7 @@
1
- import { GeoJsonEditMode } from './geojson-edit-mode';
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ import {GeoJsonEditMode} from './geojson-edit-mode';
2
6
 
3
7
  export class ViewMode extends GeoJsonEditMode {}
@@ -1,14 +1,18 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  /* eslint-env browser */
2
6
 
3
- import type { UpdateParameters, DefaultProps } from '@deck.gl/core';
4
- import { GeoJsonLayer, ScatterplotLayer, IconLayer, TextLayer } from '@deck.gl/layers';
7
+ import type {UpdateParameters, DefaultProps} from '@deck.gl/core';
8
+ import {GeoJsonLayer, ScatterplotLayer, IconLayer, TextLayer} from '@deck.gl/layers';
5
9
  import {
6
10
  EditAction,
7
11
  ClickEvent,
8
12
  StartDraggingEvent,
9
13
  StopDraggingEvent,
10
14
  DraggingEvent,
11
- PointerMoveEvent,
15
+ PointerMoveEvent
12
16
  } from '../edit-modes/types';
13
17
 
14
18
  import {ViewMode} from '../edit-modes/view-mode';
@@ -38,12 +42,12 @@ import {SnappableMode} from '../edit-modes/snappable-mode';
38
42
  import {TransformMode} from '../edit-modes/transform-mode';
39
43
  import {GeoJsonEditModeType} from '../edit-modes/geojson-edit-mode';
40
44
 
41
- import { Color } from '../types';
42
- import { PROJECTED_PIXEL_SIZE_MULTIPLIER } from '../constants';
45
+ import {Color} from '../utils/types';
46
+ import {PROJECTED_PIXEL_SIZE_MULTIPLIER} from '../constants';
43
47
 
44
- import EditableLayer, { EditableLayerProps } from './editable-layer';
45
- import EditablePathLayer from './editable-path-layer';
46
- import { Feature, FeatureCollection } from '../geojson-types';
48
+ import {EditableLayer, EditableLayerProps} from './editable-layer';
49
+ import {EditablePathLayer} from './editable-path-layer';
50
+ import {Feature, FeatureCollection} from '../utils/geojson-types';
47
51
 
48
52
  const DEFAULT_LINE_COLOR: Color = [0x0, 0x0, 0x0, 0x99];
49
53
  const DEFAULT_FILL_COLOR: Color = [0x0, 0x0, 0x0, 0x90];
@@ -228,7 +232,7 @@ const defaultProps: DefaultProps<EditableGeojsonLayerProps<any>> = {
228
232
  getEditHandleIconAngle: 0,
229
233
 
230
234
  // misc
231
- billboard: true,
235
+ billboard: true
232
236
  };
233
237
 
234
238
  // Mapping of mode name to mode class (for legacy purposes)
@@ -261,10 +265,10 @@ const modeNameMapping = {
261
265
  drawRectangleUsing3Points: DrawRectangleUsingThreePointsMode,
262
266
  drawEllipseUsing3Points: DrawEllipseUsingThreePointsMode,
263
267
  draw90DegreePolygon: Draw90DegreePolygonMode,
264
- drawPolygonByDragging: DrawPolygonByDraggingMode,
268
+ drawPolygonByDragging: DrawPolygonByDraggingMode
265
269
  };
266
270
 
267
- export default class EditableGeoJsonLayer extends EditableLayer<
271
+ export class EditableGeoJsonLayer extends EditableLayer<
268
272
  FeatureCollection,
269
273
  EditableGeojsonLayerProps<FeatureCollection>
270
274
  > {
@@ -310,8 +314,8 @@ export default class EditableGeoJsonLayer extends EditableLayer<
310
314
  billboard: this.props.billboard,
311
315
  updateTriggers: {
312
316
  // required to update dashed array attribute
313
- all: [this.props.selectedFeatureIndexes, this.props.mode],
314
- },
317
+ all: [this.props.selectedFeatureIndexes, this.props.mode]
318
+ }
315
319
  },
316
320
  'polygons-stroke': {
317
321
  billboard: this.props.billboard,
@@ -319,17 +323,17 @@ export default class EditableGeoJsonLayer extends EditableLayer<
319
323
  type: EditablePathLayer,
320
324
  updateTriggers: {
321
325
  // required to update dashed array attribute
322
- all: [this.props.selectedFeatureIndexes, this.props.mode],
323
- },
324
- },
326
+ all: [this.props.selectedFeatureIndexes, this.props.mode]
327
+ }
328
+ }
325
329
  },
326
330
 
327
331
  updateTriggers: {
328
332
  getLineColor: [this.props.selectedFeatureIndexes, this.props.mode],
329
333
  getFillColor: [this.props.selectedFeatureIndexes, this.props.mode],
330
334
  getPointRadius: [this.props.selectedFeatureIndexes, this.props.mode],
331
- getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode],
332
- },
335
+ getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode]
336
+ }
333
337
  });
334
338
 
335
339
  let layers: any = [new GeoJsonLayer(subLayerProps)];
@@ -344,7 +348,7 @@ export default class EditableGeoJsonLayer extends EditableLayer<
344
348
 
345
349
  this.setState({
346
350
  selectedFeatures: [],
347
- editHandles: [],
351
+ editHandles: []
348
352
  });
349
353
  }
350
354
 
@@ -358,8 +362,8 @@ export default class EditableGeoJsonLayer extends EditableLayer<
358
362
  return super.shouldUpdateState(opts) || opts.changeFlags.stateChanged;
359
363
  }
360
364
 
361
- updateState({ props, oldProps, changeFlags, context }: UpdateParameters<this>) {
362
- super.updateState({ oldProps, props, changeFlags, context });
365
+ updateState({props, oldProps, changeFlags, context}: UpdateParameters<this>) {
366
+ super.updateState({oldProps, props, changeFlags, context});
363
367
 
364
368
  if (changeFlags.propsOrDataChanged) {
365
369
  const modePropChanged = Object.keys(oldProps).length === 0 || props.mode !== oldProps.mode;
@@ -374,7 +378,7 @@ export default class EditableGeoJsonLayer extends EditableLayer<
374
378
  mode = modeNameMapping[props.mode];
375
379
  // eslint-disable-next-line no-console
376
380
  console.warn(
377
- 'Deprecated use of passing `mode` as a string. Pass the mode\'s class constructor instead.'
381
+ "Deprecated use of passing `mode` as a string. Pass the mode's class constructor instead."
378
382
  );
379
383
  } else {
380
384
  // Should be an instance of EditMode in this case
@@ -388,7 +392,7 @@ export default class EditableGeoJsonLayer extends EditableLayer<
388
392
  }
389
393
 
390
394
  if (mode !== this.state.mode) {
391
- this.setState({ mode, cursor: null });
395
+ this.setState({mode, cursor: null});
392
396
  }
393
397
  }
394
398
  }
@@ -401,11 +405,10 @@ export default class EditableGeoJsonLayer extends EditableLayer<
401
405
  ) {
402
406
  // TODO: needs improved testing, i.e. checking for duplicates, NaNs, out of range numbers, ...
403
407
  const propsData = props.data;
404
- // @ts-ignore error TS2339: Property 'features' does not exist on type 'never'
405
408
  selectedFeatures = props.selectedFeatureIndexes.map((elem) => propsData.features[elem]);
406
409
  }
407
410
 
408
- this.setState({ selectedFeatures });
411
+ this.setState({selectedFeatures});
409
412
  }
410
413
 
411
414
  getModeProps(props: EditableGeojsonLayerProps<any>) {
@@ -420,11 +423,11 @@ export default class EditableGeoJsonLayer extends EditableLayer<
420
423
  // This supports double-click where we need to ensure that there's a re-render between the two clicks
421
424
  // even though the data wasn't changed, just the internal tentative feature.
422
425
  this.setNeedsUpdate();
423
- props.onEdit!(editAction);
426
+ props.onEdit(editAction);
424
427
  },
425
428
  onUpdateCursor: (cursor: string | null | undefined) => {
426
- this.setState({ cursor });
427
- },
429
+ this.setState({cursor});
430
+ }
428
431
  };
429
432
  }
430
433
 
@@ -447,7 +450,7 @@ export default class EditableGeoJsonLayer extends EditableLayer<
447
450
  return this.state.selectedFeatures.includes(feature);
448
451
  }
449
452
 
450
- getPickingInfo({ info, sourceLayer }: Record<string, any>) {
453
+ getPickingInfo({info, sourceLayer}: Record<string, any>) {
451
454
  if (sourceLayer.id.endsWith('guides')) {
452
455
  // If user is picking an editing handle, add additional data to the info
453
456
  info.isGuide = true;
@@ -480,14 +483,14 @@ export default class EditableGeoJsonLayer extends EditableLayer<
480
483
  const subLayerProps = {
481
484
  linestrings: {
482
485
  billboard: this.props.billboard,
483
- autoHighlight: false,
486
+ autoHighlight: false
484
487
  },
485
488
  'polygons-fill': {
486
- autoHighlight: false,
489
+ autoHighlight: false
487
490
  },
488
491
  'polygons-stroke': {
489
- billboard: this.props.billboard,
490
- },
492
+ billboard: this.props.billboard
493
+ }
491
494
  };
492
495
 
493
496
  if (this.props.editHandleType === 'icon') {
@@ -501,7 +504,7 @@ export default class EditableGeoJsonLayer extends EditableLayer<
501
504
  getSize: guideAccessor(this.props.getEditHandleIconSize),
502
505
  getColor: guideAccessor(this.props.getEditHandleIconColor),
503
506
  getAngle: guideAccessor(this.props.getEditHandleIconAngle),
504
- billboard: this.props.billboard,
507
+ billboard: this.props.billboard
505
508
  };
506
509
  } else {
507
510
  subLayerProps['points-circle'] = {
@@ -515,7 +518,7 @@ export default class EditableGeoJsonLayer extends EditableLayer<
515
518
  getRadius: guideAccessor(this.props.getEditHandlePointRadius),
516
519
  getFillColor: guideAccessor(this.props.getEditHandlePointColor),
517
520
  getLineColor: guideAccessor(this.props.getEditHandlePointOutlineColor),
518
- billboard: this.props.billboard,
521
+ billboard: this.props.billboard
519
522
  };
520
523
  }
521
524
 
@@ -536,7 +539,7 @@ export default class EditableGeoJsonLayer extends EditableLayer<
536
539
  getLineWidth: guideAccessor(this.props.getTentativeLineWidth),
537
540
  getFillColor: guideAccessor(this.props.getTentativeFillColor),
538
541
  pointType: this.props.editHandleType === 'icon' ? 'icon' : 'circle',
539
- iconAtlas: this.props.editHandleIconAtlas,
542
+ iconAtlas: this.props.editHandleIconAtlas
540
543
  })
541
544
  );
542
545
 
@@ -551,8 +554,8 @@ export default class EditableGeoJsonLayer extends EditableLayer<
551
554
  getSize: DEFAULT_TOOLTIP_FONT_SIZE,
552
555
  ...this.getSubLayerProps({
553
556
  id: 'tooltips',
554
- data: tooltips,
555
- }),
557
+ data: tooltips
558
+ })
556
559
  });
557
560
 
558
561
  return [layer];
@@ -579,17 +582,17 @@ export default class EditableGeoJsonLayer extends EditableLayer<
579
582
  }
580
583
 
581
584
  onPointerMove(event: PointerMoveEvent): void {
582
- this.setState({ lastPointerMoveEvent: event });
585
+ this.setState({lastPointerMoveEvent: event});
583
586
  this.getActiveMode().handlePointerMove(event, this.getModeProps(this.props) as any);
584
587
  }
585
588
 
586
- getCursor({ isDragging }: { isDragging: boolean }): null | 'grabbing' | 'grab' {
589
+ getCursor({isDragging}: {isDragging: boolean}): null | 'grabbing' | 'grab' {
587
590
  if (this.state === null || this.state === undefined) {
588
591
  // Layer in 'Awaiting state'
589
592
  return null;
590
593
  }
591
594
 
592
- let { cursor } = this.state;
595
+ let {cursor} = this.state;
593
596
  if (!cursor) {
594
597
  // default cursor
595
598
  cursor = isDragging ? 'grabbing' : 'grab';
@@ -1,3 +1,7 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
1
5
  /* eslint-env browser */
2
6
 
3
7
  import {H3ClusterLayer} from '@deck.gl/geo-layers';
@@ -5,8 +9,8 @@ import {DefaultProps} from '@deck.gl/core';
5
9
  // TODO: Fix H3 support.
6
10
  // import { polyfill, geoToH3 } from 'h3-js';
7
11
  import {PROJECTED_PIXEL_SIZE_MULTIPLIER} from '../constants';
8
- import EditableGeoJsonLayer from './editable-geojson-layer';
9
- import EditableLayer, {EditableLayerProps} from './editable-layer';
12
+ import {EditableGeoJsonLayer} from './editable-geojson-layer';
13
+ import {EditableLayer, EditableLayerProps} from './editable-layer';
10
14
  import {ViewMode} from '../edit-modes/view-mode';
11
15
 
12
16
  const DEFAULT_EDIT_MODE = ViewMode;
@@ -62,10 +66,7 @@ const defaultProps: DefaultProps<EditableH3ClusterLayerProps<any>> = {
62
66
  resolution: DEFAULT_H3_RESOLUTION
63
67
  };
64
68
 
65
- export default class EditableH3ClusterLayer extends EditableLayer<
66
- any,
67
- EditableH3ClusterLayerProps<any>
68
- > {
69
+ export class EditableH3ClusterLayer extends EditableLayer<any, EditableH3ClusterLayerProps<any>> {
69
70
  static layerName = 'EditableH3ClusterLayer';
70
71
  static defaultProps = defaultProps;
71
72
 
@@ -129,16 +130,18 @@ export default class EditableH3ClusterLayer extends EditableLayer<
129
130
  if (!modeConfig || !modeConfig.booleanOperation) {
130
131
  // add new h3 cluster
131
132
  updatedData.push(
132
- this.props.getEditedCluster!(this.state.tentativeHexagonIDs, null)
133
+ this.props.getEditedCluster(this.state.tentativeHexagonIDs, null)
133
134
  );
134
- } else if (this.props.selectedIndexes!.length !== 1) {
135
+ } else if (this.props.selectedIndexes.length !== 1) {
135
136
  // eslint-disable-next-line no-console,no-undef
136
137
  console.warn('booleanOperation only supported for single cluster selection');
137
138
  } else {
138
139
  // they're affecting a selected cluster
139
140
  let finalHexagonIDs: (string | number)[];
140
141
  const committedHexagonIDs = new Set<string | number>(this.getSelectedHexIDs());
141
- const tentativeHexagonIDs = new Set<string | number>(this.state.tentativeHexagonIDs);
142
+ const tentativeHexagonIDs = new Set<string | number>(
143
+ this.state.tentativeHexagonIDs
144
+ );
142
145
 
143
146
  switch (modeConfig.booleanOperation) {
144
147
  case 'union':
@@ -159,9 +162,9 @@ export default class EditableH3ClusterLayer extends EditableLayer<
159
162
  break;
160
163
  }
161
164
 
162
- const selectedIndex = this.props.selectedIndexes![0];
165
+ const selectedIndex = this.props.selectedIndexes[0];
163
166
  const existingCluster = this.props.data[selectedIndex];
164
- updatedData[selectedIndex] = this.props.getEditedCluster!(
167
+ updatedData[selectedIndex] = this.props.getEditedCluster(
165
168
  finalHexagonIDs,
166
169
  existingCluster
167
170
  );
@@ -171,7 +174,7 @@ export default class EditableH3ClusterLayer extends EditableLayer<
171
174
  tentativeHexagonIDs: []
172
175
  });
173
176
 
174
- this.props.onEdit!({updatedData});
177
+ this.props.onEdit({updatedData});
175
178
 
176
179
  break;
177
180
  default:
@@ -207,9 +210,9 @@ export default class EditableH3ClusterLayer extends EditableLayer<
207
210
  // using props.getHexagons to support multiple data types
208
211
  getSelectedHexIDs() {
209
212
  let cumulativeHexIDs: number[] = [];
210
- this.props.selectedIndexes!.forEach((index) => {
213
+ this.props.selectedIndexes.forEach((index) => {
211
214
  const selectedCluster = this.props.data[index];
212
- const hexIDs = this.props.getHexagons!(selectedCluster);
215
+ const hexIDs = this.props.getHexagons(selectedCluster);
213
216
  cumulativeHexIDs = cumulativeHexIDs.concat(hexIDs);
214
217
  });
215
218
  return cumulativeHexIDs;