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

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 (295) hide show
  1. package/README.md +82 -0
  2. package/dist/constants.d.ts +14 -0
  3. package/dist/constants.js +14 -0
  4. package/dist/curve-utils.d.ts +2 -0
  5. package/dist/curve-utils.js +61 -0
  6. package/dist/edit-modes/composite-mode.d.ts +14 -0
  7. package/dist/edit-modes/composite-mode.js +47 -0
  8. package/dist/edit-modes/draw-90degree-polygon-mode.d.ts +11 -0
  9. package/dist/edit-modes/draw-90degree-polygon-mode.js +179 -0
  10. package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts +24 -0
  11. package/dist/edit-modes/draw-circle-by-diameter-mode.js +78 -0
  12. package/dist/edit-modes/draw-circle-from-center-mode.d.ts +22 -0
  13. package/dist/edit-modes/draw-circle-from-center-mode.js +70 -0
  14. package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts +5 -0
  15. package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.js +20 -0
  16. package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts +5 -0
  17. package/dist/edit-modes/draw-ellipse-using-three-points-mode.js +16 -0
  18. package/dist/edit-modes/draw-line-string-mode.d.ts +25 -0
  19. package/dist/edit-modes/draw-line-string-mode.js +170 -0
  20. package/dist/edit-modes/draw-point-mode.d.ts +8 -0
  21. package/dist/edit-modes/draw-point-mode.js +28 -0
  22. package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts +14 -0
  23. package/dist/edit-modes/draw-polygon-by-dragging-mode.js +87 -0
  24. package/dist/edit-modes/draw-polygon-mode.d.ts +10 -0
  25. package/dist/edit-modes/draw-polygon-mode.js +143 -0
  26. package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts +5 -0
  27. package/dist/edit-modes/draw-rectangle-from-center-mode.js +17 -0
  28. package/dist/edit-modes/draw-rectangle-mode.d.ts +5 -0
  29. package/dist/edit-modes/draw-rectangle-mode.js +11 -0
  30. package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts +5 -0
  31. package/dist/edit-modes/draw-rectangle-using-three-points-mode.js +28 -0
  32. package/dist/edit-modes/draw-square-from-center-mode.d.ts +5 -0
  33. package/dist/edit-modes/draw-square-from-center-mode.js +35 -0
  34. package/dist/edit-modes/draw-square-mode.d.ts +5 -0
  35. package/dist/edit-modes/draw-square-mode.js +28 -0
  36. package/dist/edit-modes/duplicate-mode.d.ts +7 -0
  37. package/dist/edit-modes/duplicate-mode.js +17 -0
  38. package/dist/edit-modes/edit-mode.d.ts +11 -0
  39. package/dist/edit-modes/edit-mode.js +2 -0
  40. package/dist/edit-modes/elevation-mode.d.ts +13 -0
  41. package/dist/edit-modes/elevation-mode.js +49 -0
  42. package/dist/edit-modes/extend-line-string-mode.d.ts +9 -0
  43. package/dist/edit-modes/extend-line-string-mode.js +72 -0
  44. package/dist/edit-modes/extrude-mode.d.ts +15 -0
  45. package/dist/edit-modes/extrude-mode.js +186 -0
  46. package/dist/edit-modes/geojson-edit-mode.d.ts +33 -0
  47. package/dist/edit-modes/geojson-edit-mode.js +208 -0
  48. package/dist/edit-modes/immutable-feature-collection.d.ts +43 -0
  49. package/dist/edit-modes/immutable-feature-collection.js +300 -0
  50. package/dist/edit-modes/measure-angle-mode.d.ts +11 -0
  51. package/dist/edit-modes/measure-angle-mode.js +99 -0
  52. package/dist/edit-modes/measure-area-mode.d.ts +8 -0
  53. package/dist/edit-modes/measure-area-mode.js +50 -0
  54. package/dist/edit-modes/measure-distance-mode.d.ts +19 -0
  55. package/dist/edit-modes/measure-distance-mode.js +171 -0
  56. package/dist/edit-modes/modify-mode.d.ts +15 -0
  57. package/dist/edit-modes/modify-mode.js +203 -0
  58. package/dist/edit-modes/resize-circle-mode.d.ts +16 -0
  59. package/dist/edit-modes/resize-circle-mode.js +142 -0
  60. package/dist/edit-modes/rotate-mode.d.ts +17 -0
  61. package/dist/edit-modes/rotate-mode.js +151 -0
  62. package/dist/edit-modes/scale-mode.d.ts +27 -0
  63. package/dist/edit-modes/scale-mode.js +173 -0
  64. package/dist/edit-modes/snappable-mode.d.ts +21 -0
  65. package/dist/edit-modes/snappable-mode.js +109 -0
  66. package/dist/edit-modes/split-polygon-mode.d.ts +10 -0
  67. package/dist/edit-modes/split-polygon-mode.js +164 -0
  68. package/dist/edit-modes/three-click-polygon-mode.d.ts +10 -0
  69. package/dist/edit-modes/three-click-polygon-mode.js +72 -0
  70. package/dist/edit-modes/transform-mode.d.ts +9 -0
  71. package/dist/edit-modes/transform-mode.js +63 -0
  72. package/dist/edit-modes/translate-mode.d.ts +13 -0
  73. package/dist/edit-modes/translate-mode.js +113 -0
  74. package/dist/edit-modes/two-click-polygon-mode.d.ts +13 -0
  75. package/dist/edit-modes/two-click-polygon-mode.js +93 -0
  76. package/dist/edit-modes/types.d.ts +86 -0
  77. package/dist/edit-modes/types.js +1 -0
  78. package/dist/edit-modes/utils.d.ts +36 -0
  79. package/dist/edit-modes/utils.js +381 -0
  80. package/dist/edit-modes/view-mode.d.ts +3 -0
  81. package/dist/edit-modes/view-mode.js +3 -0
  82. package/dist/editable-layers/editable-geojson-layer.d.ts +98 -0
  83. package/dist/editable-layers/editable-geojson-layer.js +450 -0
  84. package/dist/editable-layers/editable-h3-cluster-layer.d.ts +34 -0
  85. package/dist/editable-layers/editable-h3-cluster-layer.js +164 -0
  86. package/dist/editable-layers/editable-layer.d.ts +49 -0
  87. package/dist/editable-layers/editable-layer.js +195 -0
  88. package/dist/editable-layers/editable-path-layer.d.ts +9 -0
  89. package/dist/editable-layers/editable-path-layer.js +34 -0
  90. package/dist/editable-layers/elevated-edit-handle-layer.d.ts +7 -0
  91. package/dist/editable-layers/elevated-edit-handle-layer.js +24 -0
  92. package/dist/editable-layers/junction-scatterplot-layer.d.ts +14 -0
  93. package/dist/editable-layers/junction-scatterplot-layer.js +41 -0
  94. package/dist/editable-layers/path-marker-layer/arrow-2d-geometry.d.ts +4 -0
  95. package/dist/editable-layers/path-marker-layer/arrow-2d-geometry.js +55 -0
  96. package/dist/editable-layers/path-marker-layer/create-path-markers.d.ts +16 -0
  97. package/dist/editable-layers/path-marker-layer/create-path-markers.js +75 -0
  98. package/dist/editable-layers/path-marker-layer/path-marker-layer.d.ts +40 -0
  99. package/dist/editable-layers/path-marker-layer/path-marker-layer.js +121 -0
  100. package/dist/editable-layers/path-marker-layer/polyline.d.ts +18 -0
  101. package/dist/editable-layers/path-marker-layer/polyline.js +37 -0
  102. package/dist/editable-layers/path-outline-layer/path-outline-layer.d.ts +26 -0
  103. package/dist/editable-layers/path-outline-layer/path-outline-layer.js +106 -0
  104. package/dist/editable-layers/selection-layer.d.ts +26 -0
  105. package/dist/editable-layers/selection-layer.js +167 -0
  106. package/dist/geojson-types.d.ts +58 -0
  107. package/dist/geojson-types.js +2 -0
  108. package/dist/index.cjs +5825 -0
  109. package/dist/index.cjs.map +7 -0
  110. package/dist/index.d.ts +60 -0
  111. package/dist/index.js +62 -0
  112. package/dist/lib/constants.d.ts +6 -0
  113. package/dist/lib/constants.js +6 -0
  114. package/dist/lib/deck-renderer/deck-cache.d.ts +14 -0
  115. package/dist/lib/deck-renderer/deck-cache.js +51 -0
  116. package/dist/lib/deck-renderer/deck-drawer.d.ts +63 -0
  117. package/dist/lib/deck-renderer/deck-drawer.js +232 -0
  118. package/dist/lib/feature.d.ts +10 -0
  119. package/dist/lib/feature.js +16 -0
  120. package/dist/lib/layer-mouse-event.d.ts +11 -0
  121. package/dist/lib/layer-mouse-event.js +24 -0
  122. package/dist/lib/layers/junctions-layer.d.ts +8 -0
  123. package/dist/lib/layers/junctions-layer.js +33 -0
  124. package/dist/lib/layers/segments-layer.d.ts +18 -0
  125. package/dist/lib/layers/segments-layer.js +94 -0
  126. package/dist/lib/layers/texts-layer.d.ts +8 -0
  127. package/dist/lib/layers/texts-layer.js +32 -0
  128. package/dist/lib/math.d.ts +11 -0
  129. package/dist/lib/math.js +22 -0
  130. package/dist/lib/nebula-layer.d.ts +13 -0
  131. package/dist/lib/nebula-layer.js +26 -0
  132. package/dist/lib/nebula.d.ts +34 -0
  133. package/dist/lib/nebula.js +254 -0
  134. package/dist/lib/style.d.ts +19 -0
  135. package/dist/lib/style.js +20 -0
  136. package/dist/memoize.d.ts +6 -0
  137. package/dist/memoize.js +40 -0
  138. package/dist/mode-handlers/composite-mode-handler.d.ts +24 -0
  139. package/dist/mode-handlers/composite-mode-handler.js +55 -0
  140. package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts +13 -0
  141. package/dist/mode-handlers/draw-90degree-polygon-handler.js +169 -0
  142. package/dist/mode-handlers/draw-circle-by-bounding-box-handler.d.ts +9 -0
  143. package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js +29 -0
  144. package/dist/mode-handlers/draw-circle-from-center-handler.d.ts +9 -0
  145. package/dist/mode-handlers/draw-circle-from-center-handler.js +27 -0
  146. package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts +9 -0
  147. package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js +30 -0
  148. package/dist/mode-handlers/draw-ellipse-using-three-points-handler.d.ts +9 -0
  149. package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js +37 -0
  150. package/dist/mode-handlers/draw-line-string-handler.d.ts +9 -0
  151. package/dist/mode-handlers/draw-line-string-handler.js +83 -0
  152. package/dist/mode-handlers/draw-point-handler.d.ts +5 -0
  153. package/dist/mode-handlers/draw-point-handler.js +11 -0
  154. package/dist/mode-handlers/draw-polygon-handler.d.ts +11 -0
  155. package/dist/mode-handlers/draw-polygon-handler.js +92 -0
  156. package/dist/mode-handlers/draw-rectangle-handler.d.ts +9 -0
  157. package/dist/mode-handlers/draw-rectangle-handler.js +18 -0
  158. package/dist/mode-handlers/draw-rectangle-using-three-points-handler.d.ts +9 -0
  159. package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js +49 -0
  160. package/dist/mode-handlers/duplicate-handler.d.ts +9 -0
  161. package/dist/mode-handlers/duplicate-handler.js +19 -0
  162. package/dist/mode-handlers/elevation-handler.d.ts +19 -0
  163. package/dist/mode-handlers/elevation-handler.js +48 -0
  164. package/dist/mode-handlers/extrude-handler.d.ts +18 -0
  165. package/dist/mode-handlers/extrude-handler.js +176 -0
  166. package/dist/mode-handlers/mode-handler.d.ts +61 -0
  167. package/dist/mode-handlers/mode-handler.js +286 -0
  168. package/dist/mode-handlers/modify-handler.d.ts +19 -0
  169. package/dist/mode-handlers/modify-handler.js +193 -0
  170. package/dist/mode-handlers/rotate-handler.d.ts +17 -0
  171. package/dist/mode-handlers/rotate-handler.js +74 -0
  172. package/dist/mode-handlers/scale-handler.d.ts +17 -0
  173. package/dist/mode-handlers/scale-handler.js +76 -0
  174. package/dist/mode-handlers/snappable-handler.d.ts +33 -0
  175. package/dist/mode-handlers/snappable-handler.js +133 -0
  176. package/dist/mode-handlers/split-polygon-handler.d.ts +11 -0
  177. package/dist/mode-handlers/split-polygon-handler.js +154 -0
  178. package/dist/mode-handlers/three-click-polygon-handler.d.ts +5 -0
  179. package/dist/mode-handlers/three-click-polygon-handler.js +18 -0
  180. package/dist/mode-handlers/translate-handler.d.ts +17 -0
  181. package/dist/mode-handlers/translate-handler.js +72 -0
  182. package/dist/mode-handlers/two-click-polygon-handler.d.ts +5 -0
  183. package/dist/mode-handlers/two-click-polygon-handler.js +18 -0
  184. package/dist/mode-handlers/view-handler.d.ts +8 -0
  185. package/dist/mode-handlers/view-handler.js +10 -0
  186. package/dist/shaderlib/color/color.d.ts +8 -0
  187. package/dist/shaderlib/color/color.js +51 -0
  188. package/dist/shaderlib/outline/outline.d.ts +8 -0
  189. package/dist/shaderlib/outline/outline.js +97 -0
  190. package/dist/shaderlib/utils/utils.d.ts +8 -0
  191. package/dist/shaderlib/utils/utils.js +28 -0
  192. package/dist/translateFromCenter.d.ts +4 -0
  193. package/dist/translateFromCenter.js +19 -0
  194. package/dist/types.d.ts +35 -0
  195. package/dist/types.js +1 -0
  196. package/dist/utils.d.ts +20 -0
  197. package/dist/utils.js +144 -0
  198. package/package.json +84 -0
  199. package/src/constants.ts +15 -0
  200. package/src/curve-utils.ts +77 -0
  201. package/src/edit-modes/composite-mode.ts +74 -0
  202. package/src/edit-modes/draw-90degree-polygon-mode.ts +220 -0
  203. package/src/edit-modes/draw-circle-by-diameter-mode.ts +88 -0
  204. package/src/edit-modes/draw-circle-from-center-mode.ts +79 -0
  205. package/src/edit-modes/draw-ellipse-by-bounding-box-mode.ts +25 -0
  206. package/src/edit-modes/draw-ellipse-using-three-points-mode.ts +23 -0
  207. package/src/edit-modes/draw-line-string-mode.ts +200 -0
  208. package/src/edit-modes/draw-point-mode.ts +35 -0
  209. package/src/edit-modes/draw-polygon-by-dragging-mode.ts +106 -0
  210. package/src/edit-modes/draw-polygon-mode.ts +171 -0
  211. package/src/edit-modes/draw-rectangle-from-center-mode.ts +23 -0
  212. package/src/edit-modes/draw-rectangle-mode.ts +14 -0
  213. package/src/edit-modes/draw-rectangle-using-three-points-mode.ts +36 -0
  214. package/src/edit-modes/draw-square-from-center-mode.ts +46 -0
  215. package/src/edit-modes/draw-square-mode.ts +36 -0
  216. package/src/edit-modes/duplicate-mode.ts +21 -0
  217. package/src/edit-modes/edit-mode.ts +30 -0
  218. package/src/edit-modes/elevation-mode.ts +86 -0
  219. package/src/edit-modes/extend-line-string-mode.ts +87 -0
  220. package/src/edit-modes/extrude-mode.ts +254 -0
  221. package/src/edit-modes/geojson-edit-mode.ts +283 -0
  222. package/src/edit-modes/immutable-feature-collection.ts +417 -0
  223. package/src/edit-modes/measure-angle-mode.ts +127 -0
  224. package/src/edit-modes/measure-area-mode.ts +62 -0
  225. package/src/edit-modes/measure-distance-mode.ts +215 -0
  226. package/src/edit-modes/modify-mode.ts +293 -0
  227. package/src/edit-modes/resize-circle-mode.ts +202 -0
  228. package/src/edit-modes/rotate-mode.ts +208 -0
  229. package/src/edit-modes/scale-mode.ts +231 -0
  230. package/src/edit-modes/snappable-mode.ts +174 -0
  231. package/src/edit-modes/split-polygon-mode.ts +201 -0
  232. package/src/edit-modes/three-click-polygon-mode.ts +111 -0
  233. package/src/edit-modes/transform-mode.ts +75 -0
  234. package/src/edit-modes/translate-mode.ts +161 -0
  235. package/src/edit-modes/two-click-polygon-mode.ts +132 -0
  236. package/src/edit-modes/types.ts +135 -0
  237. package/src/edit-modes/utils.ts +513 -0
  238. package/src/edit-modes/view-mode.ts +3 -0
  239. package/src/editable-layers/editable-geojson-layer.ts +603 -0
  240. package/src/editable-layers/editable-h3-cluster-layer.ts +226 -0
  241. package/src/editable-layers/editable-layer.ts +252 -0
  242. package/src/editable-layers/editable-path-layer.ts +51 -0
  243. package/src/editable-layers/elevated-edit-handle-layer.ts +33 -0
  244. package/src/editable-layers/junction-scatterplot-layer.ts +53 -0
  245. package/src/editable-layers/path-marker-layer/arrow-2d-geometry.ts +61 -0
  246. package/src/editable-layers/path-marker-layer/create-path-markers.ts +107 -0
  247. package/src/editable-layers/path-marker-layer/path-marker-layer.ts +179 -0
  248. package/src/editable-layers/path-marker-layer/polyline.ts +40 -0
  249. package/src/editable-layers/path-outline-layer/path-outline-layer.ts +147 -0
  250. package/src/editable-layers/selection-layer.ts +209 -0
  251. package/src/geojson-types.ts +89 -0
  252. package/src/index.ts +125 -0
  253. package/src/lib/constants.ts +6 -0
  254. package/src/lib/deck-renderer/deck-cache.ts +61 -0
  255. package/src/lib/deck-renderer/deck-drawer.ts +263 -0
  256. package/src/lib/feature.ts +27 -0
  257. package/src/lib/layer-mouse-event.ts +32 -0
  258. package/src/lib/layers/junctions-layer.ts +40 -0
  259. package/src/lib/layers/segments-layer.ts +108 -0
  260. package/src/lib/layers/texts-layer.ts +43 -0
  261. package/src/lib/math.ts +26 -0
  262. package/src/lib/nebula-layer.ts +33 -0
  263. package/src/lib/nebula.ts +323 -0
  264. package/src/lib/style.ts +22 -0
  265. package/src/memoize.ts +43 -0
  266. package/src/mode-handlers/composite-mode-handler.ts +89 -0
  267. package/src/mode-handlers/draw-90degree-polygon-handler.ts +201 -0
  268. package/src/mode-handlers/draw-circle-by-bounding-box-handler.ts +39 -0
  269. package/src/mode-handlers/draw-circle-from-center-handler.ts +38 -0
  270. package/src/mode-handlers/draw-ellipse-by-bounding-box-handler.ts +41 -0
  271. package/src/mode-handlers/draw-ellipse-using-three-points-handler.ts +46 -0
  272. package/src/mode-handlers/draw-line-string-handler.ts +108 -0
  273. package/src/mode-handlers/draw-point-handler.ts +15 -0
  274. package/src/mode-handlers/draw-polygon-handler.ts +121 -0
  275. package/src/mode-handlers/draw-rectangle-handler.ts +28 -0
  276. package/src/mode-handlers/draw-rectangle-using-three-points-handler.ts +60 -0
  277. package/src/mode-handlers/duplicate-handler.ts +25 -0
  278. package/src/mode-handlers/elevation-handler.ts +88 -0
  279. package/src/mode-handlers/extrude-handler.ts +245 -0
  280. package/src/mode-handlers/mode-handler.ts +394 -0
  281. package/src/mode-handlers/modify-handler.ts +263 -0
  282. package/src/mode-handlers/rotate-handler.ts +107 -0
  283. package/src/mode-handlers/scale-handler.ts +105 -0
  284. package/src/mode-handlers/snappable-handler.ts +184 -0
  285. package/src/mode-handlers/split-polygon-handler.ts +177 -0
  286. package/src/mode-handlers/three-click-polygon-handler.ts +25 -0
  287. package/src/mode-handlers/translate-handler.ts +110 -0
  288. package/src/mode-handlers/two-click-polygon-handler.ts +25 -0
  289. package/src/mode-handlers/view-handler.ts +13 -0
  290. package/src/shaderlib/color/color.ts +56 -0
  291. package/src/shaderlib/outline/outline.ts +101 -0
  292. package/src/shaderlib/utils/utils.ts +33 -0
  293. package/src/translateFromCenter.ts +48 -0
  294. package/src/types.ts +39 -0
  295. package/src/utils.ts +185 -0
