@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
package/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2020 vis.gl a Series of LF Projects, LLC
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
package/README.md CHANGED
@@ -1,82 +1,3 @@
1
- <h1 align="center">editable-layers | <a href="https://@deck.gl-community/editable-layers">Website</a></h1>
1
+ # @deck.gl-community/editable-layers
2
2
 
3
- <h5 align="center">An editing framework for deck.gl</h5>
4
-
5
- [![docs](https://i.imgur.com/bRDL1oh.gif)](https://@deck.gl-community/editable-layers)
6
-
7
- [@deck.gl-community/editable-layers](https://@deck.gl-community/editable-layers) provides editable and interactive map overlay layers, built using the power of [deck.gl](https://deck.gl/).
8
-
9
- ## Getting started
10
-
11
- ### Running the example
12
-
13
- 1. `git clone git@github.com:uber/@deck.gl-community/editable-layers.git`
14
- 2. `cd @deck.gl-community/editable-layers`
15
- 3. `yarn`
16
- 4. `cd examples/advanced`
17
- 5. `yarn`
18
- 6. `export MapboxAccessToken='<Add your key>'`
19
- 7. `yarn start-local`
20
- 8. You can now view and edit geometry.
21
-
22
- ### Installation
23
-
24
- For npm
25
-
26
- ```bash
27
- npm install @deck.gl-community/editable-layers
28
- ```
29
-
30
- For yarn
31
-
32
- ```bash
33
- yarn add @deck.gl-community/editable-layers
34
- ```
35
-
36
- ### `EditableGeoJsonLayer`
37
-
38
- [EditableGeoJsonLayer](/docs/modules/editor-layers/api-reference/editable-geojson-layer.md) is implemented as a [deck.gl](https://deck.gl) layer. It provides the ability to view and edit multiple types of geometry formatted as [GeoJSON](https://tools.ietf.org/html/rfc7946) (an open standard format for geometry) including polygons, lines, and points.
39
-
40
- ```jsx
41
- import DeckGL from '@deck.gl/react';
42
- import { EditableGeoJsonLayer, DrawPolygonMode } from '@deck.gl-community/editable-layers';
43
-
44
- const myFeatureCollection = {
45
- type: 'FeatureCollection',
46
- features: [
47
- /* insert features here */
48
- ],
49
- };
50
-
51
- const selectedFeatureIndexes = [];
52
-
53
- class App extends React.Component {
54
- state = {
55
- data: myFeatureCollection,
56
- };
57
-
58
- render() {
59
- const layer = new EditableGeoJsonLayer({
60
- id: 'geojson-layer',
61
- data: this.state.data,
62
- mode: DrawPolygonMode,
63
- selectedFeatureIndexes,
64
-
65
- onEdit: ({ updatedData }) => {
66
- this.setState({
67
- data: updatedData,
68
- });
69
- },
70
- });
71
-
72
- return <DeckGL {...this.props.viewport} layers={[layer]} />;
73
- }
74
- }
75
- ```
76
-
77
- ### Useful examples (Codesandbox)
78
-
79
- - [Hello World (using deck.gl)](https://codesandbox.io/s/hello-world-nebulagl-csvsm)
80
- - [With Toolbox](https://codesandbox.io/s/hello-nebulagl-with-toolbox-oelkr)
81
- - [No React](https://codesandbox.io/s/deckgl-and-nebulagl-editablegeojsonlayer-no-react-p9yrs)
82
- - [Custom EditMode](https://codesandbox.io/s/connect-the-dots-mode-yow65)
3
+ This module contains community maintained editable layers pack for deck.gl.
package/dist/constants.js CHANGED
@@ -1,3 +1,6 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  /**
2
5
  * A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.
3
6
  * Required in order to maintain the same appearance after upgrading to deck.gl v8.5.
@@ -10,5 +13,5 @@ export const PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;
10
13
  export const UNIT = {
11
14
  common: 0,
12
15
  meters: 1,
13
- pixels: 2,
16
+ pixels: 2
14
17
  };
@@ -1,4 +1,4 @@
1
- import { FeatureCollection } from '../geojson-types';
1
+ import { FeatureCollection } from '../utils/geojson-types';
2
2
  import { ModeProps, ClickEvent, PointerMoveEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, GuideFeatureCollection } from './types';
3
3
  import { GeoJsonEditMode } from './geojson-edit-mode';
4
4
  export declare class CompositeMode extends GeoJsonEditMode {
@@ -1,3 +1,6 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { GeoJsonEditMode } from './geojson-edit-mode';
2
5
  export class CompositeMode extends GeoJsonEditMode {
3
6
  _modes;
@@ -41,7 +44,7 @@ export class CompositeMode extends GeoJsonEditMode {
41
44
  }
42
45
  return {
43
46
  type: 'FeatureCollection',
44
- features: allGuides,
47
+ features: allGuides
45
48
  };
46
49
  }
47
50
  }
@@ -1,5 +1,5 @@
1
1
  import { ClickEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection, TentativeFeature } from './types';
2
- import { Position, FeatureCollection } from '../geojson-types';
2
+ import { Position, FeatureCollection } from '../utils/geojson-types';
3
3
  import { GeoJsonEditMode } from './geojson-edit-mode';
4
4
  export declare class Draw90DegreePolygonMode extends GeoJsonEditMode {
5
5
  createTentativeFeature(props: ModeProps<FeatureCollection>): TentativeFeature;
@@ -1,16 +1,19 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import destination from '@turf/destination';
2
5
  import bearing from '@turf/bearing';
3
6
  import lineIntersect from '@turf/line-intersect';
4
7
  import turfDistance from '@turf/distance';
5
8
  import { point, lineString as turfLineString } from '@turf/helpers';
6
- import { generatePointsParallelToLinePoints, getPickedEditHandle, getEditHandlesForGeometry, } from './utils';
9
+ import { generatePointsParallelToLinePoints, getPickedEditHandle, getEditHandlesForGeometry } from './utils';
7
10
  import { GeoJsonEditMode } from './geojson-edit-mode';
8
11
  export class Draw90DegreePolygonMode extends GeoJsonEditMode {
9
12
  createTentativeFeature(props) {
10
13
  const clickSequence = this.getClickSequence();
11
14
  const { mapCoords } = props.lastPointerMoveEvent;
12
15
  let p3;
13
- if (clickSequence.length === 1) {
16
+ if (clickSequence.length <= 1) {
14
17
  p3 = mapCoords;
15
18
  }
16
19
  else {
@@ -24,12 +27,12 @@ export class Draw90DegreePolygonMode extends GeoJsonEditMode {
24
27
  tentativeFeature = {
25
28
  type: 'Feature',
26
29
  properties: {
27
- guideType: 'tentative',
30
+ guideType: 'tentative'
28
31
  },
29
32
  geometry: {
30
33
  type: 'LineString',
31
- coordinates: [...clickSequence, p3],
32
- },
34
+ coordinates: [...clickSequence, p3]
35
+ }
33
36
  };
34
37
  }
35
38
  else {
@@ -37,12 +40,12 @@ export class Draw90DegreePolygonMode extends GeoJsonEditMode {
37
40
  tentativeFeature = {
38
41
  type: 'Feature',
39
42
  properties: {
40
- guideType: 'tentative',
43
+ guideType: 'tentative'
41
44
  },
42
45
  geometry: {
43
46
  type: 'Polygon',
44
- coordinates: [[...clickSequence, p3, clickSequence[0]]],
45
- },
47
+ coordinates: [[...clickSequence, p3, clickSequence[0]]]
48
+ }
46
49
  };
47
50
  }
48
51
  return tentativeFeature;
@@ -50,7 +53,7 @@ export class Draw90DegreePolygonMode extends GeoJsonEditMode {
50
53
  getGuides(props) {
51
54
  const guides = {
52
55
  type: 'FeatureCollection',
53
- features: [],
56
+ features: []
54
57
  };
55
58
  const clickSequence = this.getClickSequence();
56
59
  if (clickSequence.length === 0 || !props.lastPointerMoveEvent) {
@@ -95,7 +98,7 @@ export class Draw90DegreePolygonMode extends GeoJsonEditMode {
95
98
  // They clicked the first or last point (or double-clicked), so complete the polygon
96
99
  const polygonToAdd = {
97
100
  type: 'Polygon',
98
- coordinates: this.finalizedCoordinates([...polygon.coordinates[0]]),
101
+ coordinates: this.finalizedCoordinates([...polygon.coordinates[0]])
99
102
  };
100
103
  this.resetClickSequence();
101
104
  const editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);
@@ -104,18 +107,20 @@ export class Draw90DegreePolygonMode extends GeoJsonEditMode {
104
107
  }
105
108
  }
106
109
  }
107
- // Trigger pointer move right away in order for it to update edit handles (to support double-click)
108
- const fakePointerMoveEvent = {
109
- screenCoords: [-1, -1],
110
- mapCoords: event.mapCoords,
111
- picks: [],
112
- pointerDownPicks: null,
113
- pointerDownScreenCoords: null,
114
- pointerDownMapCoords: null,
115
- cancelPan: () => { },
116
- sourceEvent: null,
117
- };
118
- this.handlePointerMove(fakePointerMoveEvent, props);
110
+ else {
111
+ // Trigger pointer move right away in order for it to update edit handles (to support double-click)
112
+ const fakePointerMoveEvent = {
113
+ screenCoords: [-1, -1],
114
+ mapCoords: event.mapCoords,
115
+ picks: [],
116
+ pointerDownPicks: null,
117
+ pointerDownScreenCoords: null,
118
+ pointerDownMapCoords: null,
119
+ cancelPan: () => { },
120
+ sourceEvent: null
121
+ };
122
+ this.handlePointerMove(fakePointerMoveEvent, props);
123
+ }
119
124
  }
120
125
  finalizedCoordinates(coords) {
121
126
  // Remove the hovered position
@@ -159,12 +164,12 @@ export class Draw90DegreePolygonMode extends GeoJsonEditMode {
159
164
  [0, 1, 2].forEach((indexFirst) => {
160
165
  const line1 = turfLineString([
161
166
  p1,
162
- destination(p1, distance, angles.first[indexFirst]).geometry.coordinates,
167
+ destination(p1, distance, angles.first[indexFirst]).geometry.coordinates
163
168
  ]);
164
169
  [0, 1, 2].forEach((indexSecond) => {
165
170
  const line2 = turfLineString([
166
171
  p3,
167
- destination(p3, distance, angles.second[indexSecond]).geometry.coordinates,
172
+ destination(p3, distance, angles.second[indexSecond]).geometry.coordinates
168
173
  ]);
169
174
  const fc = lineIntersect(line1, line2);
170
175
  if (fc && fc.features.length) {
@@ -1,5 +1,5 @@
1
1
  import { ModeProps, Tooltip } from './types';
2
- import { Position, Polygon, FeatureOf, FeatureCollection } from '../geojson-types';
2
+ import { Position, Polygon, FeatureOf, FeatureCollection } from '../utils/geojson-types';
3
3
  import { TwoClickPolygonMode } from './two-click-polygon-mode';
4
4
  export declare class DrawCircleByDiameterMode extends TwoClickPolygonMode {
5
5
  radius: number | null | undefined;
@@ -1,7 +1,10 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import circle from '@turf/circle';
2
5
  import distance from '@turf/distance';
3
6
  import area from '@turf/area';
4
- import memoize from '../memoize';
7
+ import { memoize } from '../utils/memoize';
5
8
  import { getIntermediatePosition } from './geojson-edit-mode';
6
9
  import { TwoClickPolygonMode } from './two-click-polygon-mode';
7
10
  export class DrawCircleByDiameterMode extends TwoClickPolygonMode {
@@ -42,7 +45,7 @@ export class DrawCircleByDiameterMode extends TwoClickPolygonMode {
42
45
  modeConfig: props.modeConfig,
43
46
  radius: this.radius,
44
47
  areaCircle: this.areaCircle,
45
- diameter: this.diameter,
48
+ diameter: this.diameter
46
49
  });
47
50
  }
48
51
  /**
@@ -69,8 +72,8 @@ export class DrawCircleByDiameterMode extends TwoClickPolygonMode {
69
72
  tooltips = [
70
73
  {
71
74
  position: this.position,
72
- text,
73
- },
75
+ text
76
+ }
74
77
  ];
75
78
  }
76
79
  return tooltips;
@@ -1,5 +1,5 @@
1
1
  import { ModeProps, Tooltip } from './types';
2
- import { Position, Polygon, FeatureOf, FeatureCollection } from '../geojson-types';
2
+ import { Position, Polygon, FeatureOf, FeatureCollection } from '../utils/geojson-types';
3
3
  import { TwoClickPolygonMode } from './two-click-polygon-mode';
4
4
  export declare class DrawCircleFromCenterMode extends TwoClickPolygonMode {
5
5
  radius: number | null | undefined;
@@ -1,7 +1,10 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import circle from '@turf/circle';
2
5
  import distance from '@turf/distance';
3
6
  import area from '@turf/area';
4
- import memoize from '../memoize';
7
+ import { memoize } from '../utils/memoize';
5
8
  import { TwoClickPolygonMode } from './two-click-polygon-mode';
6
9
  export class DrawCircleFromCenterMode extends TwoClickPolygonMode {
7
10
  radius = null;
@@ -36,7 +39,7 @@ export class DrawCircleFromCenterMode extends TwoClickPolygonMode {
36
39
  return this._getTooltips({
37
40
  modeConfig: props?.modeConfig,
38
41
  radius: this.radius,
39
- areaCircle: this.areaCircle,
42
+ areaCircle: this.areaCircle
40
43
  });
41
44
  }
42
45
  /**
@@ -61,8 +64,8 @@ export class DrawCircleFromCenterMode extends TwoClickPolygonMode {
61
64
  tooltips = [
62
65
  {
63
66
  position: this.position,
64
- text,
65
- },
67
+ text
68
+ }
66
69
  ];
67
70
  }
68
71
  return tooltips;
@@ -1,4 +1,4 @@
1
- import { Position, Polygon, FeatureOf } from '../geojson-types';
1
+ import { Position, Polygon, FeatureOf } from '../utils/geojson-types';
2
2
  import { TwoClickPolygonMode } from './two-click-polygon-mode';
3
3
  export declare class DrawEllipseByBoundingBoxMode extends TwoClickPolygonMode {
4
4
  getTwoClickPolygon(coord1: Position, coord2: Position, modeConfig: any): FeatureOf<Polygon>;
@@ -1,3 +1,6 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import bboxPolygon from '@turf/bbox-polygon';
2
5
  import distance from '@turf/distance';
3
6
  import ellipse from '@turf/ellipse';
@@ -1,4 +1,4 @@
1
- import { Position, Polygon, FeatureOf } from '../geojson-types';
1
+ import { Position, Polygon, FeatureOf } from '../utils/geojson-types';
2
2
  import { ThreeClickPolygonMode } from './three-click-polygon-mode';
3
3
  export declare class DrawEllipseUsingThreePointsMode extends ThreeClickPolygonMode {
4
4
  getThreeClickPolygon(coord1: Position, coord2: Position, coord3: Position, modeConfig: any): FeatureOf<Polygon> | null | undefined;
@@ -1,3 +1,6 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import distance from '@turf/distance';
2
5
  import ellipse from '@turf/ellipse';
3
6
  import bearing from '@turf/bearing';
@@ -1,4 +1,4 @@
1
- import { FeatureCollection, Position } from '../geojson-types';
1
+ import { FeatureCollection, Position } from '../utils/geojson-types';
2
2
  import { ClickEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection, Tooltip } from './types';
3
3
  import { GeoJsonEditMode } from './geojson-edit-mode';
4
4
  export declare class DrawLineStringMode extends GeoJsonEditMode {
@@ -1,5 +1,8 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import distance from '@turf/distance';
2
- import memoize from '../memoize';
5
+ import { memoize } from '../utils/memoize';
3
6
  import { getPickedEditHandle } from './utils';
4
7
  import { GeoJsonEditMode } from './geojson-edit-mode';
5
8
  export class DrawLineStringMode extends GeoJsonEditMode {
@@ -30,7 +33,7 @@ export class DrawLineStringMode extends GeoJsonEditMode {
30
33
  this.dist = 0;
31
34
  const lineStringToAdd = {
32
35
  type: 'LineString',
33
- coordinates: [...clickSequence],
36
+ coordinates: [...clickSequence]
34
37
  };
35
38
  this.resetClickSequence();
36
39
  const editAction = this.getAddFeatureAction(lineStringToAdd, props.data);
@@ -45,8 +48,8 @@ export class DrawLineStringMode extends GeoJsonEditMode {
45
48
  updatedData: props.data,
46
49
  editType: 'addTentativePosition',
47
50
  editContext: {
48
- position: event.mapCoords,
49
- },
51
+ position: event.mapCoords
52
+ }
50
53
  });
51
54
  }
52
55
  }
@@ -57,7 +60,7 @@ export class DrawLineStringMode extends GeoJsonEditMode {
57
60
  if (clickSequence.length > 1) {
58
61
  const lineStringToAdd = {
59
62
  type: 'LineString',
60
- coordinates: [...clickSequence],
63
+ coordinates: [...clickSequence]
61
64
  };
62
65
  this.resetClickSequence();
63
66
  const editAction = this.getAddFeatureAction(lineStringToAdd, props.data);
@@ -72,7 +75,7 @@ export class DrawLineStringMode extends GeoJsonEditMode {
72
75
  // Because the new drawing feature is dropped, so the data will keep as the same.
73
76
  updatedData: props.data,
74
77
  editType: 'cancelFeature',
75
- editContext: {},
78
+ editContext: {}
76
79
  });
77
80
  }
78
81
  }
@@ -82,19 +85,19 @@ export class DrawLineStringMode extends GeoJsonEditMode {
82
85
  const lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];
83
86
  const guides = {
84
87
  type: 'FeatureCollection',
85
- features: [],
88
+ features: []
86
89
  };
87
90
  let tentativeFeature;
88
91
  if (clickSequence.length > 0) {
89
92
  tentativeFeature = {
90
93
  type: 'Feature',
91
94
  properties: {
92
- guideType: 'tentative',
95
+ guideType: 'tentative'
93
96
  },
94
97
  geometry: {
95
98
  type: 'LineString',
96
- coordinates: [...clickSequence, ...lastCoords],
97
- },
99
+ coordinates: [...clickSequence, ...lastCoords]
100
+ }
98
101
  };
99
102
  }
100
103
  if (tentativeFeature) {
@@ -106,12 +109,12 @@ export class DrawLineStringMode extends GeoJsonEditMode {
106
109
  guideType: 'editHandle',
107
110
  editHandleType: 'existing',
108
111
  featureIndex: -1,
109
- positionIndexes: [index],
112
+ positionIndexes: [index]
110
113
  },
111
114
  geometry: {
112
115
  type: 'Point',
113
- coordinates: clickedCoord,
114
- },
116
+ coordinates: clickedCoord
117
+ }
115
118
  }));
116
119
  guides.features.push(...editHandles);
117
120
  return guides;
@@ -127,7 +130,7 @@ export class DrawLineStringMode extends GeoJsonEditMode {
127
130
  getTooltips(props) {
128
131
  return this._getTooltips({
129
132
  modeConfig: props.modeConfig,
130
- dist: this.dist,
133
+ dist: this.dist
131
134
  });
132
135
  }
133
136
  // utility function
@@ -161,8 +164,8 @@ export class DrawLineStringMode extends GeoJsonEditMode {
161
164
  tooltips = [
162
165
  {
163
166
  position: this.position,
164
- text,
165
- },
167
+ text
168
+ }
166
169
  ];
167
170
  }
168
171
  return tooltips;
@@ -1,5 +1,5 @@
1
1
  import { ClickEvent, PointerMoveEvent, ModeProps, TentativeFeature } from './types';
2
- import { FeatureCollection } from '../geojson-types';
2
+ import { FeatureCollection } from '../utils/geojson-types';
3
3
  import { GeoJsonEditMode } from './geojson-edit-mode';
4
4
  export declare class DrawPointMode extends GeoJsonEditMode {
5
5
  createTentativeFeature(props: ModeProps<FeatureCollection>): TentativeFeature;
@@ -1,3 +1,6 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import { GeoJsonEditMode } from './geojson-edit-mode';
2
5
  export class DrawPointMode extends GeoJsonEditMode {
3
6
  createTentativeFeature(props) {
@@ -6,18 +9,18 @@ export class DrawPointMode extends GeoJsonEditMode {
6
9
  return {
7
10
  type: 'Feature',
8
11
  properties: {
9
- guideType: 'tentative',
12
+ guideType: 'tentative'
10
13
  },
11
14
  geometry: {
12
15
  type: 'Point',
13
- coordinates: lastCoords[0],
14
- },
16
+ coordinates: lastCoords[0]
17
+ }
15
18
  };
16
19
  }
17
20
  handleClick({ mapCoords }, props) {
18
21
  const geometry = {
19
22
  type: 'Point',
20
- coordinates: mapCoords,
23
+ coordinates: mapCoords
21
24
  };
22
25
  props.onEdit(this.getAddFeatureAction(geometry, props.data));
23
26
  }
@@ -1,5 +1,5 @@
1
1
  import { ClickEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, ModeProps } from './types';
2
- import { FeatureCollection } from '../geojson-types';
2
+ import { FeatureCollection } from '../utils/geojson-types';
3
3
  import { DrawPolygonMode } from './draw-polygon-mode';
4
4
  type DraggingHandler = (event: DraggingEvent, props: ModeProps<FeatureCollection>) => void;
5
5
  export declare class DrawPolygonByDraggingMode extends DrawPolygonMode {
@@ -1,3 +1,6 @@
1
+ // deck.gl-community
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
1
4
  import throttle from 'lodash.throttle';
2
5
  import { getPickedEditHandle } from './utils';
3
6
  import { DrawPolygonMode } from './draw-polygon-mode';
@@ -9,9 +12,11 @@ export class DrawPolygonByDraggingMode extends DrawPolygonMode {
9
12
  handleStartDragging(event, props) {
10
13
  event.cancelPan();
11
14
  if (props.modeConfig && props.modeConfig.throttleMs) {
15
+ // eslint-disable-next-line @typescript-eslint/unbound-method
12
16
  this.handleDraggingThrottled = throttle(this.handleDraggingAux, props.modeConfig.throttleMs);
13
17
  }
14
18
  else {
19
+ // eslint-disable-next-line @typescript-eslint/unbound-method
15
20
  this.handleDraggingThrottled = this.handleDraggingAux;
16
21
  }
17
22
  }
@@ -27,7 +32,7 @@ export class DrawPolygonByDraggingMode extends DrawPolygonMode {
27
32
  // Complete the polygon.
28
33
  const polygonToAdd = {
29
34
  type: 'Polygon',
30
- coordinates: [[...clickSequence, clickSequence[0]]],
35
+ coordinates: [[...clickSequence, clickSequence[0]]]
31
36
  };
32
37
  const editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);
33
38
  if (editAction) {
@@ -46,8 +51,8 @@ export class DrawPolygonByDraggingMode extends DrawPolygonMode {
46
51
  updatedData: props.data,
47
52
  editType: 'addTentativePosition',
48
53
  editContext: {
49
- position: event.mapCoords,
50
- },
54
+ position: event.mapCoords
55
+ }
51
56
  });
52
57
  }
53
58
  }
@@ -62,7 +67,7 @@ export class DrawPolygonByDraggingMode extends DrawPolygonMode {
62
67
  if (clickSequence.length > 2) {
63
68
  const polygonToAdd = {
64
69
  type: 'Polygon',
65
- coordinates: [[...clickSequence, clickSequence[0]]],
70
+ coordinates: [[...clickSequence, clickSequence[0]]]
66
71
  };
67
72
  this.resetClickSequence();
68
73
  const editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);
@@ -80,7 +85,7 @@ export class DrawPolygonByDraggingMode extends DrawPolygonMode {
80
85
  // Because the new drawing feature is dropped, so the data will keep as the same.
81
86
  updatedData: props.data,
82
87
  editType: 'cancelFeature',
83
- editContext: {},
88
+ editContext: {}
84
89
  });
85
90
  }
86
91
  }
@@ -1,5 +1,5 @@
1
1
  import { ClickEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection, TentativeFeature } from './types';
2
- import { FeatureCollection } from '../geojson-types';
2
+ import { FeatureCollection } from '../utils/geojson-types';
3
3
  import { GeoJsonEditMode } from './geojson-edit-mode';
4
4
  export declare class DrawPolygonMode extends GeoJsonEditMode {
5
5
  createTentativeFeature(props: ModeProps<FeatureCollection>): TentativeFeature;