@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.
- package/LICENSE +19 -0
- package/README.md +2 -81
- package/dist/constants.js +4 -1
- package/dist/edit-modes/composite-mode.d.ts +1 -1
- package/dist/edit-modes/composite-mode.js +4 -1
- package/dist/edit-modes/draw-90degree-polygon-mode.d.ts +1 -1
- package/dist/edit-modes/draw-90degree-polygon-mode.js +29 -24
- package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts +1 -1
- package/dist/edit-modes/draw-circle-by-diameter-mode.js +7 -4
- package/dist/edit-modes/draw-circle-from-center-mode.d.ts +1 -1
- package/dist/edit-modes/draw-circle-from-center-mode.js +7 -4
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts +1 -1
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.js +3 -0
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts +1 -1
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.js +3 -0
- package/dist/edit-modes/draw-line-string-mode.d.ts +1 -1
- package/dist/edit-modes/draw-line-string-mode.js +19 -16
- package/dist/edit-modes/draw-point-mode.d.ts +1 -1
- package/dist/edit-modes/draw-point-mode.js +7 -4
- package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts +1 -1
- package/dist/edit-modes/draw-polygon-by-dragging-mode.js +10 -5
- package/dist/edit-modes/draw-polygon-mode.d.ts +1 -1
- package/dist/edit-modes/draw-polygon-mode.js +20 -16
- package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts +1 -1
- package/dist/edit-modes/draw-rectangle-from-center-mode.js +3 -0
- package/dist/edit-modes/draw-rectangle-mode.d.ts +1 -1
- package/dist/edit-modes/draw-rectangle-mode.js +3 -0
- package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts +1 -1
- package/dist/edit-modes/draw-rectangle-using-three-points-mode.js +8 -5
- package/dist/edit-modes/draw-square-from-center-mode.d.ts +1 -1
- package/dist/edit-modes/draw-square-from-center-mode.js +3 -0
- package/dist/edit-modes/draw-square-mode.d.ts +1 -1
- package/dist/edit-modes/draw-square-mode.js +3 -0
- package/dist/edit-modes/duplicate-mode.d.ts +1 -1
- package/dist/edit-modes/duplicate-mode.js +3 -0
- package/dist/edit-modes/edit-mode.js +3 -1
- package/dist/edit-modes/elevation-mode.d.ts +2 -2
- package/dist/edit-modes/elevation-mode.js +8 -5
- package/dist/edit-modes/extend-line-string-mode.d.ts +1 -1
- package/dist/edit-modes/extend-line-string-mode.js +9 -6
- package/dist/edit-modes/extrude-mode.d.ts +1 -1
- package/dist/edit-modes/extrude-mode.js +10 -7
- package/dist/edit-modes/geojson-edit-mode.d.ts +1 -1
- package/dist/edit-modes/geojson-edit-mode.js +18 -15
- package/dist/edit-modes/immutable-feature-collection.d.ts +2 -1
- package/dist/edit-modes/immutable-feature-collection.js +25 -20
- package/dist/edit-modes/measure-angle-mode.d.ts +1 -1
- package/dist/edit-modes/measure-angle-mode.js +8 -8
- package/dist/edit-modes/measure-area-mode.d.ts +1 -1
- package/dist/edit-modes/measure-area-mode.js +7 -5
- package/dist/edit-modes/measure-distance-mode.d.ts +1 -1
- package/dist/edit-modes/measure-distance-mode.js +17 -14
- package/dist/edit-modes/modify-mode.d.ts +1 -1
- package/dist/edit-modes/modify-mode.js +17 -14
- package/dist/edit-modes/resize-circle-mode.d.ts +2 -2
- package/dist/edit-modes/resize-circle-mode.js +3 -1
- package/dist/edit-modes/rotate-mode.d.ts +1 -1
- package/dist/edit-modes/rotate-mode.js +8 -5
- package/dist/edit-modes/scale-mode.d.ts +1 -1
- package/dist/edit-modes/scale-mode.js +8 -5
- package/dist/edit-modes/snappable-mode.d.ts +1 -1
- package/dist/edit-modes/snappable-mode.js +8 -5
- package/dist/edit-modes/split-polygon-mode.d.ts +1 -1
- package/dist/edit-modes/split-polygon-mode.js +12 -9
- package/dist/edit-modes/three-click-polygon-mode.d.ts +1 -1
- package/dist/edit-modes/three-click-polygon-mode.js +9 -6
- package/dist/edit-modes/transform-mode.d.ts +1 -1
- package/dist/edit-modes/transform-mode.js +4 -1
- package/dist/edit-modes/translate-mode.d.ts +1 -1
- package/dist/edit-modes/translate-mode.js +7 -4
- package/dist/edit-modes/two-click-polygon-mode.d.ts +1 -1
- package/dist/edit-modes/two-click-polygon-mode.js +9 -6
- package/dist/edit-modes/types.d.ts +1 -1
- package/dist/edit-modes/types.js +3 -0
- package/dist/edit-modes/utils.d.ts +1 -1
- package/dist/edit-modes/utils.js +21 -19
- package/dist/edit-modes/view-mode.js +3 -0
- package/dist/editable-layers/editable-geojson-layer.d.ts +4 -4
- package/dist/editable-layers/editable-geojson-layer.js +27 -26
- package/dist/editable-layers/editable-h3-cluster-layer.d.ts +2 -2
- package/dist/editable-layers/editable-h3-cluster-layer.js +6 -3
- package/dist/editable-layers/editable-layer.d.ts +5 -5
- package/dist/editable-layers/editable-layer.js +18 -15
- package/dist/editable-layers/editable-path-layer.d.ts +1 -1
- package/dist/editable-layers/editable-path-layer.js +10 -7
- package/dist/editable-layers/elevated-edit-handle-layer.d.ts +1 -1
- package/dist/editable-layers/elevated-edit-handle-layer.js +6 -3
- package/dist/editable-layers/junction-scatterplot-layer.d.ts +2 -2
- package/dist/editable-layers/junction-scatterplot-layer.js +10 -7
- package/dist/editable-layers/selection-layer.d.ts +1 -1
- package/dist/editable-layers/selection-layer.js +5 -2
- package/dist/index.cjs +65 -537
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +19 -20
- package/dist/index.js +20 -18
- package/dist/lib/constants.js +3 -0
- package/dist/lib/deck-renderer/deck-cache.d.ts +1 -1
- package/dist/lib/deck-renderer/deck-cache.js +1 -1
- package/dist/lib/deck-renderer/deck-drawer.d.ts +2 -3
- package/dist/lib/deck-renderer/deck-drawer.js +12 -12
- package/dist/lib/feature.d.ts +4 -4
- package/dist/lib/feature.js +4 -1
- package/dist/lib/layer-mouse-event.d.ts +2 -2
- package/dist/lib/layer-mouse-event.js +4 -1
- package/dist/lib/layers/junctions-layer.d.ts +4 -4
- package/dist/lib/layers/junctions-layer.js +10 -7
- package/dist/lib/layers/segments-layer.d.ts +4 -4
- package/dist/lib/layers/segments-layer.js +11 -8
- package/dist/lib/layers/texts-layer.d.ts +3 -3
- package/dist/lib/layers/texts-layer.js +8 -5
- package/dist/lib/math.d.ts +1 -1
- package/dist/lib/math.js +3 -0
- package/dist/lib/{nebula.d.ts → nebula-core.d.ts} +2 -2
- package/dist/lib/{nebula.js → nebula-core.js} +7 -4
- package/dist/lib/nebula-layer.d.ts +2 -2
- package/dist/lib/nebula-layer.js +4 -1
- package/dist/lib/style.js +5 -2
- package/dist/mode-handlers/composite-mode-handler.d.ts +1 -1
- package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts +1 -1
- package/dist/mode-handlers/draw-90degree-polygon-handler.js +13 -10
- package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js +3 -0
- package/dist/mode-handlers/draw-circle-from-center-handler.js +3 -0
- package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js +3 -0
- package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js +5 -2
- package/dist/mode-handlers/draw-line-string-handler.js +7 -4
- package/dist/mode-handlers/draw-point-handler.js +4 -1
- package/dist/mode-handlers/draw-polygon-handler.d.ts +1 -1
- package/dist/mode-handlers/draw-polygon-handler.js +10 -7
- package/dist/mode-handlers/draw-rectangle-handler.js +3 -0
- package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js +11 -8
- package/dist/mode-handlers/duplicate-handler.js +3 -0
- package/dist/mode-handlers/elevation-handler.d.ts +2 -2
- package/dist/mode-handlers/elevation-handler.js +8 -5
- package/dist/mode-handlers/extrude-handler.js +10 -7
- package/dist/mode-handlers/mode-handler.d.ts +1 -1
- package/dist/mode-handlers/mode-handler.js +17 -14
- package/dist/mode-handlers/modify-handler.d.ts +2 -2
- package/dist/mode-handlers/modify-handler.js +18 -15
- package/dist/mode-handlers/rotate-handler.d.ts +1 -1
- package/dist/mode-handlers/rotate-handler.js +4 -1
- package/dist/mode-handlers/scale-handler.d.ts +1 -1
- package/dist/mode-handlers/scale-handler.js +5 -2
- package/dist/mode-handlers/snappable-handler.d.ts +1 -1
- package/dist/mode-handlers/snappable-handler.js +6 -3
- package/dist/mode-handlers/split-polygon-handler.js +11 -8
- package/dist/mode-handlers/three-click-polygon-handler.js +3 -0
- package/dist/mode-handlers/translate-handler.d.ts +1 -1
- package/dist/mode-handlers/translate-handler.js +4 -1
- package/dist/mode-handlers/two-click-polygon-handler.js +3 -0
- package/dist/mode-handlers/view-handler.d.ts +1 -1
- package/dist/mode-handlers/view-handler.js +3 -0
- package/dist/shaderlib/color/color.d.ts +7 -6
- package/dist/shaderlib/color/color.js +7 -4
- package/dist/shaderlib/utils/utils.d.ts +2 -2
- package/dist/shaderlib/utils/utils.js +5 -2
- package/dist/{curve-utils.js → utils/curve-utils.js} +7 -4
- package/dist/{geojson-types.d.ts → utils/geojson-types.d.ts} +2 -25
- package/dist/utils/geojson-types.js +4 -0
- package/dist/{memoize.d.ts → utils/memoize.d.ts} +1 -1
- package/dist/{memoize.js → utils/memoize.js} +4 -1
- package/dist/{translateFromCenter.js → utils/translate-from-center.js} +4 -1
- package/dist/utils/types.js +4 -0
- package/dist/{utils.js → utils/utils.js} +8 -6
- package/package.json +10 -10
- package/src/constants.ts +5 -1
- package/src/edit-modes/composite-mode.ts +9 -5
- package/src/edit-modes/draw-90degree-polygon-mode.ts +38 -34
- package/src/edit-modes/draw-circle-by-diameter-mode.ts +16 -12
- package/src/edit-modes/draw-circle-from-center-mode.ts +15 -11
- package/src/edit-modes/draw-ellipse-by-bounding-box-mode.ts +8 -4
- package/src/edit-modes/draw-ellipse-using-three-points-mode.ts +9 -5
- package/src/edit-modes/draw-line-string-mode.ts +29 -25
- package/src/edit-modes/draw-point-mode.ts +13 -9
- package/src/edit-modes/draw-polygon-by-dragging-mode.ts +16 -16
- package/src/edit-modes/draw-polygon-mode.ts +28 -23
- package/src/edit-modes/draw-rectangle-from-center-mode.ts +6 -2
- package/src/edit-modes/draw-rectangle-mode.ts +6 -2
- package/src/edit-modes/draw-rectangle-using-three-points-mode.ts +12 -8
- package/src/edit-modes/draw-square-from-center-mode.ts +7 -3
- package/src/edit-modes/draw-square-mode.ts +7 -3
- package/src/edit-modes/duplicate-mode.ts +7 -3
- package/src/edit-modes/edit-mode.ts +5 -1
- package/src/edit-modes/elevation-mode.ts +13 -9
- package/src/edit-modes/extend-line-string-mode.ts +16 -12
- package/src/edit-modes/extrude-mode.ts +22 -18
- package/src/edit-modes/geojson-edit-mode.ts +37 -33
- package/src/edit-modes/immutable-feature-collection.ts +28 -22
- package/src/edit-modes/measure-angle-mode.ts +66 -59
- package/src/edit-modes/measure-area-mode.ts +13 -10
- package/src/edit-modes/measure-distance-mode.ts +37 -33
- package/src/edit-modes/modify-mode.ts +36 -32
- package/src/edit-modes/resize-circle-mode.ts +8 -5
- package/src/edit-modes/rotate-mode.ts +22 -18
- package/src/edit-modes/scale-mode.ts +29 -23
- package/src/edit-modes/snappable-mode.ts +19 -15
- package/src/edit-modes/split-polygon-mode.ts +25 -21
- package/src/edit-modes/three-click-polygon-mode.ts +15 -11
- package/src/edit-modes/transform-mode.ts +15 -11
- package/src/edit-modes/translate-mode.ts +15 -11
- package/src/edit-modes/two-click-polygon-mode.ts +15 -11
- package/src/edit-modes/types.ts +5 -1
- package/src/edit-modes/utils.ts +33 -30
- package/src/edit-modes/view-mode.ts +5 -1
- package/src/editable-layers/editable-geojson-layer.ts +44 -41
- package/src/editable-layers/editable-h3-cluster-layer.ts +17 -14
- package/src/editable-layers/editable-layer.ts +42 -32
- package/src/editable-layers/editable-path-layer.ts +12 -8
- package/src/editable-layers/elevated-edit-handle-layer.ts +11 -7
- package/src/editable-layers/junction-scatterplot-layer.ts +15 -11
- package/src/editable-layers/selection-layer.ts +11 -7
- package/src/index.ts +68 -65
- package/src/lib/constants.ts +4 -0
- package/src/lib/deck-renderer/deck-cache.ts +1 -1
- package/src/lib/deck-renderer/deck-drawer.ts +28 -28
- package/src/lib/feature.ts +7 -3
- package/src/lib/layer-mouse-event.ts +7 -6
- package/src/lib/layers/junctions-layer.ts +14 -10
- package/src/lib/layers/segments-layer.ts +24 -20
- package/src/lib/layers/texts-layer.ts +18 -14
- package/src/lib/math.ts +5 -1
- package/src/lib/{nebula.ts → nebula-core.ts} +8 -4
- package/src/lib/nebula-layer.ts +9 -5
- package/src/lib/style.ts +6 -2
- package/src/mode-handlers/composite-mode-handler.ts +6 -6
- package/src/mode-handlers/draw-90degree-polygon-handler.ts +22 -18
- package/src/mode-handlers/draw-circle-by-bounding-box-handler.ts +10 -6
- package/src/mode-handlers/draw-circle-from-center-handler.ts +10 -6
- package/src/mode-handlers/draw-ellipse-by-bounding-box-handler.ts +9 -5
- package/src/mode-handlers/draw-ellipse-using-three-points-handler.ts +12 -8
- package/src/mode-handlers/draw-line-string-handler.ts +12 -8
- package/src/mode-handlers/draw-point-handler.ts +9 -5
- package/src/mode-handlers/draw-polygon-handler.ts +16 -12
- package/src/mode-handlers/draw-rectangle-handler.ts +8 -4
- package/src/mode-handlers/draw-rectangle-using-three-points-handler.ts +17 -13
- package/src/mode-handlers/duplicate-handler.ts +8 -4
- package/src/mode-handlers/elevation-handler.ts +14 -10
- package/src/mode-handlers/extrude-handler.ts +15 -11
- package/src/mode-handlers/mode-handler.ts +26 -28
- package/src/mode-handlers/modify-handler.ts +29 -25
- package/src/mode-handlers/rotate-handler.ts +13 -17
- package/src/mode-handlers/scale-handler.ts +13 -13
- package/src/mode-handlers/snappable-handler.ts +28 -24
- package/src/mode-handlers/split-polygon-handler.ts +22 -18
- package/src/mode-handlers/three-click-polygon-handler.ts +6 -2
- package/src/mode-handlers/translate-handler.ts +12 -8
- package/src/mode-handlers/two-click-polygon-handler.ts +6 -2
- package/src/mode-handlers/view-handler.ts +7 -3
- package/src/shaderlib/color/color.ts +10 -5
- package/src/shaderlib/utils/utils.ts +6 -2
- package/src/{curve-utils.ts → utils/curve-utils.ts} +11 -7
- package/src/{geojson-types.ts → utils/geojson-types.ts} +16 -31
- package/src/{memoize.ts → utils/memoize.ts} +5 -1
- package/src/{translateFromCenter.ts → utils/translate-from-center.ts} +8 -4
- package/src/{types.ts → utils/types.ts} +4 -0
- package/src/{utils.ts → utils/utils.ts} +14 -11
- package/dist/editable-layers/path-marker-layer/arrow-2d-geometry.d.ts +0 -4
- package/dist/editable-layers/path-marker-layer/arrow-2d-geometry.js +0 -55
- package/dist/editable-layers/path-marker-layer/create-path-markers.d.ts +0 -16
- package/dist/editable-layers/path-marker-layer/create-path-markers.js +0 -75
- package/dist/editable-layers/path-marker-layer/path-marker-layer.d.ts +0 -40
- package/dist/editable-layers/path-marker-layer/path-marker-layer.js +0 -121
- package/dist/editable-layers/path-marker-layer/polyline.d.ts +0 -18
- package/dist/editable-layers/path-marker-layer/polyline.js +0 -37
- package/dist/editable-layers/path-outline-layer/path-outline-layer.d.ts +0 -26
- package/dist/editable-layers/path-outline-layer/path-outline-layer.js +0 -106
- package/dist/geojson-types.js +0 -2
- package/dist/shaderlib/outline/outline.d.ts +0 -8
- package/dist/shaderlib/outline/outline.js +0 -97
- package/dist/types.js +0 -1
- package/src/editable-layers/path-marker-layer/arrow-2d-geometry.ts +0 -61
- package/src/editable-layers/path-marker-layer/create-path-markers.ts +0 -107
- package/src/editable-layers/path-marker-layer/path-marker-layer.ts +0 -179
- package/src/editable-layers/path-marker-layer/polyline.ts +0 -40
- package/src/editable-layers/path-outline-layer/path-outline-layer.ts +0 -147
- package/src/shaderlib/outline/outline.ts +0 -101
- /package/dist/{curve-utils.d.ts → utils/curve-utils.d.ts} +0 -0
- /package/dist/{translateFromCenter.d.ts → utils/translate-from-center.d.ts} +0 -0
- /package/dist/{types.d.ts → utils/types.d.ts} +0 -0
- /package/dist/{utils.d.ts → utils/utils.d.ts} +0 -0
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// deck.gl-community
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import booleanPointInPolygon from '@turf/boolean-point-in-polygon';
|
|
2
5
|
import turfDifference from '@turf/difference';
|
|
3
6
|
import turfBuffer from '@turf/buffer';
|
|
@@ -40,7 +43,7 @@ export class SplitPolygonMode extends GeoJsonEditMode {
|
|
|
40
43
|
const lastBearing = turfBearing(firstPoint, closestPoint);
|
|
41
44
|
const currentDistance = turfDistance(firstPoint, mapCoords, { units: 'meters' });
|
|
42
45
|
return turfDestination(firstPoint, currentDistance, lastBearing, {
|
|
43
|
-
units: 'meters'
|
|
46
|
+
units: 'meters'
|
|
44
47
|
}).geometry.coordinates;
|
|
45
48
|
}
|
|
46
49
|
return mapCoords;
|
|
@@ -57,7 +60,7 @@ export class SplitPolygonMode extends GeoJsonEditMode {
|
|
|
57
60
|
const clickSequence = this.getClickSequence();
|
|
58
61
|
const guides = {
|
|
59
62
|
type: 'FeatureCollection',
|
|
60
|
-
features: []
|
|
63
|
+
features: []
|
|
61
64
|
};
|
|
62
65
|
if (clickSequence.length === 0 || !props.lastPointerMoveEvent) {
|
|
63
66
|
// nothing to do yet
|
|
@@ -67,12 +70,12 @@ export class SplitPolygonMode extends GeoJsonEditMode {
|
|
|
67
70
|
guides.features.push({
|
|
68
71
|
type: 'Feature',
|
|
69
72
|
properties: {
|
|
70
|
-
guideType: 'tentative'
|
|
73
|
+
guideType: 'tentative'
|
|
71
74
|
},
|
|
72
75
|
geometry: {
|
|
73
76
|
type: 'LineString',
|
|
74
|
-
coordinates: [...clickSequence, this.calculateMapCoords(clickSequence, mapCoords, props)]
|
|
75
|
-
}
|
|
77
|
+
coordinates: [...clickSequence, this.calculateMapCoords(clickSequence, mapCoords, props)]
|
|
78
|
+
}
|
|
76
79
|
});
|
|
77
80
|
return guides;
|
|
78
81
|
}
|
|
@@ -93,7 +96,7 @@ export class SplitPolygonMode extends GeoJsonEditMode {
|
|
|
93
96
|
}
|
|
94
97
|
const pt = {
|
|
95
98
|
type: 'Point',
|
|
96
|
-
coordinates: clickSequence[clickSequence.length - 1]
|
|
99
|
+
coordinates: clickSequence[clickSequence.length - 1]
|
|
97
100
|
};
|
|
98
101
|
// @ts-expect-error turf types diff
|
|
99
102
|
const isPointInPolygon = booleanPointInPolygon(pt, selectedGeometry);
|
|
@@ -150,14 +153,14 @@ export class SplitPolygonMode extends GeoJsonEditMode {
|
|
|
150
153
|
// Update the type to Mulitpolygon
|
|
151
154
|
const updatedData = new ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, {
|
|
152
155
|
type: 'MultiPolygon',
|
|
153
|
-
coordinates: updatedCoordinates
|
|
156
|
+
coordinates: updatedCoordinates
|
|
154
157
|
});
|
|
155
158
|
const editAction = {
|
|
156
159
|
updatedData: updatedData.getObject(),
|
|
157
160
|
editType: 'split',
|
|
158
161
|
editContext: {
|
|
159
|
-
featureIndexes: [featureIndex]
|
|
160
|
-
}
|
|
162
|
+
featureIndexes: [featureIndex]
|
|
163
|
+
}
|
|
161
164
|
};
|
|
162
165
|
return editAction;
|
|
163
166
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ClickEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection, TentativeFeature } from './types';
|
|
2
|
-
import { Position, Polygon, FeatureOf, FeatureCollection } from '../geojson-types';
|
|
2
|
+
import { Position, Polygon, FeatureOf, FeatureCollection } from '../utils/geojson-types';
|
|
3
3
|
import { GeoJsonEditMode } from './geojson-edit-mode';
|
|
4
4
|
export declare class ThreeClickPolygonMode extends GeoJsonEditMode {
|
|
5
5
|
handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>): void;
|
|
@@ -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 ThreeClickPolygonMode extends GeoJsonEditMode {
|
|
3
6
|
handleClick(event, props) {
|
|
@@ -19,7 +22,7 @@ export class ThreeClickPolygonMode extends GeoJsonEditMode {
|
|
|
19
22
|
const clickSequence = this.getClickSequence();
|
|
20
23
|
const guides = {
|
|
21
24
|
type: 'FeatureCollection',
|
|
22
|
-
features: []
|
|
25
|
+
features: []
|
|
23
26
|
};
|
|
24
27
|
if (clickSequence.length === 0) {
|
|
25
28
|
// nothing to do yet
|
|
@@ -30,12 +33,12 @@ export class ThreeClickPolygonMode extends GeoJsonEditMode {
|
|
|
30
33
|
guides.features.push({
|
|
31
34
|
type: 'Feature',
|
|
32
35
|
properties: {
|
|
33
|
-
guideType: 'tentative'
|
|
36
|
+
guideType: 'tentative'
|
|
34
37
|
},
|
|
35
38
|
geometry: {
|
|
36
39
|
type: 'LineString',
|
|
37
|
-
coordinates: [clickSequence[0], hoveredCoord]
|
|
38
|
-
}
|
|
40
|
+
coordinates: [clickSequence[0], hoveredCoord]
|
|
41
|
+
}
|
|
39
42
|
});
|
|
40
43
|
}
|
|
41
44
|
else {
|
|
@@ -44,9 +47,9 @@ export class ThreeClickPolygonMode extends GeoJsonEditMode {
|
|
|
44
47
|
guides.features.push({
|
|
45
48
|
type: 'Feature',
|
|
46
49
|
properties: {
|
|
47
|
-
guideType: 'tentative'
|
|
50
|
+
guideType: 'tentative'
|
|
48
51
|
},
|
|
49
|
-
geometry: polygon.geometry
|
|
52
|
+
geometry: polygon.geometry
|
|
50
53
|
});
|
|
51
54
|
}
|
|
52
55
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PointerMoveEvent, ModeProps, StartDraggingEvent } from './types';
|
|
2
|
-
import { FeatureCollection } from '../geojson-types';
|
|
2
|
+
import { FeatureCollection } from '../utils/geojson-types';
|
|
3
3
|
import { CompositeMode } from './composite-mode';
|
|
4
4
|
export declare class TransformMode extends CompositeMode {
|
|
5
5
|
constructor();
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// deck.gl-community
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import { featureCollection } from '@turf/helpers';
|
|
2
5
|
import { TranslateMode } from './translate-mode';
|
|
3
6
|
import { ScaleMode } from './scale-mode';
|
|
@@ -13,7 +16,7 @@ export class TransformMode extends CompositeMode {
|
|
|
13
16
|
...props,
|
|
14
17
|
onUpdateCursor: (cursor) => {
|
|
15
18
|
updatedCursor = cursor || updatedCursor;
|
|
16
|
-
}
|
|
19
|
+
}
|
|
17
20
|
});
|
|
18
21
|
props.onUpdateCursor(updatedCursor);
|
|
19
22
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FeatureCollection, Position } from '../geojson-types';
|
|
1
|
+
import { FeatureCollection, Position } from '../utils/geojson-types';
|
|
2
2
|
import { PointerMoveEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, ModeProps } from './types';
|
|
3
3
|
import { GeoJsonEditMode, GeoJsonEditAction } from './geojson-edit-mode';
|
|
4
4
|
export declare class TranslateMode extends GeoJsonEditMode {
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
// deck.gl-community
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
import turfBearing from '@turf/bearing';
|
|
2
5
|
import turfDistance from '@turf/distance';
|
|
3
6
|
import clone from '@turf/clone';
|
|
4
7
|
import { point } from '@turf/helpers';
|
|
5
8
|
import WebMercatorViewport from 'viewport-mercator-project';
|
|
6
9
|
import { mapCoords } from './utils';
|
|
7
|
-
import { translateFromCenter } from '../
|
|
10
|
+
import { translateFromCenter } from '../utils/translate-from-center';
|
|
8
11
|
import { GeoJsonEditMode } from './geojson-edit-mode';
|
|
9
12
|
import { ImmutableFeatureCollection } from './immutable-feature-collection';
|
|
10
13
|
export class TranslateMode extends GeoJsonEditMode {
|
|
@@ -85,7 +88,7 @@ export class TranslateMode extends GeoJsonEditMode {
|
|
|
85
88
|
// @ts-expect-error turf types
|
|
86
89
|
updatedData = updatedData.replaceGeometry(selectedIndex, {
|
|
87
90
|
type: feature.geometry.type,
|
|
88
|
-
coordinates
|
|
91
|
+
coordinates
|
|
89
92
|
});
|
|
90
93
|
}
|
|
91
94
|
}
|
|
@@ -106,8 +109,8 @@ export class TranslateMode extends GeoJsonEditMode {
|
|
|
106
109
|
updatedData: updatedData.getObject(),
|
|
107
110
|
editType,
|
|
108
111
|
editContext: {
|
|
109
|
-
featureIndexes: selectedIndexes
|
|
110
|
-
}
|
|
112
|
+
featureIndexes: selectedIndexes
|
|
113
|
+
}
|
|
111
114
|
};
|
|
112
115
|
}
|
|
113
116
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ClickEvent, StartDraggingEvent, StopDraggingEvent, PointerMoveEvent, ModeProps, GuideFeatureCollection, TentativeFeature } from './types';
|
|
2
|
-
import { Polygon, FeatureCollection, FeatureOf, Position } from '../geojson-types';
|
|
2
|
+
import { Polygon, FeatureCollection, FeatureOf, Position } from '../utils/geojson-types';
|
|
3
3
|
import { GeoJsonEditMode } from './geojson-edit-mode';
|
|
4
4
|
export declare class TwoClickPolygonMode extends GeoJsonEditMode {
|
|
5
5
|
handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>): void;
|
|
@@ -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 TwoClickPolygonMode extends GeoJsonEditMode {
|
|
3
6
|
handleClick(event, props) {
|
|
@@ -33,12 +36,12 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
|
|
|
33
36
|
const feature = {
|
|
34
37
|
type: 'Feature',
|
|
35
38
|
properties: {
|
|
36
|
-
shape: tentativeFeature.properties.shape
|
|
39
|
+
shape: tentativeFeature.properties.shape
|
|
37
40
|
},
|
|
38
41
|
geometry: {
|
|
39
42
|
type: 'Polygon',
|
|
40
|
-
coordinates: tentativeFeature.geometry.coordinates
|
|
41
|
-
}
|
|
43
|
+
coordinates: tentativeFeature.geometry.coordinates
|
|
44
|
+
}
|
|
42
45
|
};
|
|
43
46
|
const editAction = this.getAddFeatureOrBooleanPolygonAction(feature, props);
|
|
44
47
|
this.resetClickSequence();
|
|
@@ -52,7 +55,7 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
|
|
|
52
55
|
const clickSequence = this.getClickSequence();
|
|
53
56
|
const guides = {
|
|
54
57
|
type: 'FeatureCollection',
|
|
55
|
-
features: []
|
|
58
|
+
features: []
|
|
56
59
|
};
|
|
57
60
|
if (clickSequence.length === 0 || !lastPointerMoveEvent) {
|
|
58
61
|
// nothing to do yet
|
|
@@ -66,9 +69,9 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
|
|
|
66
69
|
type: 'Feature',
|
|
67
70
|
properties: {
|
|
68
71
|
shape: polygon.properties && polygon.properties.shape,
|
|
69
|
-
guideType: 'tentative'
|
|
72
|
+
guideType: 'tentative'
|
|
70
73
|
},
|
|
71
|
-
geometry: polygon.geometry
|
|
74
|
+
geometry: polygon.geometry
|
|
72
75
|
});
|
|
73
76
|
}
|
|
74
77
|
return guides;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Position, Point, Geometry, FeatureWithProps } from '../geojson-types';
|
|
1
|
+
import { Position, Point, Geometry, FeatureWithProps } from '../utils/geojson-types';
|
|
2
2
|
export type ScreenCoordinates = [number, number];
|
|
3
3
|
export type EditAction<TData> = {
|
|
4
4
|
updatedData: TData;
|
package/dist/edit-modes/types.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MultiLineString } from '@turf/helpers';
|
|
2
2
|
import { Viewport, Pick, EditHandleFeature, EditHandleType } from './types';
|
|
3
|
-
import { Geometry, Position, Point, LineString, Polygon, FeatureOf, FeatureWithProps, AnyCoordinates } from '../geojson-types';
|
|
3
|
+
import { Geometry, Position, Point, LineString, Polygon, FeatureOf, FeatureWithProps, AnyCoordinates } from '../utils/geojson-types';
|
|
4
4
|
export type NearestPointType = FeatureWithProps<Point, {
|
|
5
5
|
dist: number;
|
|
6
6
|
index: number;
|
package/dist/edit-modes/utils.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
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 pointToLineDistance from '@turf/point-to-line-distance';
|
|
@@ -51,7 +54,7 @@ export function recursivelyTraverseNestedArrays(array, prefix, fn) {
|
|
|
51
54
|
export function generatePointsParallelToLinePoints(p1, p2, mapCoords) {
|
|
52
55
|
const lineString = {
|
|
53
56
|
type: 'LineString',
|
|
54
|
-
coordinates: [p1, p2]
|
|
57
|
+
coordinates: [p1, p2]
|
|
55
58
|
};
|
|
56
59
|
const pt = point(mapCoords);
|
|
57
60
|
const ddistance = pointToLineDistance(pt, lineString);
|
|
@@ -104,11 +107,11 @@ export function nearestPointOnProjectedLine(line, inPoint, viewport) {
|
|
|
104
107
|
minPointInfo = {
|
|
105
108
|
index,
|
|
106
109
|
x0: (B * (B * x - A * y) - A * C) / div,
|
|
107
|
-
y0: (A * (-B * x + A * y) - B * C) / div
|
|
110
|
+
y0: (A * (-B * x + A * y) - B * C) / div
|
|
108
111
|
};
|
|
109
112
|
}
|
|
110
113
|
});
|
|
111
|
-
// @ts-
|
|
114
|
+
// @ts-expect-error TODO
|
|
112
115
|
const { index, x0, y0 } = minPointInfo;
|
|
113
116
|
const [x1, y1, z1 = 0] = projectedCoords[index - 1];
|
|
114
117
|
const [x2, y2, z2 = 0] = projectedCoords[index];
|
|
@@ -121,14 +124,13 @@ export function nearestPointOnProjectedLine(line, inPoint, viewport) {
|
|
|
121
124
|
type: 'Feature',
|
|
122
125
|
geometry: {
|
|
123
126
|
type: 'Point',
|
|
124
|
-
|
|
125
|
-
coordinates: wmViewport.unproject([x0, y0, z0]),
|
|
127
|
+
coordinates: wmViewport.unproject([x0, y0, z0])
|
|
126
128
|
},
|
|
127
129
|
properties: {
|
|
128
130
|
// TODO: calculate the distance in proper units
|
|
129
131
|
dist: minDistance,
|
|
130
|
-
index: index - 1
|
|
131
|
-
}
|
|
132
|
+
index: index - 1
|
|
133
|
+
}
|
|
132
134
|
};
|
|
133
135
|
}
|
|
134
136
|
export function nearestPointOnLine(lines, inPoint, viewport) {
|
|
@@ -137,16 +139,16 @@ export function nearestPointOnLine(lines, inPoint, viewport) {
|
|
|
137
139
|
mercator = new WebMercatorViewport(viewport);
|
|
138
140
|
}
|
|
139
141
|
let closestPoint = point([Infinity, Infinity], {
|
|
140
|
-
dist: Infinity
|
|
142
|
+
dist: Infinity
|
|
141
143
|
});
|
|
142
144
|
if (!lines.geometry?.coordinates.length || lines.geometry?.coordinates.length < 2) {
|
|
143
145
|
return closestPoint;
|
|
144
146
|
}
|
|
145
|
-
// @ts-
|
|
147
|
+
// @ts-expect-error TODO
|
|
146
148
|
// eslint-disable-next-line max-statements, complexity
|
|
147
149
|
flattenEach(lines, (line) => {
|
|
148
150
|
const coords = getCoords(line);
|
|
149
|
-
// @ts-
|
|
151
|
+
// @ts-expect-error TODO
|
|
150
152
|
const pointCoords = getCoords(inPoint);
|
|
151
153
|
let minDist;
|
|
152
154
|
let to;
|
|
@@ -231,12 +233,12 @@ export function nearestPointOnLine(lines, inPoint, viewport) {
|
|
|
231
233
|
y: pixelToLatLong[1],
|
|
232
234
|
idx: segmentIdx - 1,
|
|
233
235
|
to,
|
|
234
|
-
from
|
|
236
|
+
from
|
|
235
237
|
};
|
|
236
238
|
}
|
|
237
239
|
closestPoint = point([snapPoint.x, snapPoint.y], {
|
|
238
240
|
dist: Math.abs(snapPoint.from - snapPoint.to),
|
|
239
|
-
index: snapPoint.idx
|
|
241
|
+
index: snapPoint.idx
|
|
240
242
|
});
|
|
241
243
|
});
|
|
242
244
|
return closestPoint;
|
|
@@ -280,13 +282,13 @@ export function getEditHandlesForGeometry(geometry, featureIndex, editHandleType
|
|
|
280
282
|
guideType: 'editHandle',
|
|
281
283
|
editHandleType,
|
|
282
284
|
positionIndexes: [],
|
|
283
|
-
featureIndex
|
|
285
|
+
featureIndex
|
|
284
286
|
},
|
|
285
287
|
geometry: {
|
|
286
288
|
type: 'Point',
|
|
287
|
-
coordinates: geometry.coordinates
|
|
288
|
-
}
|
|
289
|
-
}
|
|
289
|
+
coordinates: geometry.coordinates
|
|
290
|
+
}
|
|
291
|
+
}
|
|
290
292
|
];
|
|
291
293
|
break;
|
|
292
294
|
case 'MultiPoint':
|
|
@@ -330,12 +332,12 @@ function getEditHandlesForCoordinates(coordinates, positionIndexPrefix, featureI
|
|
|
330
332
|
guideType: 'editHandle',
|
|
331
333
|
positionIndexes: [...positionIndexPrefix, i],
|
|
332
334
|
featureIndex,
|
|
333
|
-
editHandleType
|
|
335
|
+
editHandleType
|
|
334
336
|
},
|
|
335
337
|
geometry: {
|
|
336
338
|
type: 'Point',
|
|
337
|
-
coordinates: position
|
|
338
|
-
}
|
|
339
|
+
coordinates: position
|
|
340
|
+
}
|
|
339
341
|
});
|
|
340
342
|
}
|
|
341
343
|
return editHandles;
|
|
@@ -2,9 +2,9 @@ import type { UpdateParameters, DefaultProps } from '@deck.gl/core';
|
|
|
2
2
|
import { GeoJsonLayer, TextLayer } from '@deck.gl/layers';
|
|
3
3
|
import { EditAction, ClickEvent, StartDraggingEvent, StopDraggingEvent, DraggingEvent, PointerMoveEvent } from '../edit-modes/types';
|
|
4
4
|
import { GeoJsonEditModeType } from '../edit-modes/geojson-edit-mode';
|
|
5
|
-
import { Color } from '../types';
|
|
6
|
-
import EditableLayer,
|
|
7
|
-
import { Feature, FeatureCollection } from '../geojson-types';
|
|
5
|
+
import { Color } from '../utils/types';
|
|
6
|
+
import { EditableLayer, EditableLayerProps } from './editable-layer';
|
|
7
|
+
import { Feature, FeatureCollection } from '../utils/geojson-types';
|
|
8
8
|
export type EditableGeojsonLayerProps<DataT = any> = EditableLayerProps & {
|
|
9
9
|
data: DataT;
|
|
10
10
|
mode?: any;
|
|
@@ -55,7 +55,7 @@ export type EditableGeojsonLayerProps<DataT = any> = EditableLayerProps & {
|
|
|
55
55
|
getEditHandleIconAngle?: number | ((handle: any) => number);
|
|
56
56
|
billboard?: boolean;
|
|
57
57
|
};
|
|
58
|
-
export
|
|
58
|
+
export declare class EditableGeoJsonLayer extends EditableLayer<FeatureCollection, EditableGeojsonLayerProps<FeatureCollection>> {
|
|
59
59
|
static layerName: string;
|
|
60
60
|
static defaultProps: DefaultProps<EditableGeojsonLayerProps<any>>;
|
|
61
61
|
state: EditableLayer['state'] & {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
// deck.gl-community
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
2
4
|
import { GeoJsonLayer, ScatterplotLayer, IconLayer, TextLayer } from '@deck.gl/layers';
|
|
3
5
|
import { ViewMode } from '../edit-modes/view-mode';
|
|
4
6
|
import { TranslateMode } from '../edit-modes/translate-mode';
|
|
@@ -26,8 +28,8 @@ import { DrawPolygonByDraggingMode } from '../edit-modes/draw-polygon-by-draggin
|
|
|
26
28
|
import { SnappableMode } from '../edit-modes/snappable-mode';
|
|
27
29
|
import { TransformMode } from '../edit-modes/transform-mode';
|
|
28
30
|
import { PROJECTED_PIXEL_SIZE_MULTIPLIER } from '../constants';
|
|
29
|
-
import EditableLayer from './editable-layer';
|
|
30
|
-
import EditablePathLayer from './editable-path-layer';
|
|
31
|
+
import { EditableLayer } from './editable-layer';
|
|
32
|
+
import { EditablePathLayer } from './editable-path-layer';
|
|
31
33
|
const DEFAULT_LINE_COLOR = [0x0, 0x0, 0x0, 0x99];
|
|
32
34
|
const DEFAULT_FILL_COLOR = [0x0, 0x0, 0x0, 0x90];
|
|
33
35
|
const DEFAULT_SELECTED_LINE_COLOR = [0x0, 0x0, 0x0, 0xff];
|
|
@@ -135,7 +137,7 @@ const defaultProps = {
|
|
|
135
137
|
getEditHandleIconColor: getEditHandleColor,
|
|
136
138
|
getEditHandleIconAngle: 0,
|
|
137
139
|
// misc
|
|
138
|
-
billboard: true
|
|
140
|
+
billboard: true
|
|
139
141
|
};
|
|
140
142
|
// Mapping of mode name to mode class (for legacy purposes)
|
|
141
143
|
const modeNameMapping = {
|
|
@@ -164,9 +166,9 @@ const modeNameMapping = {
|
|
|
164
166
|
drawRectangleUsing3Points: DrawRectangleUsingThreePointsMode,
|
|
165
167
|
drawEllipseUsing3Points: DrawEllipseUsingThreePointsMode,
|
|
166
168
|
draw90DegreePolygon: Draw90DegreePolygonMode,
|
|
167
|
-
drawPolygonByDragging: DrawPolygonByDraggingMode
|
|
169
|
+
drawPolygonByDragging: DrawPolygonByDraggingMode
|
|
168
170
|
};
|
|
169
|
-
export
|
|
171
|
+
export class EditableGeoJsonLayer extends EditableLayer {
|
|
170
172
|
static layerName = 'EditableGeoJsonLayer';
|
|
171
173
|
static defaultProps = defaultProps;
|
|
172
174
|
state = undefined;
|
|
@@ -198,8 +200,8 @@ export default class EditableGeoJsonLayer extends EditableLayer {
|
|
|
198
200
|
billboard: this.props.billboard,
|
|
199
201
|
updateTriggers: {
|
|
200
202
|
// required to update dashed array attribute
|
|
201
|
-
all: [this.props.selectedFeatureIndexes, this.props.mode]
|
|
202
|
-
}
|
|
203
|
+
all: [this.props.selectedFeatureIndexes, this.props.mode]
|
|
204
|
+
}
|
|
203
205
|
},
|
|
204
206
|
'polygons-stroke': {
|
|
205
207
|
billboard: this.props.billboard,
|
|
@@ -207,16 +209,16 @@ export default class EditableGeoJsonLayer extends EditableLayer {
|
|
|
207
209
|
type: EditablePathLayer,
|
|
208
210
|
updateTriggers: {
|
|
209
211
|
// required to update dashed array attribute
|
|
210
|
-
all: [this.props.selectedFeatureIndexes, this.props.mode]
|
|
211
|
-
}
|
|
212
|
-
}
|
|
212
|
+
all: [this.props.selectedFeatureIndexes, this.props.mode]
|
|
213
|
+
}
|
|
214
|
+
}
|
|
213
215
|
},
|
|
214
216
|
updateTriggers: {
|
|
215
217
|
getLineColor: [this.props.selectedFeatureIndexes, this.props.mode],
|
|
216
218
|
getFillColor: [this.props.selectedFeatureIndexes, this.props.mode],
|
|
217
219
|
getPointRadius: [this.props.selectedFeatureIndexes, this.props.mode],
|
|
218
|
-
getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode]
|
|
219
|
-
}
|
|
220
|
+
getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode]
|
|
221
|
+
}
|
|
220
222
|
});
|
|
221
223
|
let layers = [new GeoJsonLayer(subLayerProps)];
|
|
222
224
|
layers = layers.concat(this.createGuidesLayers(), this.createTooltipsLayers());
|
|
@@ -226,7 +228,7 @@ export default class EditableGeoJsonLayer extends EditableLayer {
|
|
|
226
228
|
super.initializeState();
|
|
227
229
|
this.setState({
|
|
228
230
|
selectedFeatures: [],
|
|
229
|
-
editHandles: []
|
|
231
|
+
editHandles: []
|
|
230
232
|
});
|
|
231
233
|
}
|
|
232
234
|
// TODO: is this the best way to properly update state from an outside event handler?
|
|
@@ -253,7 +255,7 @@ export default class EditableGeoJsonLayer extends EditableLayer {
|
|
|
253
255
|
// Lookup the mode based on its name (for backwards compatibility)
|
|
254
256
|
mode = modeNameMapping[props.mode];
|
|
255
257
|
// eslint-disable-next-line no-console
|
|
256
|
-
console.warn(
|
|
258
|
+
console.warn("Deprecated use of passing `mode` as a string. Pass the mode's class constructor instead.");
|
|
257
259
|
}
|
|
258
260
|
else {
|
|
259
261
|
// Should be an instance of EditMode in this case
|
|
@@ -275,7 +277,6 @@ export default class EditableGeoJsonLayer extends EditableLayer {
|
|
|
275
277
|
'features' in props.data) {
|
|
276
278
|
// TODO: needs improved testing, i.e. checking for duplicates, NaNs, out of range numbers, ...
|
|
277
279
|
const propsData = props.data;
|
|
278
|
-
// @ts-ignore error TS2339: Property 'features' does not exist on type 'never'
|
|
279
280
|
selectedFeatures = props.selectedFeatureIndexes.map((elem) => propsData.features[elem]);
|
|
280
281
|
}
|
|
281
282
|
this.setState({ selectedFeatures });
|
|
@@ -296,7 +297,7 @@ export default class EditableGeoJsonLayer extends EditableLayer {
|
|
|
296
297
|
},
|
|
297
298
|
onUpdateCursor: (cursor) => {
|
|
298
299
|
this.setState({ cursor });
|
|
299
|
-
}
|
|
300
|
+
}
|
|
300
301
|
};
|
|
301
302
|
}
|
|
302
303
|
selectionAwareAccessor(accessor) {
|
|
@@ -343,14 +344,14 @@ export default class EditableGeoJsonLayer extends EditableLayer {
|
|
|
343
344
|
const subLayerProps = {
|
|
344
345
|
linestrings: {
|
|
345
346
|
billboard: this.props.billboard,
|
|
346
|
-
autoHighlight: false
|
|
347
|
+
autoHighlight: false
|
|
347
348
|
},
|
|
348
349
|
'polygons-fill': {
|
|
349
|
-
autoHighlight: false
|
|
350
|
+
autoHighlight: false
|
|
350
351
|
},
|
|
351
352
|
'polygons-stroke': {
|
|
352
|
-
billboard: this.props.billboard
|
|
353
|
-
}
|
|
353
|
+
billboard: this.props.billboard
|
|
354
|
+
}
|
|
354
355
|
};
|
|
355
356
|
if (this.props.editHandleType === 'icon') {
|
|
356
357
|
subLayerProps['points-icon'] = {
|
|
@@ -363,7 +364,7 @@ export default class EditableGeoJsonLayer extends EditableLayer {
|
|
|
363
364
|
getSize: guideAccessor(this.props.getEditHandleIconSize),
|
|
364
365
|
getColor: guideAccessor(this.props.getEditHandleIconColor),
|
|
365
366
|
getAngle: guideAccessor(this.props.getEditHandleIconAngle),
|
|
366
|
-
billboard: this.props.billboard
|
|
367
|
+
billboard: this.props.billboard
|
|
367
368
|
};
|
|
368
369
|
}
|
|
369
370
|
else {
|
|
@@ -378,7 +379,7 @@ export default class EditableGeoJsonLayer extends EditableLayer {
|
|
|
378
379
|
getRadius: guideAccessor(this.props.getEditHandlePointRadius),
|
|
379
380
|
getFillColor: guideAccessor(this.props.getEditHandlePointColor),
|
|
380
381
|
getLineColor: guideAccessor(this.props.getEditHandlePointOutlineColor),
|
|
381
|
-
billboard: this.props.billboard
|
|
382
|
+
billboard: this.props.billboard
|
|
382
383
|
};
|
|
383
384
|
}
|
|
384
385
|
const layer = new GeoJsonLayer(this.getSubLayerProps({
|
|
@@ -397,7 +398,7 @@ export default class EditableGeoJsonLayer extends EditableLayer {
|
|
|
397
398
|
getLineWidth: guideAccessor(this.props.getTentativeLineWidth),
|
|
398
399
|
getFillColor: guideAccessor(this.props.getTentativeFillColor),
|
|
399
400
|
pointType: this.props.editHandleType === 'icon' ? 'icon' : 'circle',
|
|
400
|
-
iconAtlas: this.props.editHandleIconAtlas
|
|
401
|
+
iconAtlas: this.props.editHandleIconAtlas
|
|
401
402
|
}));
|
|
402
403
|
return [layer];
|
|
403
404
|
}
|
|
@@ -408,8 +409,8 @@ export default class EditableGeoJsonLayer extends EditableLayer {
|
|
|
408
409
|
getSize: DEFAULT_TOOLTIP_FONT_SIZE,
|
|
409
410
|
...this.getSubLayerProps({
|
|
410
411
|
id: 'tooltips',
|
|
411
|
-
data: tooltips
|
|
412
|
-
})
|
|
412
|
+
data: tooltips
|
|
413
|
+
})
|
|
413
414
|
});
|
|
414
415
|
return [layer];
|
|
415
416
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DefaultProps } from '@deck.gl/core';
|
|
2
|
-
import EditableLayer,
|
|
2
|
+
import { EditableLayer, EditableLayerProps } from './editable-layer';
|
|
3
3
|
export type EditableH3ClusterLayerProps<DataT> = EditableLayerProps & {
|
|
4
4
|
data: DataT;
|
|
5
5
|
resolution?: number;
|
|
@@ -16,7 +16,7 @@ export type EditableH3ClusterLayerProps<DataT> = EditableLayerProps & {
|
|
|
16
16
|
lineWidthMaxPixels?: number;
|
|
17
17
|
lineWidthUnits?: string;
|
|
18
18
|
};
|
|
19
|
-
export
|
|
19
|
+
export declare class EditableH3ClusterLayer extends EditableLayer<any, EditableH3ClusterLayerProps<any>> {
|
|
20
20
|
static layerName: string;
|
|
21
21
|
static defaultProps: DefaultProps<EditableH3ClusterLayerProps<any>>;
|
|
22
22
|
state: EditableLayer['state'] & {
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
// deck.gl-community
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
1
4
|
/* eslint-env browser */
|
|
2
5
|
import { H3ClusterLayer } from '@deck.gl/geo-layers';
|
|
3
6
|
// TODO: Fix H3 support.
|
|
4
7
|
// import { polyfill, geoToH3 } from 'h3-js';
|
|
5
8
|
import { PROJECTED_PIXEL_SIZE_MULTIPLIER } from '../constants';
|
|
6
|
-
import EditableGeoJsonLayer from './editable-geojson-layer';
|
|
7
|
-
import EditableLayer from './editable-layer';
|
|
9
|
+
import { EditableGeoJsonLayer } from './editable-geojson-layer';
|
|
10
|
+
import { EditableLayer } from './editable-layer';
|
|
8
11
|
import { ViewMode } from '../edit-modes/view-mode';
|
|
9
12
|
const DEFAULT_EDIT_MODE = ViewMode;
|
|
10
13
|
const DEFAULT_H3_RESOLUTION = 9;
|
|
@@ -38,7 +41,7 @@ const defaultProps = {
|
|
|
38
41
|
},
|
|
39
42
|
resolution: DEFAULT_H3_RESOLUTION
|
|
40
43
|
};
|
|
41
|
-
export
|
|
44
|
+
export class EditableH3ClusterLayer extends EditableLayer {
|
|
42
45
|
static layerName = 'EditableH3ClusterLayer';
|
|
43
46
|
static defaultProps = defaultProps;
|
|
44
47
|
state = undefined;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { CompositeLayer, CompositeLayerProps } from '@deck.gl/core';
|
|
2
2
|
import { DraggingEvent, ClickEvent, StartDraggingEvent, StopDraggingEvent, PointerMoveEvent } from '../edit-modes/types';
|
|
3
|
-
import { Position } from '../geojson-types';
|
|
3
|
+
import { Position } from '../utils/geojson-types';
|
|
4
4
|
export type EditableLayerProps<DataType = any> = CompositeLayerProps & {
|
|
5
5
|
pickingRadius?: number;
|
|
6
6
|
pickingDepth?: number;
|
|
7
7
|
};
|
|
8
|
-
export
|
|
8
|
+
export declare abstract class EditableLayer<DataT = any, ExtraPropsT = Record<string, unknown>> extends CompositeLayer<ExtraPropsT & Required<EditableLayerProps<DataT>>> {
|
|
9
9
|
static layerName: string;
|
|
10
10
|
state: {
|
|
11
11
|
_editableLayerState: any;
|
|
@@ -30,9 +30,9 @@ export default abstract class EditableLayer<DataT = any, ExtraPropsT = Record<st
|
|
|
30
30
|
_onpanend({ srcEvent }: any): void;
|
|
31
31
|
_onpointermove(event: any): void;
|
|
32
32
|
getPicks(screenCoords: [number, number]): {
|
|
33
|
-
color: Uint8Array;
|
|
34
|
-
layer: import("@deck.gl/core").Layer
|
|
35
|
-
sourceLayer?: import("@deck.gl/core").Layer
|
|
33
|
+
color: Uint8Array | null;
|
|
34
|
+
layer: import("@deck.gl/core").Layer | null;
|
|
35
|
+
sourceLayer?: import("@deck.gl/core").Layer | null;
|
|
36
36
|
viewport?: import("@deck.gl/core").Viewport;
|
|
37
37
|
index: number;
|
|
38
38
|
picked: boolean;
|