@@ -0,0 +1,60 @@
1
+ export { ArrowStyles, DEFAULT_ARROWS, MAX_ARROWS } from './lib/style';
2
+ export { SELECTION_TYPE } from './lib/deck-renderer/deck-drawer';
3
+ export { default as Feature } from './lib/feature';
4
+ export { default as LayerMouseEvent } from './lib/layer-mouse-event';
5
+ export { default as NebulaLayer } from './lib/nebula-layer';
6
+ export { default as JunctionsLayer } from './lib/layers/junctions-layer';
7
+ export { default as TextsLayer } from './lib/layers/texts-layer';
8
+ export { default as SegmentsLayer } from './lib/layers/segments-layer';
9
+ export { default as NebulaCore } from './lib/nebula';
10
+ export { PROJECTED_PIXEL_SIZE_MULTIPLIER } from './lib/constants';
11
+ export { toDeckColor } from './utils';
12
+ export type { Color, Style, Viewport } from './types';
13
+ export { default as EditableGeoJsonLayer } from './editable-layers/editable-geojson-layer';
14
+ export { default as EditableH3ClusterLayer } from './editable-layers/editable-h3-cluster-layer';
15
+ export { default as SelectionLayer } from './editable-layers/selection-layer';
16
+ export { default as ElevatedEditHandleLayer } from './editable-layers/elevated-edit-handle-layer';
17
+ export { default as PathOutlineLayer } from './editable-layers/path-outline-layer/path-outline-layer';
18
+ export { default as PathMarkerLayer } from './editable-layers/path-marker-layer/path-marker-layer';
19
+ export { default as JunctionScatterplotLayer } from './editable-layers/junction-scatterplot-layer';
20
+ import * as utils from './utils';
21
+ export { utils };
22
+ export type { EditMode } from './edit-modes/edit-mode';
23
+ export type { GeoJsonEditModeType } from './edit-modes/geojson-edit-mode';
24
+ export type { GeoJsonEditModeConstructor } from './edit-modes/geojson-edit-mode';
25
+ export { GeoJsonEditMode } from './edit-modes/geojson-edit-mode';
26
+ export { ModifyMode } from './edit-modes/modify-mode';
27
+ export { ResizeCircleMode } from './edit-modes/resize-circle-mode';
28
+ export { TranslateMode } from './edit-modes/translate-mode';
29
+ export { ScaleMode } from './edit-modes/scale-mode';
30
+ export { RotateMode } from './edit-modes/rotate-mode';
31
+ export { DuplicateMode } from './edit-modes/duplicate-mode';
32
+ export { ExtendLineStringMode } from './edit-modes/extend-line-string-mode';
33
+ export { SplitPolygonMode } from './edit-modes/split-polygon-mode';
34
+ export { ExtrudeMode } from './edit-modes/extrude-mode';
35
+ export { ElevationMode } from './edit-modes/elevation-mode';
36
+ export { TransformMode } from './edit-modes/transform-mode';
37
+ export { DrawPointMode } from './edit-modes/draw-point-mode';
38
+ export { DrawLineStringMode } from './edit-modes/draw-line-string-mode';
39
+ export { DrawPolygonMode } from './edit-modes/draw-polygon-mode';
40
+ export { DrawRectangleMode } from './edit-modes/draw-rectangle-mode';
41
+ export { DrawSquareMode } from './edit-modes/draw-square-mode';
42
+ export { DrawRectangleFromCenterMode } from './edit-modes/draw-rectangle-from-center-mode';
43
+ export { DrawSquareFromCenterMode } from './edit-modes/draw-square-from-center-mode';
44
+ export { DrawCircleByDiameterMode } from './edit-modes/draw-circle-by-diameter-mode';
45
+ export { DrawCircleFromCenterMode } from './edit-modes/draw-circle-from-center-mode';
46
+ export { DrawEllipseByBoundingBoxMode } from './edit-modes/draw-ellipse-by-bounding-box-mode';
47
+ export { DrawEllipseUsingThreePointsMode } from './edit-modes/draw-ellipse-using-three-points-mode';
48
+ export { DrawRectangleUsingThreePointsMode } from './edit-modes/draw-rectangle-using-three-points-mode';
49
+ export { Draw90DegreePolygonMode } from './edit-modes/draw-90degree-polygon-mode';
50
+ export { DrawPolygonByDraggingMode } from './edit-modes/draw-polygon-by-dragging-mode';
51
+ export { ImmutableFeatureCollection } from './edit-modes/immutable-feature-collection';
52
+ export { ViewMode } from './edit-modes/view-mode';
53
+ export { MeasureDistanceMode } from './edit-modes/measure-distance-mode';
54
+ export { MeasureAreaMode } from './edit-modes/measure-area-mode';
55
+ export { MeasureAngleMode } from './edit-modes/measure-angle-mode';
56
+ export { CompositeMode } from './edit-modes/composite-mode';
57
+ export { SnappableMode } from './edit-modes/snappable-mode';
58
+ export { default as _memoize } from './memoize';
59
+ export type { ScreenCoordinates, EditAction, Pick, ClickEvent, PointerMoveEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, ModeProps, GuideFeatureCollection, Tooltip, } from './edit-modes/types';
60
+ export type { Position, PointCoordinates, LineStringCoordinates, PolygonCoordinates, MultiPointCoordinates, MultiLineStringCoordinates, MultiPolygonCoordinates, AnyCoordinates, Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, Geometry, Polygonal, BoundingBoxArray, FeatureOf, FeatureWithProps, FeatureCollection, AnyGeoJson, } from './geojson-types';
package/dist/index.js ADDED
@@ -0,0 +1,62 @@
1
+ export { ArrowStyles, DEFAULT_ARROWS, MAX_ARROWS } from './lib/style';
2
+ export { SELECTION_TYPE } from './lib/deck-renderer/deck-drawer';
3
+ export { default as Feature } from './lib/feature';
4
+ export { default as LayerMouseEvent } from './lib/layer-mouse-event';
5
+ export { default as NebulaLayer } from './lib/nebula-layer';
6
+ export { default as JunctionsLayer } from './lib/layers/junctions-layer';
7
+ export { default as TextsLayer } from './lib/layers/texts-layer';
8
+ export { default as SegmentsLayer } from './lib/layers/segments-layer';
9
+ export { default as NebulaCore } from './lib/nebula';
10
+ export { PROJECTED_PIXEL_SIZE_MULTIPLIER } from './lib/constants';
11
+ // Utils
12
+ export { toDeckColor } from './utils';
13
+ // Layers
14
+ export { default as EditableGeoJsonLayer } from './editable-layers/editable-geojson-layer';
15
+ export { default as EditableH3ClusterLayer } from './editable-layers/editable-h3-cluster-layer';
16
+ export { default as SelectionLayer } from './editable-layers/selection-layer';
17
+ export { default as ElevatedEditHandleLayer } from './editable-layers/elevated-edit-handle-layer';
18
+ // Layers moved from deck.gl
19
+ export { default as PathOutlineLayer } from './editable-layers/path-outline-layer/path-outline-layer';
20
+ export { default as PathMarkerLayer } from './editable-layers/path-marker-layer/path-marker-layer';
21
+ export { default as JunctionScatterplotLayer } from './editable-layers/junction-scatterplot-layer';
22
+ // Types
23
+ import * as utils from './utils';
24
+ export { utils };
25
+ export { GeoJsonEditMode } from './edit-modes/geojson-edit-mode';
26
+ // Alter modes
27
+ export { ModifyMode } from './edit-modes/modify-mode';
28
+ export { ResizeCircleMode } from './edit-modes/resize-circle-mode';
29
+ export { TranslateMode } from './edit-modes/translate-mode';
30
+ export { ScaleMode } from './edit-modes/scale-mode';
31
+ export { RotateMode } from './edit-modes/rotate-mode';
32
+ export { DuplicateMode } from './edit-modes/duplicate-mode';
33
+ export { ExtendLineStringMode } from './edit-modes/extend-line-string-mode';
34
+ export { SplitPolygonMode } from './edit-modes/split-polygon-mode';
35
+ export { ExtrudeMode } from './edit-modes/extrude-mode';
36
+ export { ElevationMode } from './edit-modes/elevation-mode';
37
+ export { TransformMode } from './edit-modes/transform-mode';
38
+ // Draw modes
39
+ export { DrawPointMode } from './edit-modes/draw-point-mode';
40
+ export { DrawLineStringMode } from './edit-modes/draw-line-string-mode';
41
+ export { DrawPolygonMode } from './edit-modes/draw-polygon-mode';
42
+ export { DrawRectangleMode } from './edit-modes/draw-rectangle-mode';
43
+ export { DrawSquareMode } from './edit-modes/draw-square-mode';
44
+ export { DrawRectangleFromCenterMode } from './edit-modes/draw-rectangle-from-center-mode';
45
+ export { DrawSquareFromCenterMode } from './edit-modes/draw-square-from-center-mode';
46
+ export { DrawCircleByDiameterMode } from './edit-modes/draw-circle-by-diameter-mode';
47
+ export { DrawCircleFromCenterMode } from './edit-modes/draw-circle-from-center-mode';
48
+ export { DrawEllipseByBoundingBoxMode } from './edit-modes/draw-ellipse-by-bounding-box-mode';
49
+ export { DrawEllipseUsingThreePointsMode } from './edit-modes/draw-ellipse-using-three-points-mode';
50
+ export { DrawRectangleUsingThreePointsMode } from './edit-modes/draw-rectangle-using-three-points-mode';
51
+ export { Draw90DegreePolygonMode } from './edit-modes/draw-90degree-polygon-mode';
52
+ export { DrawPolygonByDraggingMode } from './edit-modes/draw-polygon-by-dragging-mode';
53
+ export { ImmutableFeatureCollection } from './edit-modes/immutable-feature-collection';
54
+ // Other modes
55
+ export { ViewMode } from './edit-modes/view-mode';
56
+ export { MeasureDistanceMode } from './edit-modes/measure-distance-mode';
57
+ export { MeasureAreaMode } from './edit-modes/measure-area-mode';
58
+ export { MeasureAngleMode } from './edit-modes/measure-angle-mode';
59
+ export { CompositeMode } from './edit-modes/composite-mode';
60
+ export { SnappableMode } from './edit-modes/snappable-mode';
61
+ // Experimental
62
+ export { default as _memoize } from './memoize';
@@ -0,0 +1,6 @@
1
+ /**
2
+ * A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.
3
+ * Required in order to maintain the same appearance after upgrading to deck.gl v8.5.
4
+ * https://github.com/visgl/deck.gl/blob/master/docs/upgrade-guide.md
5
+ */
6
+ export declare const PROJECTED_PIXEL_SIZE_MULTIPLIER: number;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * A multiplier for screen-space width/scale for Arc, Line, Icon and Text layers.
3
+ * Required in order to maintain the same appearance after upgrading to deck.gl v8.5.
4
+ * https://github.com/visgl/deck.gl/blob/master/docs/upgrade-guide.md
5
+ */
6
+ export const PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;
@@ -0,0 +1,14 @@
1
+ export default class DeckCache<TORIG, TCONV> {
2
+ objects: TCONV[];
3
+ originals: TORIG[];
4
+ updateTrigger: number;
5
+ _idToPosition: Map<string, number>;
6
+ _getData: () => TORIG[];
7
+ _convert: (arg0: TORIG) => TCONV;
8
+ constructor(getData: () => TORIG[], convert: (arg0: TORIG) => TCONV);
9
+ updateAllDeckObjects(): void;
10
+ updateDeckObjectsByIds(ids: string[]): void;
11
+ triggerUpdate(): void;
12
+ getDeckObjectById(id: string): TCONV | null | undefined;
13
+ getOriginalById(id: string): TORIG | null | undefined;
14
+ }
@@ -0,0 +1,51 @@
1
+ export default class DeckCache {
2
+ objects;
3
+ originals;
4
+ updateTrigger;
5
+ _idToPosition;
6
+ _getData;
7
+ _convert;
8
+ constructor(getData, convert) {
9
+ this.objects = [];
10
+ this.originals = [];
11
+ this.updateTrigger = 0;
12
+ this._idToPosition = new Map();
13
+ this._getData = getData;
14
+ this._convert = convert;
15
+ }
16
+ updateAllDeckObjects() {
17
+ if (!this._getData || !this._convert)
18
+ return;
19
+ this.originals.length = 0;
20
+ this.objects.length = 0;
21
+ this._idToPosition.clear();
22
+ this._getData().forEach((d) => {
23
+ this._idToPosition.set(d.id, this.objects.length);
24
+ this.originals.push(d);
25
+ this.objects.push(this._convert(d));
26
+ });
27
+ this.triggerUpdate();
28
+ }
29
+ updateDeckObjectsByIds(ids) {
30
+ if (!this._getData || !this._convert)
31
+ return;
32
+ ids.forEach((id) => {
33
+ const p = this._idToPosition.get(id);
34
+ if (p !== undefined) {
35
+ this.objects[p] = this._convert(this.originals[p]);
36
+ }
37
+ });
38
+ this.triggerUpdate();
39
+ }
40
+ triggerUpdate() {
41
+ this.updateTrigger++;
42
+ }
43
+ getDeckObjectById(id) {
44
+ const p = this._idToPosition.get(id);
45
+ return p !== undefined ? this.objects[p] : null;
46
+ }
47
+ getOriginalById(id) {
48
+ const p = this._idToPosition.get(id);
49
+ return p !== undefined ? this.originals[p] : null;
50
+ }
51
+ }
@@ -0,0 +1,63 @@
1
+ import { PolygonLayer } from '@deck.gl/layers';
2
+ import { polygon } from '@turf/helpers';
3
+ import { Color } from '../../types';
4
+ export declare const SELECTION_TYPE: {
5
+ NONE: any;
6
+ RECTANGLE: string;
7
+ POLYGON: string;
8
+ };
9
+ export default class DeckDrawer {
10
+ nebula: Record<string, any>;
11
+ usePolygon: boolean;
12
+ validPolygon: boolean;
13
+ landPoints: [number, number][];
14
+ mousePoints: [number, number][];
15
+ constructor(nebula: Record<string, any>);
16
+ _getLayerIds(): any;
17
+ _selectFromPickingInfos(pickingInfos: Record<string, any>[]): void;
18
+ _getBoundingBox(): Record<string, any>;
19
+ _selectRectangleObjects(): void;
20
+ _selectPolygonObjects(): void;
21
+ _getMousePosFromEvent(event: Record<string, any>): [number, number];
22
+ handleEvent(event: Record<string, any>, lngLat: [number, number], selectionType: number): {
23
+ redraw: boolean;
24
+ deactivate: boolean;
25
+ };
26
+ reset(): void;
27
+ _makeStartPointHighlight(center: [number, number]): number[];
28
+ render(): (PolygonLayer<any, {
29
+ id: "DeckDrawerView";
30
+ data: any[];
31
+ fp64: boolean;
32
+ opacity: 1;
33
+ pickable: false;
34
+ lineWidthMinPixels: 2;
35
+ lineWidthMaxPixels: 2;
36
+ lineDashJustified: true;
37
+ getLineColor: (obj: {
38
+ lineColor?: Color;
39
+ }) => Color;
40
+ getFillColor: (obj: {
41
+ fillColor?: Color;
42
+ }) => Color;
43
+ getPolygon: (o: {
44
+ polygon?: any;
45
+ }) => any;
46
+ }> | PolygonLayer<any, {
47
+ id: "DeckDrawerPick";
48
+ data: any[];
49
+ getLineColor: (obj: {
50
+ lineColor?: Color;
51
+ }) => Color;
52
+ getFillColor: (obj: {
53
+ fillColor?: Color;
54
+ }) => Color;
55
+ fp64: boolean;
56
+ opacity: 1;
57
+ stroked: false;
58
+ pickable: true;
59
+ getPolygon: (o: {
60
+ polygon?: any;
61
+ }) => any;
62
+ }>)[];
63
+ }
@@ -0,0 +1,232 @@
1
+ import { PolygonLayer } from '@deck.gl/layers';
2
+ import { point, polygon } from '@turf/helpers';
3
+ import turfBbox from '@turf/bbox';
4
+ import turfBboxPolygon from '@turf/bbox-polygon';
5
+ import turfBuffer from '@turf/buffer';
6
+ import turfDifference from '@turf/difference';
7
+ import turfDistance from '@turf/distance';
8
+ const POLYGON_LINE_COLOR = [0, 255, 0, 255];
9
+ const POLYGON_FILL_COLOR = [255, 255, 255, 90];
10
+ const POLYGON_LINE_WIDTH = 2;
11
+ // const POLYGON_DASHES = [20, 20];
12
+ const POLYGON_THRESHOLD = 0.01;
13
+ const EXPANSION_KM = 10;
14
+ const LAYER_ID_VIEW = 'DeckDrawerView';
15
+ const LAYER_ID_PICK = 'DeckDrawerPick';
16
+ export const SELECTION_TYPE = {
17
+ NONE: null,
18
+ RECTANGLE: 'rectangle',
19
+ POLYGON: 'polygon',
20
+ };
21
+ export default class DeckDrawer {
22
+ nebula;
23
+ usePolygon;
24
+ validPolygon;
25
+ landPoints;
26
+ mousePoints;
27
+ constructor(nebula) {
28
+ this.nebula = nebula;
29
+ this.usePolygon = false;
30
+ this.validPolygon = true;
31
+ this.landPoints = [];
32
+ this.mousePoints = [];
33
+ }
34
+ _getLayerIds() {
35
+ // TODO: sort by mouse priority
36
+ return this.nebula.deckgl.props.layers
37
+ .filter((l) => l && l.props && l.props.nebulaLayer && l.props.nebulaLayer.enableSelection)
38
+ .map((l) => l.id);
39
+ }
40
+ _selectFromPickingInfos(pickingInfos) {
41
+ const objects = pickingInfos.map(({ layer, index, object }) => object.original || layer.props.nebulaLayer.deckCache.originals[index]);
42
+ this.nebula.props.onSelection(objects);
43
+ }
44
+ _getBoundingBox() {
45
+ const { mousePoints } = this;
46
+ const allX = mousePoints.map((mousePoint) => mousePoint[0]);
47
+ const allY = mousePoints.map((mousePoint) => mousePoint[1]);
48
+ const x = Math.min(...allX);
49
+ const y = Math.min(...allY);
50
+ const maxX = Math.max(...allX);
51
+ const maxY = Math.max(...allY);
52
+ return { x, y, width: maxX - x, height: maxY - y };
53
+ }
54
+ _selectRectangleObjects() {
55
+ if (this.landPoints.length !== 2)
56
+ return;
57
+ const [x1, y1] = this.mousePoints[0];
58
+ const [x2, y2] = this.mousePoints[1];
59
+ const pickingInfos = this.nebula.deckgl.pickObjects({
60
+ x: Math.min(x1, x2),
61
+ y: Math.min(y1, y2),
62
+ width: Math.abs(x2 - x1),
63
+ height: Math.abs(y2 - y1),
64
+ layerIds: this._getLayerIds(),
65
+ });
66
+ this._selectFromPickingInfos(pickingInfos);
67
+ }
68
+ _selectPolygonObjects() {
69
+ const pickingInfos = this.nebula.deckgl.pickObjects({
70
+ ...this._getBoundingBox(),
71
+ layerIds: [LAYER_ID_PICK, ...this._getLayerIds()],
72
+ });
73
+ this._selectFromPickingInfos(pickingInfos.filter((item) => item.layer.id !== LAYER_ID_PICK));
74
+ }
75
+ _getMousePosFromEvent(event) {
76
+ const { offsetX, offsetY } = event;
77
+ return [offsetX, offsetY];
78
+ }
79
+ // eslint-disable-next-line max-statements, complexity
80
+ handleEvent(event, lngLat, selectionType) {
81
+ // capture all events (mouse-up is needed to prevent us stuck in moving map)
82
+ if (event.type !== 'mouseup')
83
+ event.stopPropagation();
84
+ // @ts-expect-error revisit selectionType type
85
+ this.usePolygon = selectionType === SELECTION_TYPE.POLYGON;
86
+ let redraw = false;
87
+ let deactivate = false;
88
+ const { usePolygon, landPoints, mousePoints } = this;
89
+ if (event.type === 'mousedown') {
90
+ if (usePolygon && landPoints.length) {
91
+ // if landPoints.length is zero we want to insert two points (so we let it run the else)
92
+ // also don't insert if polygon is invalid
93
+ if (this.landPoints.length < 3 || this.validPolygon) {
94
+ landPoints.push(lngLat);
95
+ mousePoints.push(this._getMousePosFromEvent(event));
96
+ }
97
+ }
98
+ else {
99
+ this.landPoints = [lngLat, lngLat];
100
+ const m = this._getMousePosFromEvent(event);
101
+ this.mousePoints = [m, m];
102
+ }
103
+ redraw = true;
104
+ }
105
+ else if (event.type === 'mousemove' && landPoints.length) {
106
+ // update last point
107
+ landPoints[landPoints.length - 1] = lngLat;
108
+ mousePoints[mousePoints.length - 1] = this._getMousePosFromEvent(event);
109
+ redraw = true;
110
+ }
111
+ else if (event.type === 'mouseup') {
112
+ if (usePolygon) {
113
+ // check to see if completed
114
+ // TODO: Maybe double-click to finish?
115
+ if (landPoints.length > 4 &&
116
+ turfDistance(landPoints[0], landPoints[landPoints.length - 1]) < POLYGON_THRESHOLD &&
117
+ this.validPolygon) {
118
+ this._selectPolygonObjects();
119
+ this.reset();
120
+ redraw = true;
121
+ deactivate = true;
122
+ }
123
+ }
124
+ else {
125
+ this._selectRectangleObjects();
126
+ this.reset();
127
+ redraw = true;
128
+ deactivate = true;
129
+ }
130
+ }
131
+ return { redraw, deactivate };
132
+ }
133
+ reset() {
134
+ this.landPoints = [];
135
+ this.mousePoints = [];
136
+ }
137
+ _makeStartPointHighlight(center) {
138
+ const buffer = turfBuffer(point(center), POLYGON_THRESHOLD / 4.0);
139
+ // @ts-expect-error revisit return type
140
+ return turfBboxPolygon(turfBbox(buffer)).geometry.coordinates;
141
+ }
142
+ render() {
143
+ const data = [];
144
+ const dataPick = [];
145
+ if (!this.usePolygon && this.landPoints.length === 2) {
146
+ // Use mouse points instead of land points so we get the right shape
147
+ // no matter what bearing is.
148
+ const [[x1, y1], [x2, y2]] = this.mousePoints;
149
+ const selPolygon = [
150
+ [x1, y1],
151
+ [x1, y2],
152
+ [x2, y2],
153
+ [x2, y1],
154
+ [x1, y1],
155
+ ].map((mousePos) => this.nebula.unprojectMousePosition(mousePos));
156
+ data.push({
157
+ polygon: selPolygon,
158
+ lineColor: POLYGON_LINE_COLOR,
159
+ fillColor: POLYGON_FILL_COLOR,
160
+ });
161
+ }
162
+ else if (this.usePolygon && this.landPoints.length) {
163
+ data.push({
164
+ polygon: this.landPoints,
165
+ lineColor: POLYGON_LINE_COLOR,
166
+ fillColor: POLYGON_FILL_COLOR,
167
+ });
168
+ // Hack: use a polygon to hide the outside, because pickObjects()
169
+ // does not support polygons
170
+ if (this.landPoints.length >= 3) {
171
+ const landPointsPoly = polygon([[...this.landPoints, this.landPoints[0]]]);
172
+ const bigBuffer = turfBuffer(point(this.landPoints[0]), EXPANSION_KM);
173
+ let bigPolygon;
174
+ try {
175
+ // turfDifference throws an exception if the polygon
176
+ // intersects with itself
177
+ bigPolygon = turfDifference(bigBuffer, landPointsPoly);
178
+ dataPick.push({
179
+ polygon: bigPolygon.geometry.coordinates,
180
+ fillColor: [0, 0, 0, 1],
181
+ });
182
+ this.validPolygon = true;
183
+ }
184
+ catch (e) {
185
+ // invalid selection polygon
186
+ this.validPolygon = false;
187
+ }
188
+ }
189
+ }
190
+ if (this.landPoints.length) {
191
+ // highlight start point
192
+ data.push({
193
+ polygon: this._makeStartPointHighlight(this.landPoints[0]),
194
+ lineColor: [0, 0, 0, 0],
195
+ fillColor: POLYGON_LINE_COLOR,
196
+ });
197
+ }
198
+ // Hack to make the PolygonLayer() stay active,
199
+ // otherwise it takes 3 seconds (!) to init!
200
+ // TODO: fix this
201
+ data.push({ polygon: [[0, 0]] });
202
+ dataPick.push({ polygon: [[0, 0]] });
203
+ return [
204
+ new PolygonLayer({
205
+ id: LAYER_ID_VIEW,
206
+ data,
207
+ fp64: false,
208
+ opacity: 1.0,
209
+ pickable: false,
210
+ lineWidthMinPixels: POLYGON_LINE_WIDTH,
211
+ lineWidthMaxPixels: POLYGON_LINE_WIDTH,
212
+ lineDashJustified: true,
213
+ // TODO(v9) Add extension
214
+ // getLineDashArray: (x) => POLYGON_DASHES,
215
+ getLineColor: (obj) => obj.lineColor || [0, 0, 0, 255],
216
+ getFillColor: (obj) => obj.fillColor || [0, 0, 0, 255],
217
+ getPolygon: (o) => o.polygon,
218
+ }),
219
+ new PolygonLayer({
220
+ id: LAYER_ID_PICK,
221
+ data: dataPick,
222
+ getLineColor: (obj) => obj.lineColor || [0, 0, 0, 255],
223
+ getFillColor: (obj) => obj.fillColor || [0, 0, 0, 255],
224
+ fp64: false,
225
+ opacity: 1.0,
226
+ stroked: false,
227
+ pickable: true,
228
+ getPolygon: (o) => o.polygon,
229
+ }),
230
+ ];
231
+ }
232
+ }
@@ -0,0 +1,10 @@
1
+ import { Feature as GeoJson } from '../geojson-types';
2
+ import { Style } from '../types';
3
+ export default class Feature {
4
+ geoJson: GeoJson;
5
+ style: Style;
6
+ original: any | null | undefined;
7
+ metadata: Record<string, any>;
8
+ constructor(geoJson: GeoJson, style: Style, original?: any | null | undefined, metadata?: Record<string, any>);
9
+ getCoords(): import("../geojson-types").Position | import("../geojson-types").LineStringCoordinates | import("../geojson-types").PolygonCoordinates | import("../geojson-types").MultiPointCoordinates | import("../geojson-types").MultiLineStringCoordinates | import("../geojson-types").MultiPolygonCoordinates;
10
+ }
@@ -0,0 +1,16 @@
1
+ export default class Feature {
2
+ // geo json coordinates
3
+ geoJson;
4
+ style;
5
+ original;
6
+ metadata;
7
+ constructor(geoJson, style, original = null, metadata = {}) {
8
+ this.geoJson = geoJson;
9
+ this.style = style;
10
+ this.original = original;
11
+ this.metadata = metadata;
12
+ }
13
+ getCoords() {
14
+ return this.geoJson.geometry.coordinates;
15
+ }
16
+ }
@@ -0,0 +1,11 @@
1
+ import { Position } from '../geojson-types';
2
+ export default class LayerMouseEvent {
3
+ canceled: boolean;
4
+ data: Record<string, any>;
5
+ metadata: Record<string, any>;
6
+ groundPoint: Position;
7
+ nativeEvent: MouseEvent;
8
+ nebula: Record<string, any>;
9
+ constructor(nativeEvent: MouseEvent, { data, groundPoint, nebula, metadata }: Record<string, any>);
10
+ stopPropagation(): void;
11
+ }
@@ -0,0 +1,24 @@
1
+ export default class LayerMouseEvent {
2
+ canceled = false;
3
+ // original item that this event is related to
4
+ data;
5
+ // internal nebula info about the object
6
+ metadata;
7
+ // the mouse [lng,lat] raycasted onto the ground
8
+ groundPoint;
9
+ // browser event
10
+ nativeEvent;
11
+ // reference to nebula
12
+ nebula;
13
+ constructor(nativeEvent, { data, groundPoint, nebula, metadata }) {
14
+ this.nativeEvent = nativeEvent;
15
+ this.data = data;
16
+ this.groundPoint = groundPoint;
17
+ this.nebula = nebula;
18
+ this.metadata = metadata;
19
+ }
20
+ stopPropagation() {
21
+ this.nativeEvent.stopPropagation();
22
+ this.canceled = true;
23
+ }
24
+ }
@@ -0,0 +1,8 @@
1
+ import NebulaLayer from '../nebula-layer';
2
+ import DeckCache from '../deck-renderer/deck-cache';
3
+ import JunctionScatterplotLayer from '../../editable-layers/junction-scatterplot-layer';
4
+ export default class JunctionsLayer extends NebulaLayer {
5
+ deckCache: DeckCache<any, any>;
6
+ constructor(config: Record<string, any>);
7
+ render({ nebula }: Record<string, any>): JunctionScatterplotLayer;
8
+ }
@@ -0,0 +1,33 @@
1
+ import NebulaLayer from '../nebula-layer';
2
+ import { toDeckColor } from '../../utils';
3
+ import DeckCache from '../deck-renderer/deck-cache';
4
+ import JunctionScatterplotLayer from '../../editable-layers/junction-scatterplot-layer';
5
+ export default class JunctionsLayer extends NebulaLayer {
6
+ deckCache;
7
+ constructor(config) {
8
+ super(config);
9
+ this.deckCache = new DeckCache(config.getData, (data) => config.toNebulaFeature(data));
10
+ this.enablePicking = true;
11
+ }
12
+ render({ nebula }) {
13
+ const defaultColor = [0x0, 0x0, 0x0, 0xff];
14
+ const { objects, updateTrigger } = this.deckCache;
15
+ return new JunctionScatterplotLayer({
16
+ id: `junctions-${this.id}`,
17
+ data: objects,
18
+ opacity: 1,
19
+ pickable: true,
20
+ getPosition: (nf) => nf.geoJson.geometry.coordinates,
21
+ getFillColor: (nf) => toDeckColor(nf.style.fillColor) || defaultColor,
22
+ getStrokeColor: (nf) => toDeckColor(nf.style.outlineColor) || toDeckColor(nf.style.fillColor) || defaultColor,
23
+ getRadius: (nf) => nf.style.pointRadiusMeters + nf.style.outlineRadiusMeters || 1,
24
+ getInnerRadius: (nf) => nf.style.pointRadiusMeters || 0.5,
25
+ parameters: {
26
+ depthCompare: 'always'
27
+ },
28
+ updateTriggers: { all: updateTrigger },
29
+ // @ts-ignore
30
+ nebulaLayer: this,
31
+ });
32
+ }
33
+ }
@@ -0,0 +1,18 @@
1
+ import NebulaLayer from '../nebula-layer';
2
+ import DeckCache from '../deck-renderer/deck-cache';
3
+ import PathMarkerLayer from '../../editable-layers/path-marker-layer/path-marker-layer';
4
+ export default class SegmentsLayer extends NebulaLayer {
5
+ deckCache: DeckCache<any, any>;
6
+ noBlend: boolean;
7
+ highlightColor: [number, number, number, number];
8
+ arrowSize: number;
9
+ jointRounded: boolean;
10
+ capRounded: boolean;
11
+ dashed: boolean;
12
+ markerLayerProps: Record<string, any> | null | undefined;
13
+ constructor(config: Record<string, any>);
14
+ getMouseOverSegment(): any;
15
+ _calcMarkerPercentages(nf: Record<string, any>): number[];
16
+ _getHighlightedObjectIndex({ nebula }: Record<string, any>): number;
17
+ render({ nebula }: Record<string, any>): PathMarkerLayer<any, Record<string, unknown>>;
18
+ }