@deck.gl-community/editable-layers 9.0.2 → 9.1.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/edit-modes/composite-mode.d.ts +4 -3
- package/dist/edit-modes/composite-mode.d.ts.map +1 -0
- package/dist/edit-modes/composite-mode.js +1 -1
- package/dist/edit-modes/delete-mode.d.ts +7 -0
- package/dist/edit-modes/delete-mode.d.ts.map +1 -0
- package/dist/edit-modes/delete-mode.js +22 -0
- package/dist/edit-modes/draw-90degree-polygon-mode.d.ts +4 -3
- package/dist/edit-modes/draw-90degree-polygon-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-90degree-polygon-mode.js +2 -2
- package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts +4 -3
- package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-circle-by-diameter-mode.js +7 -3
- package/dist/edit-modes/draw-circle-from-center-mode.d.ts +4 -3
- package/dist/edit-modes/draw-circle-from-center-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-circle-from-center-mode.js +6 -2
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts +3 -2
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.js +11 -3
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts +3 -2
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.js +12 -3
- package/dist/edit-modes/draw-line-string-mode.d.ts +4 -3
- package/dist/edit-modes/draw-line-string-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-line-string-mode.js +3 -3
- package/dist/edit-modes/draw-point-mode.d.ts +4 -3
- package/dist/edit-modes/draw-point-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-point-mode.js +1 -1
- package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts +4 -3
- package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-polygon-by-dragging-mode.js +2 -2
- package/dist/edit-modes/draw-polygon-mode.d.ts +4 -3
- package/dist/edit-modes/draw-polygon-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-polygon-mode.js +2 -2
- package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts +3 -2
- package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-rectangle-from-center-mode.js +1 -1
- package/dist/edit-modes/draw-rectangle-mode.d.ts +3 -2
- package/dist/edit-modes/draw-rectangle-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-rectangle-mode.js +1 -1
- package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts +3 -2
- package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-rectangle-using-three-points-mode.js +2 -2
- package/dist/edit-modes/draw-square-from-center-mode.d.ts +3 -2
- package/dist/edit-modes/draw-square-from-center-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-square-from-center-mode.js +1 -1
- package/dist/edit-modes/draw-square-mode.d.ts +3 -2
- package/dist/edit-modes/draw-square-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-square-mode.js +1 -1
- package/dist/edit-modes/duplicate-mode.d.ts +4 -3
- package/dist/edit-modes/duplicate-mode.d.ts.map +1 -0
- package/dist/edit-modes/duplicate-mode.js +1 -1
- package/dist/edit-modes/edit-mode.d.ts +2 -1
- package/dist/edit-modes/edit-mode.d.ts.map +1 -0
- package/dist/edit-modes/elevation-mode.d.ts +4 -3
- package/dist/edit-modes/elevation-mode.d.ts.map +1 -0
- package/dist/edit-modes/elevation-mode.js +2 -2
- package/dist/edit-modes/extend-line-string-mode.d.ts +4 -3
- package/dist/edit-modes/extend-line-string-mode.d.ts.map +1 -0
- package/dist/edit-modes/extend-line-string-mode.js +5 -2
- package/dist/edit-modes/extrude-mode.d.ts +4 -3
- package/dist/edit-modes/extrude-mode.d.ts.map +1 -0
- package/dist/edit-modes/extrude-mode.js +6 -3
- package/dist/edit-modes/geojson-edit-mode.d.ts +6 -5
- package/dist/edit-modes/geojson-edit-mode.d.ts.map +1 -0
- package/dist/edit-modes/geojson-edit-mode.js +9 -6
- package/dist/edit-modes/immutable-feature-collection.d.ts +2 -1
- package/dist/edit-modes/immutable-feature-collection.d.ts.map +1 -0
- package/dist/edit-modes/measure-angle-mode.d.ts +4 -3
- package/dist/edit-modes/measure-angle-mode.d.ts.map +1 -0
- package/dist/edit-modes/measure-angle-mode.js +2 -2
- package/dist/edit-modes/measure-area-mode.d.ts +4 -3
- package/dist/edit-modes/measure-area-mode.d.ts.map +1 -0
- package/dist/edit-modes/measure-area-mode.js +1 -1
- package/dist/edit-modes/measure-distance-mode.d.ts +4 -3
- package/dist/edit-modes/measure-distance-mode.d.ts.map +1 -0
- package/dist/edit-modes/measure-distance-mode.js +2 -2
- package/dist/edit-modes/modify-mode.d.ts +5 -4
- package/dist/edit-modes/modify-mode.d.ts.map +1 -0
- package/dist/edit-modes/modify-mode.js +6 -3
- package/dist/edit-modes/resize-circle-mode.d.ts +6 -5
- package/dist/edit-modes/resize-circle-mode.d.ts.map +1 -0
- package/dist/edit-modes/resize-circle-mode.js +4 -3
- package/dist/edit-modes/rotate-mode.d.ts +4 -3
- package/dist/edit-modes/rotate-mode.d.ts.map +1 -0
- package/dist/edit-modes/rotate-mode.js +5 -4
- package/dist/edit-modes/scale-mode.d.ts +4 -3
- package/dist/edit-modes/scale-mode.d.ts.map +1 -0
- package/dist/edit-modes/scale-mode.js +5 -4
- package/dist/edit-modes/snappable-mode.d.ts +4 -3
- package/dist/edit-modes/snappable-mode.d.ts.map +1 -0
- package/dist/edit-modes/snappable-mode.js +2 -2
- package/dist/edit-modes/split-polygon-mode.d.ts +4 -3
- package/dist/edit-modes/split-polygon-mode.d.ts.map +1 -0
- package/dist/edit-modes/split-polygon-mode.js +3 -3
- package/dist/edit-modes/three-click-polygon-mode.d.ts +4 -3
- package/dist/edit-modes/three-click-polygon-mode.d.ts.map +1 -0
- package/dist/edit-modes/three-click-polygon-mode.js +4 -2
- package/dist/edit-modes/transform-mode.d.ts +4 -3
- package/dist/edit-modes/transform-mode.d.ts.map +1 -0
- package/dist/edit-modes/transform-mode.js +7 -4
- package/dist/edit-modes/translate-mode.d.ts +4 -3
- package/dist/edit-modes/translate-mode.d.ts.map +1 -0
- package/dist/edit-modes/translate-mode.js +6 -5
- package/dist/edit-modes/two-click-polygon-mode.d.ts +4 -3
- package/dist/edit-modes/two-click-polygon-mode.d.ts.map +1 -0
- package/dist/edit-modes/two-click-polygon-mode.js +4 -5
- package/dist/edit-modes/types.d.ts +3 -1
- package/dist/edit-modes/types.d.ts.map +1 -0
- package/dist/edit-modes/utils.d.ts +5 -3
- package/dist/edit-modes/utils.d.ts.map +1 -0
- package/dist/edit-modes/utils.js +5 -1
- package/dist/edit-modes/view-mode.d.ts +2 -1
- package/dist/edit-modes/view-mode.d.ts.map +1 -0
- package/dist/edit-modes/view-mode.js +1 -1
- package/dist/editable-layers/editable-geojson-layer.d.ts +10 -9
- package/dist/editable-layers/editable-geojson-layer.d.ts.map +1 -0
- package/dist/editable-layers/editable-geojson-layer.js +30 -28
- package/dist/editable-layers/editable-h3-cluster-layer.d.ts +3 -2
- package/dist/editable-layers/editable-h3-cluster-layer.d.ts.map +1 -0
- package/dist/editable-layers/editable-h3-cluster-layer.js +4 -5
- package/dist/editable-layers/editable-layer.d.ts +7 -4
- package/dist/editable-layers/editable-layer.d.ts.map +1 -0
- package/dist/editable-layers/editable-layer.js +8 -4
- package/dist/editable-layers/editable-path-layer.d.ts +14 -1
- package/dist/editable-layers/editable-path-layer.d.ts.map +1 -0
- package/dist/editable-layers/editable-path-layer.js +21 -13
- package/dist/editable-layers/elevated-edit-handle-layer.d.ts +1 -0
- package/dist/editable-layers/elevated-edit-handle-layer.d.ts.map +1 -0
- package/dist/editable-layers/junction-scatterplot-layer.d.ts +6 -3
- package/dist/editable-layers/junction-scatterplot-layer.d.ts.map +1 -0
- package/dist/editable-layers/selection-layer.d.ts +3 -1
- package/dist/editable-layers/selection-layer.d.ts.map +1 -0
- package/dist/editable-layers/selection-layer.js +4 -5
- package/dist/index.cjs +127 -45
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +60 -58
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -52
- package/dist/lib/constants.d.ts +1 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/deck-renderer/deck-cache.d.ts +1 -0
- package/dist/lib/deck-renderer/deck-cache.d.ts.map +1 -0
- package/dist/lib/deck-renderer/deck-drawer.d.ts +2 -1
- package/dist/lib/deck-renderer/deck-drawer.d.ts.map +1 -0
- package/dist/lib/feature.d.ts +3 -2
- package/dist/lib/feature.d.ts.map +1 -0
- package/dist/lib/layer-mouse-event.d.ts +2 -1
- package/dist/lib/layer-mouse-event.d.ts.map +1 -0
- package/dist/lib/layers/junctions-layer.d.ts +4 -3
- package/dist/lib/layers/junctions-layer.d.ts.map +1 -0
- package/dist/lib/layers/junctions-layer.js +4 -4
- package/dist/lib/layers/segments-layer.d.ts +3 -2
- package/dist/lib/layers/segments-layer.d.ts.map +1 -0
- package/dist/lib/layers/segments-layer.js +4 -4
- package/dist/lib/layers/texts-layer.d.ts +3 -2
- package/dist/lib/layers/texts-layer.d.ts.map +1 -0
- package/dist/lib/layers/texts-layer.js +4 -4
- package/dist/lib/math.d.ts +2 -1
- package/dist/lib/math.d.ts.map +1 -0
- package/dist/lib/nebula-core.d.ts +2 -1
- package/dist/lib/nebula-core.d.ts.map +1 -0
- package/dist/lib/nebula-core.js +3 -3
- package/dist/lib/nebula-layer.d.ts +2 -1
- package/dist/lib/nebula-layer.d.ts.map +1 -0
- package/dist/lib/style.d.ts +1 -0
- package/dist/lib/style.d.ts.map +1 -0
- package/dist/mode-handlers/composite-mode-handler.d.ts +4 -3
- package/dist/mode-handlers/composite-mode-handler.d.ts.map +1 -0
- package/dist/mode-handlers/composite-mode-handler.js +1 -1
- package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-90degree-polygon-handler.js +2 -2
- package/dist/mode-handlers/draw-circle-by-bounding-box-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-circle-by-bounding-box-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js +2 -2
- package/dist/mode-handlers/draw-circle-from-center-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-circle-from-center-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-circle-from-center-handler.js +1 -1
- package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js +2 -2
- package/dist/mode-handlers/draw-ellipse-using-three-points-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-ellipse-using-three-points-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js +2 -2
- package/dist/mode-handlers/draw-line-string-handler.d.ts +3 -2
- package/dist/mode-handlers/draw-line-string-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-line-string-handler.js +1 -1
- package/dist/mode-handlers/draw-point-handler.d.ts +3 -2
- package/dist/mode-handlers/draw-point-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-point-handler.js +1 -1
- package/dist/mode-handlers/draw-polygon-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-polygon-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-polygon-handler.js +1 -1
- package/dist/mode-handlers/draw-rectangle-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-rectangle-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-rectangle-handler.js +1 -1
- package/dist/mode-handlers/draw-rectangle-using-three-points-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-rectangle-using-three-points-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js +2 -2
- package/dist/mode-handlers/duplicate-handler.d.ts +4 -3
- package/dist/mode-handlers/duplicate-handler.d.ts.map +1 -0
- package/dist/mode-handlers/duplicate-handler.js +1 -1
- package/dist/mode-handlers/elevation-handler.d.ts +5 -4
- package/dist/mode-handlers/elevation-handler.d.ts.map +1 -0
- package/dist/mode-handlers/elevation-handler.js +2 -2
- package/dist/mode-handlers/extrude-handler.d.ts +4 -3
- package/dist/mode-handlers/extrude-handler.d.ts.map +1 -0
- package/dist/mode-handlers/extrude-handler.js +3 -3
- package/dist/mode-handlers/mode-handler.d.ts +4 -3
- package/dist/mode-handlers/mode-handler.d.ts.map +1 -0
- package/dist/mode-handlers/mode-handler.js +1 -1
- package/dist/mode-handlers/modify-handler.d.ts +5 -4
- package/dist/mode-handlers/modify-handler.d.ts.map +1 -0
- package/dist/mode-handlers/modify-handler.js +2 -2
- package/dist/mode-handlers/rotate-handler.d.ts +4 -3
- package/dist/mode-handlers/rotate-handler.d.ts.map +1 -0
- package/dist/mode-handlers/rotate-handler.js +1 -1
- package/dist/mode-handlers/scale-handler.d.ts +4 -3
- package/dist/mode-handlers/scale-handler.d.ts.map +1 -0
- package/dist/mode-handlers/scale-handler.js +1 -1
- package/dist/mode-handlers/snappable-handler.d.ts +4 -3
- package/dist/mode-handlers/snappable-handler.d.ts.map +1 -0
- package/dist/mode-handlers/snappable-handler.js +1 -1
- package/dist/mode-handlers/split-polygon-handler.d.ts +3 -2
- package/dist/mode-handlers/split-polygon-handler.d.ts.map +1 -0
- package/dist/mode-handlers/split-polygon-handler.js +2 -2
- package/dist/mode-handlers/three-click-polygon-handler.d.ts +3 -2
- package/dist/mode-handlers/three-click-polygon-handler.d.ts.map +1 -0
- package/dist/mode-handlers/three-click-polygon-handler.js +1 -1
- package/dist/mode-handlers/translate-handler.d.ts +4 -3
- package/dist/mode-handlers/translate-handler.d.ts.map +1 -0
- package/dist/mode-handlers/translate-handler.js +1 -1
- package/dist/mode-handlers/two-click-polygon-handler.d.ts +3 -2
- package/dist/mode-handlers/two-click-polygon-handler.d.ts.map +1 -0
- package/dist/mode-handlers/two-click-polygon-handler.js +1 -1
- package/dist/mode-handlers/view-handler.d.ts +3 -2
- package/dist/mode-handlers/view-handler.d.ts.map +1 -0
- package/dist/mode-handlers/view-handler.js +1 -1
- package/dist/shaderlib/color/color.d.ts +13 -2
- package/dist/shaderlib/color/color.d.ts.map +1 -0
- package/dist/shaderlib/color/color.js +25 -18
- package/dist/shaderlib/utils/utils.d.ts +1 -0
- package/dist/shaderlib/utils/utils.d.ts.map +1 -0
- package/dist/utils/curve-utils.d.ts +1 -0
- package/dist/utils/curve-utils.d.ts.map +1 -0
- package/dist/utils/geojson-types.d.ts +1 -0
- package/dist/utils/geojson-types.d.ts.map +1 -0
- package/dist/utils/memoize.d.ts +1 -0
- package/dist/utils/memoize.d.ts.map +1 -0
- package/dist/utils/translate-from-center.d.ts +1 -0
- package/dist/utils/translate-from-center.d.ts.map +1 -0
- package/dist/utils/translate-from-center.js +4 -4
- package/dist/utils/types.d.ts +1 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/utils.d.ts +5 -4
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +4 -4
- package/package.json +11 -10
- package/src/edit-modes/delete-mode.ts +28 -0
- package/src/edit-modes/draw-circle-by-diameter-mode.ts +4 -0
- package/src/edit-modes/draw-circle-from-center-mode.ts +4 -0
- package/src/edit-modes/draw-ellipse-by-bounding-box-mode.ts +10 -1
- package/src/edit-modes/draw-ellipse-using-three-points-mode.ts +11 -1
- package/src/edit-modes/extend-line-string-mode.ts +4 -0
- package/src/edit-modes/extrude-mode.ts +6 -1
- package/src/edit-modes/geojson-edit-mode.ts +9 -4
- package/src/edit-modes/measure-distance-mode.ts +1 -1
- package/src/edit-modes/modify-mode.ts +6 -1
- package/src/edit-modes/resize-circle-mode.ts +1 -0
- package/src/edit-modes/rotate-mode.ts +2 -1
- package/src/edit-modes/scale-mode.ts +2 -1
- package/src/edit-modes/split-polygon-mode.ts +4 -2
- package/src/edit-modes/three-click-polygon-mode.ts +7 -1
- package/src/edit-modes/transform-mode.ts +4 -0
- package/src/edit-modes/translate-mode.ts +4 -2
- package/src/edit-modes/two-click-polygon-mode.ts +3 -4
- package/src/edit-modes/types.ts +1 -0
- package/src/edit-modes/utils.ts +10 -3
- package/src/editable-layers/editable-geojson-layer.ts +6 -4
- package/src/editable-layers/editable-h3-cluster-layer.ts +1 -1
- package/src/editable-layers/editable-layer.ts +12 -4
- package/src/editable-layers/editable-path-layer.ts +29 -15
- package/src/editable-layers/junction-scatterplot-layer.ts +4 -2
- package/src/editable-layers/selection-layer.ts +2 -1
- package/src/index.ts +2 -0
- package/src/mode-handlers/split-polygon-handler.ts +2 -1
- package/src/shaderlib/color/color.ts +34 -20
- package/src/utils/translate-from-center.ts +5 -5
- package/src/utils/utils.ts +4 -4
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
} from './types';
|
|
12
12
|
import {Position, Polygon, FeatureOf, FeatureCollection} from '../utils/geojson-types';
|
|
13
13
|
import {GeoJsonEditMode} from './geojson-edit-mode';
|
|
14
|
+
import {omit} from 'lodash';
|
|
14
15
|
|
|
15
16
|
export class ThreeClickPolygonMode extends GeoJsonEditMode {
|
|
16
17
|
handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {
|
|
@@ -23,7 +24,11 @@ export class ThreeClickPolygonMode extends GeoJsonEditMode {
|
|
|
23
24
|
tentativeFeature &&
|
|
24
25
|
tentativeFeature.geometry.type === 'Polygon'
|
|
25
26
|
) {
|
|
26
|
-
const editAction = this.getAddFeatureOrBooleanPolygonAction(
|
|
27
|
+
const editAction = this.getAddFeatureOrBooleanPolygonAction(
|
|
28
|
+
tentativeFeature.geometry,
|
|
29
|
+
props,
|
|
30
|
+
omit(tentativeFeature.properties, 'guideType')
|
|
31
|
+
);
|
|
27
32
|
this.resetClickSequence();
|
|
28
33
|
|
|
29
34
|
if (editAction) {
|
|
@@ -70,6 +75,7 @@ export class ThreeClickPolygonMode extends GeoJsonEditMode {
|
|
|
70
75
|
guides.features.push({
|
|
71
76
|
type: 'Feature',
|
|
72
77
|
properties: {
|
|
78
|
+
...polygon.properties,
|
|
73
79
|
guideType: 'tentative'
|
|
74
80
|
},
|
|
75
81
|
geometry: polygon.geometry
|
|
@@ -33,6 +33,10 @@ export class TransformMode extends CompositeMode {
|
|
|
33
33
|
let translateMode: TranslateMode | null = null;
|
|
34
34
|
const filteredModes: GeoJsonEditMode[] = [];
|
|
35
35
|
|
|
36
|
+
if (event.picks.length) {
|
|
37
|
+
event.cancelPan();
|
|
38
|
+
}
|
|
39
|
+
|
|
36
40
|
// If the user selects a scaling edit handle that overlaps with part of the selected feature,
|
|
37
41
|
// it is possible for both scale and translate actions to be triggered. This logic prevents
|
|
38
42
|
// this simultaneous action trigger from happening by putting a higher priority on scaling
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
import turfBearing from '@turf/bearing';
|
|
6
6
|
import turfDistance from '@turf/distance';
|
|
7
7
|
import clone from '@turf/clone';
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
8
|
+
import type {Feature as TurfFeature, Geometry as TurfGeometry} from '@turf/helpers';
|
|
9
|
+
import {point} from '@turf/helpers';
|
|
10
|
+
import {WebMercatorViewport} from 'viewport-mercator-project';
|
|
10
11
|
import {FeatureCollection, Position, Geometry} from '../utils/geojson-types';
|
|
11
12
|
import {
|
|
12
13
|
PointerMoveEvent,
|
|
@@ -59,6 +60,7 @@ export class TranslateMode extends GeoJsonEditMode {
|
|
|
59
60
|
return;
|
|
60
61
|
}
|
|
61
62
|
|
|
63
|
+
event.cancelPan();
|
|
62
64
|
this._geometryBeforeTranslate = this.getSelectedFeaturesAsFeatureCollection(props);
|
|
63
65
|
}
|
|
64
66
|
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
} from './types';
|
|
14
14
|
import {Polygon, FeatureCollection, FeatureOf, Position} from '../utils/geojson-types';
|
|
15
15
|
import {GeoJsonEditMode} from './geojson-edit-mode';
|
|
16
|
+
import {omit} from 'lodash';
|
|
16
17
|
|
|
17
18
|
export class TwoClickPolygonMode extends GeoJsonEditMode {
|
|
18
19
|
handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>) {
|
|
@@ -57,9 +58,7 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
|
|
|
57
58
|
) {
|
|
58
59
|
const feature: FeatureOf<Polygon> = {
|
|
59
60
|
type: 'Feature',
|
|
60
|
-
properties:
|
|
61
|
-
shape: tentativeFeature.properties.shape
|
|
62
|
-
},
|
|
61
|
+
properties: omit(tentativeFeature.properties, 'guideType'),
|
|
63
62
|
geometry: {
|
|
64
63
|
type: 'Polygon',
|
|
65
64
|
coordinates: tentativeFeature.geometry.coordinates
|
|
@@ -97,7 +96,7 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
|
|
|
97
96
|
guides.features.push({
|
|
98
97
|
type: 'Feature',
|
|
99
98
|
properties: {
|
|
100
|
-
|
|
99
|
+
...polygon.properties,
|
|
101
100
|
guideType: 'tentative'
|
|
102
101
|
},
|
|
103
102
|
geometry: polygon.geometry
|
package/src/edit-modes/types.ts
CHANGED
package/src/edit-modes/utils.ts
CHANGED
|
@@ -2,14 +2,17 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
+
/* eslint-disable no-shadow */
|
|
6
|
+
|
|
5
7
|
import destination from '@turf/destination';
|
|
6
8
|
import bearing from '@turf/bearing';
|
|
7
9
|
import pointToLineDistance from '@turf/point-to-line-distance';
|
|
8
10
|
import {flattenEach} from '@turf/meta';
|
|
9
|
-
import {
|
|
11
|
+
import type {MultiLineString} from '@turf/helpers';
|
|
12
|
+
import {point} from '@turf/helpers';
|
|
10
13
|
import {getCoords} from '@turf/invariant';
|
|
11
|
-
import WebMercatorViewport from 'viewport-mercator-project';
|
|
12
|
-
import {Viewport, Pick, EditHandleFeature, EditHandleType} from './types';
|
|
14
|
+
import {WebMercatorViewport} from 'viewport-mercator-project';
|
|
15
|
+
import {Viewport, Pick, EditHandleFeature, EditHandleType, StartDraggingEvent} from './types';
|
|
13
16
|
import {
|
|
14
17
|
Geometry,
|
|
15
18
|
Position,
|
|
@@ -514,3 +517,7 @@ export function mapCoords(
|
|
|
514
517
|
})
|
|
515
518
|
.filter(Boolean);
|
|
516
519
|
}
|
|
520
|
+
|
|
521
|
+
export function shouldCancelPan(event: StartDraggingEvent) {
|
|
522
|
+
return event.picks.length && event.picks.find((p) => p.featureType === 'points');
|
|
523
|
+
}
|
|
@@ -40,6 +40,7 @@ import {Draw90DegreePolygonMode} from '../edit-modes/draw-90degree-polygon-mode'
|
|
|
40
40
|
import {DrawPolygonByDraggingMode} from '../edit-modes/draw-polygon-by-dragging-mode';
|
|
41
41
|
import {SnappableMode} from '../edit-modes/snappable-mode';
|
|
42
42
|
import {TransformMode} from '../edit-modes/transform-mode';
|
|
43
|
+
import {DeleteMode} from '../edit-modes/delete-mode';
|
|
43
44
|
import {GeoJsonEditModeType} from '../edit-modes/geojson-edit-mode';
|
|
44
45
|
|
|
45
46
|
import {Color} from '../utils/types';
|
|
@@ -112,7 +113,7 @@ function getEditHandleRadius(handle) {
|
|
|
112
113
|
}
|
|
113
114
|
}
|
|
114
115
|
|
|
115
|
-
export type
|
|
116
|
+
export type EditableGeoJsonLayerProps<DataT = any> = EditableLayerProps & {
|
|
116
117
|
data: DataT;
|
|
117
118
|
mode?: any;
|
|
118
119
|
modeConfig?: any;
|
|
@@ -172,7 +173,7 @@ export type EditableGeojsonLayerProps<DataT = any> = EditableLayerProps & {
|
|
|
172
173
|
billboard?: boolean;
|
|
173
174
|
};
|
|
174
175
|
|
|
175
|
-
const defaultProps: DefaultProps<
|
|
176
|
+
const defaultProps: DefaultProps<EditableGeoJsonLayerProps<any>> = {
|
|
176
177
|
mode: DEFAULT_EDIT_MODE,
|
|
177
178
|
|
|
178
179
|
// Edit and interaction events
|
|
@@ -250,6 +251,7 @@ const modeNameMapping = {
|
|
|
250
251
|
split: SplitPolygonMode,
|
|
251
252
|
extrude: ExtrudeMode,
|
|
252
253
|
elevation: ElevationMode,
|
|
254
|
+
delete: DeleteMode,
|
|
253
255
|
|
|
254
256
|
// Draw modes
|
|
255
257
|
drawPoint: DrawPointMode,
|
|
@@ -270,7 +272,7 @@ const modeNameMapping = {
|
|
|
270
272
|
|
|
271
273
|
export class EditableGeoJsonLayer extends EditableLayer<
|
|
272
274
|
FeatureCollection,
|
|
273
|
-
|
|
275
|
+
EditableGeoJsonLayerProps<FeatureCollection>
|
|
274
276
|
> {
|
|
275
277
|
static layerName = 'EditableGeoJsonLayer';
|
|
276
278
|
static defaultProps = defaultProps;
|
|
@@ -411,7 +413,7 @@ export class EditableGeoJsonLayer extends EditableLayer<
|
|
|
411
413
|
this.setState({selectedFeatures});
|
|
412
414
|
}
|
|
413
415
|
|
|
414
|
-
getModeProps(props:
|
|
416
|
+
getModeProps(props: EditableGeoJsonLayerProps<any>) {
|
|
415
417
|
return {
|
|
416
418
|
modeConfig: props.modeConfig,
|
|
417
419
|
data: props.data,
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
/* eslint-env browser */
|
|
6
6
|
|
|
7
|
+
import type {DefaultProps} from '@deck.gl/core';
|
|
7
8
|
import {H3ClusterLayer} from '@deck.gl/geo-layers';
|
|
8
|
-
import {DefaultProps} from '@deck.gl/core';
|
|
9
9
|
// TODO: Fix H3 support.
|
|
10
10
|
// import { polyfill, geoToH3 } from 'h3-js';
|
|
11
11
|
import {PROJECTED_PIXEL_SIZE_MULTIPLIER} from '../constants';
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
/* eslint-env browser */
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import type {CompositeLayerProps} from '@deck.gl/core';
|
|
8
|
+
import {CompositeLayer} from '@deck.gl/core';
|
|
8
9
|
import {
|
|
9
10
|
DraggingEvent,
|
|
10
11
|
ClickEvent,
|
|
@@ -14,12 +15,13 @@ import {
|
|
|
14
15
|
} from '../edit-modes/types';
|
|
15
16
|
import {Position} from '../utils/geojson-types';
|
|
16
17
|
|
|
17
|
-
const EVENT_TYPES = ['
|
|
18
|
+
const EVENT_TYPES = ['click', 'pointermove', 'panstart', 'panmove', 'panend', 'keyup'];
|
|
18
19
|
|
|
19
20
|
// TODO(v9): remove generic layer
|
|
20
21
|
export type EditableLayerProps<DataType = any> = CompositeLayerProps & {
|
|
21
22
|
pickingRadius?: number;
|
|
22
23
|
pickingDepth?: number;
|
|
24
|
+
onCancelPan?: () => void;
|
|
23
25
|
};
|
|
24
26
|
|
|
25
27
|
export abstract class EditableLayer<
|
|
@@ -116,7 +118,7 @@ export abstract class EditableLayer<
|
|
|
116
118
|
func(event);
|
|
117
119
|
}
|
|
118
120
|
|
|
119
|
-
|
|
121
|
+
_onclick({srcEvent}: any) {
|
|
120
122
|
const screenCoords = this.getScreenCoords(srcEvent) as [number, number];
|
|
121
123
|
const mapCoords = this.getMapCoords(screenCoords);
|
|
122
124
|
|
|
@@ -154,7 +156,13 @@ export abstract class EditableLayer<
|
|
|
154
156
|
mapCoords,
|
|
155
157
|
pointerDownScreenCoords: screenCoords,
|
|
156
158
|
pointerDownMapCoords: mapCoords,
|
|
157
|
-
cancelPan:
|
|
159
|
+
cancelPan: () => {
|
|
160
|
+
if (this.props.onCancelPan) {
|
|
161
|
+
this.props.onCancelPan();
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
event.stopImmediatePropagation();
|
|
165
|
+
},
|
|
158
166
|
sourceEvent: event.srcEvent
|
|
159
167
|
});
|
|
160
168
|
}
|
|
@@ -2,10 +2,31 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import type {PathLayerProps} from '@deck.gl/layers';
|
|
6
|
+
import {PathLayer} from '@deck.gl/layers';
|
|
7
|
+
import type {ShaderModule} from '@luma.gl/shadertools';
|
|
6
8
|
|
|
7
9
|
import {insertBefore} from '../utils/utils';
|
|
8
10
|
|
|
11
|
+
const uniformBlock = `\
|
|
12
|
+
uniform pickingLineWidthUniforms {
|
|
13
|
+
float extraPixels;
|
|
14
|
+
} pickingLineWidth;
|
|
15
|
+
`;
|
|
16
|
+
|
|
17
|
+
export type PickingLineWidthProps = {
|
|
18
|
+
extraPixels: number;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const pickingUniforms = {
|
|
22
|
+
name: 'pickingLineWidth',
|
|
23
|
+
vs: uniformBlock,
|
|
24
|
+
fs: uniformBlock,
|
|
25
|
+
uniformTypes: {
|
|
26
|
+
extraPixels: 'f32'
|
|
27
|
+
}
|
|
28
|
+
} as const satisfies ShaderModule<PickingLineWidthProps>;
|
|
29
|
+
|
|
9
30
|
interface EditablePathLayerProps extends PathLayerProps<any> {
|
|
10
31
|
pickingLineWidthExtraPixels?: number;
|
|
11
32
|
}
|
|
@@ -24,30 +45,23 @@ export class EditablePathLayer extends PathLayer<any, EditablePathLayerProps> {
|
|
|
24
45
|
'vec3 width;',
|
|
25
46
|
`
|
|
26
47
|
if(bool(picking.isActive)){
|
|
27
|
-
widthPixels.xy +=
|
|
48
|
+
widthPixels.xy += pickingLineWidth.extraPixels;
|
|
28
49
|
}
|
|
29
50
|
`
|
|
30
51
|
);
|
|
31
52
|
|
|
32
53
|
return {
|
|
33
54
|
...shaders,
|
|
34
|
-
|
|
35
|
-
...(shaders.inject || {}),
|
|
36
|
-
'vs:#decl': (shaders.inject?.['vs:#decl'] || '').concat(
|
|
37
|
-
'uniform float pickingLineWidthExtraPixels;'
|
|
38
|
-
)
|
|
39
|
-
}
|
|
55
|
+
modules: [...shaders.modules, pickingUniforms]
|
|
40
56
|
};
|
|
41
57
|
}
|
|
42
58
|
|
|
43
59
|
draw(props) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
});
|
|
60
|
+
const {pickingLineWidthExtraPixels} = this.props;
|
|
61
|
+
const pickingProps: PickingLineWidthProps = {extraPixels: pickingLineWidthExtraPixels};
|
|
62
|
+
const model = this.state.model;
|
|
63
|
+
model.shaderInputs.setProps({pickingLineWidth: pickingProps});
|
|
64
|
+
super.draw(props);
|
|
51
65
|
}
|
|
52
66
|
}
|
|
53
67
|
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import type {CompositeLayerProps, DefaultProps} from '@deck.gl/core';
|
|
6
|
+
import {CompositeLayer} from '@deck.gl/core';
|
|
7
|
+
import type {ScatterplotLayerProps} from '@deck.gl/layers';
|
|
8
|
+
import {ScatterplotLayer} from '@deck.gl/layers';
|
|
7
9
|
|
|
8
10
|
import {Color} from '../utils/types';
|
|
9
11
|
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
/* eslint-env browser */
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import type {CompositeLayerProps, DefaultProps} from '@deck.gl/core';
|
|
8
|
+
import {CompositeLayer} from '@deck.gl/core';
|
|
8
9
|
import {PolygonLayer} from '@deck.gl/layers';
|
|
9
10
|
import {polygon} from '@turf/helpers';
|
|
10
11
|
import turfBuffer from '@turf/buffer';
|
package/src/index.ts
CHANGED
|
@@ -44,6 +44,8 @@ export type {EditMode} from './edit-modes/edit-mode';
|
|
|
44
44
|
export type {GeoJsonEditModeType} from './edit-modes/geojson-edit-mode';
|
|
45
45
|
export type {GeoJsonEditModeConstructor} from './edit-modes/geojson-edit-mode';
|
|
46
46
|
|
|
47
|
+
export type {EditableGeoJsonLayerProps} from './editable-layers/editable-geojson-layer';
|
|
48
|
+
|
|
47
49
|
export {GeoJsonEditMode} from './edit-modes/geojson-edit-mode';
|
|
48
50
|
|
|
49
51
|
// Alter modes
|
|
@@ -11,7 +11,8 @@ import turfBearing from '@turf/bearing';
|
|
|
11
11
|
import turfDistance from '@turf/distance';
|
|
12
12
|
import turfDestination from '@turf/destination';
|
|
13
13
|
import turfPolygonToLine from '@turf/polygon-to-line';
|
|
14
|
-
import
|
|
14
|
+
import type {NearestPointOnLine} from '@turf/nearest-point-on-line';
|
|
15
|
+
import nearestPointOnLine from '@turf/nearest-point-on-line';
|
|
15
16
|
import {generatePointsParallelToLinePoints} from '../utils/utils';
|
|
16
17
|
import {EditAction, ModeHandler} from './mode-handler';
|
|
17
18
|
import {ClickEvent, PointerMoveEvent} from '../edit-modes/types';
|
|
@@ -4,19 +4,28 @@
|
|
|
4
4
|
|
|
5
5
|
import type {ShaderModule} from '@luma.gl/shadertools';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
const uniformBlock = `\
|
|
8
|
+
uniform colorUniforms {
|
|
9
|
+
float opacity;
|
|
10
|
+
float desaturate;
|
|
11
|
+
float brightness;
|
|
12
|
+
} color;
|
|
13
|
+
`;
|
|
14
|
+
|
|
15
|
+
export type ColorProps = {
|
|
16
|
+
opacity: number;
|
|
17
|
+
desaturate: number;
|
|
18
|
+
brightness: number;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const INITIAL_STATE: ColorProps = {
|
|
22
|
+
opacity: 1.0,
|
|
23
|
+
desaturate: 0.0,
|
|
24
|
+
brightness: 1.0
|
|
12
25
|
};
|
|
13
26
|
|
|
14
27
|
function getUniforms(opts = INITIAL_STATE) {
|
|
15
|
-
|
|
16
|
-
if (opts.opacity) {
|
|
17
|
-
uniforms.color_uOpacity = opts.opacity;
|
|
18
|
-
}
|
|
19
|
-
return uniforms;
|
|
28
|
+
return opts;
|
|
20
29
|
}
|
|
21
30
|
|
|
22
31
|
const vs = `\
|
|
@@ -28,9 +37,7 @@ color_setColor(vec4 color) {
|
|
|
28
37
|
`;
|
|
29
38
|
|
|
30
39
|
const fs = `\
|
|
31
|
-
|
|
32
|
-
uniform float color_uDesaturate;
|
|
33
|
-
uniform float color_uBrightness;
|
|
40
|
+
${uniformBlock}
|
|
34
41
|
|
|
35
42
|
in vec4 color_vColor;
|
|
36
43
|
|
|
@@ -40,14 +47,16 @@ vec4 color_getColor() {
|
|
|
40
47
|
return color_vColor;
|
|
41
48
|
}
|
|
42
49
|
|
|
43
|
-
vec4 color_filterColor(vec4
|
|
50
|
+
vec4 color_filterColor(vec4 inputColor) {
|
|
51
|
+
vec4 color = inputColor;
|
|
44
52
|
// apply desaturation and brightness
|
|
45
|
-
if (
|
|
46
|
-
float luminance = (color.r + color.g + color.b) * 0.333333333 +
|
|
47
|
-
color = vec4(mix(color.rgb, vec3(luminance),
|
|
53
|
+
if (color.desaturate > 0.01) {
|
|
54
|
+
float luminance = (color.r + color.g + color.b) * 0.333333333 + color.brightness;
|
|
55
|
+
color = vec4(mix(color.rgb, vec3(luminance), color.desaturate), color.a);
|
|
56
|
+
}
|
|
48
57
|
|
|
49
58
|
// Apply opacity
|
|
50
|
-
color = vec4(color.rgb, color.a *
|
|
59
|
+
color = vec4(color.rgb, color.a * color.opacity);
|
|
51
60
|
return color;
|
|
52
61
|
}
|
|
53
62
|
`;
|
|
@@ -57,5 +66,10 @@ export const color = {
|
|
|
57
66
|
name: 'color',
|
|
58
67
|
vs,
|
|
59
68
|
fs,
|
|
60
|
-
getUniforms
|
|
61
|
-
|
|
69
|
+
getUniforms,
|
|
70
|
+
uniformTypes: {
|
|
71
|
+
opacity: 'f32',
|
|
72
|
+
desaturate: 'f32',
|
|
73
|
+
brightness: 'f32'
|
|
74
|
+
}
|
|
75
|
+
} as const satisfies ShaderModule<ColorProps>;
|
|
@@ -12,7 +12,7 @@ import type {
|
|
|
12
12
|
Geometry as TurfGeometry
|
|
13
13
|
} from '@turf/helpers';
|
|
14
14
|
import {mapCoords} from '../edit-modes/utils';
|
|
15
|
-
import type {AnyCoordinates, Position} from './geojson-types';
|
|
15
|
+
import type {AnyCoordinates /* , Position */} from './geojson-types';
|
|
16
16
|
|
|
17
17
|
// This function takes feature's center, moves it,
|
|
18
18
|
// and builds new feature around it keeping the proportions
|
|
@@ -28,19 +28,19 @@ export function translateFromCenter(
|
|
|
28
28
|
const movedCoordinates = mapCoords(
|
|
29
29
|
feature.geometry.coordinates as AnyCoordinates,
|
|
30
30
|
(coordinate) => {
|
|
31
|
-
const
|
|
31
|
+
const rhumbDistance = turfRhumbDistance(
|
|
32
32
|
initialCenterPoint.geometry.coordinates,
|
|
33
33
|
coordinate as TurfPosition
|
|
34
34
|
);
|
|
35
|
-
const
|
|
35
|
+
const rhumbDirection = turfRhumbBearing(
|
|
36
36
|
initialCenterPoint.geometry.coordinates,
|
|
37
37
|
coordinate as TurfPosition
|
|
38
38
|
);
|
|
39
39
|
|
|
40
40
|
const movedPosition = turfRhumbDestination(
|
|
41
41
|
movedCenterPoint.geometry.coordinates,
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
rhumbDistance,
|
|
43
|
+
rhumbDirection
|
|
44
44
|
).geometry.coordinates;
|
|
45
45
|
return movedPosition;
|
|
46
46
|
}
|
package/src/utils/utils.ts
CHANGED
|
@@ -6,7 +6,7 @@ import destination from '@turf/destination';
|
|
|
6
6
|
import bearing from '@turf/bearing';
|
|
7
7
|
import pointToLineDistance from '@turf/point-to-line-distance';
|
|
8
8
|
import {point} from '@turf/helpers';
|
|
9
|
-
import WebMercatorViewport from 'viewport-mercator-project';
|
|
9
|
+
import {WebMercatorViewport} from 'viewport-mercator-project';
|
|
10
10
|
import {FeatureOf, FeatureWithProps, LineString, Point, Position} from './geojson-types';
|
|
11
11
|
import {Viewport} from './types';
|
|
12
12
|
|
|
@@ -175,12 +175,12 @@ export function nearestPointOnProjectedLine(
|
|
|
175
175
|
/**
|
|
176
176
|
* Inserts toInsert string into base string before insertBefore string.
|
|
177
177
|
* @param base A string to insert into.
|
|
178
|
-
* @param
|
|
178
|
+
* @param insertBeforeText A sub string in `base` string to insert before.
|
|
179
179
|
* @param toInsert A string to insert.
|
|
180
180
|
* @returns Combined string. `base` string if `insertBefore` string isn't found.
|
|
181
181
|
*/
|
|
182
|
-
export function insertBefore(base: string,
|
|
183
|
-
const at = base.indexOf(
|
|
182
|
+
export function insertBefore(base: string, insertBeforeText: string, toInsert: string): string {
|
|
183
|
+
const at = base.indexOf(insertBeforeText);
|
|
184
184
|
if (at < 0) {
|
|
185
185
|
return base;
|
|
186
186
|
}
|