@deck.gl-community/editable-layers 9.2.0-beta.5 → 9.2.0-beta.8
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/edit-modes/draw-90degree-polygon-mode.d.ts +2 -2
- package/dist/edit-modes/draw-90degree-polygon-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-90degree-polygon-mode.js.map +1 -1
- package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts +2 -2
- package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-circle-by-diameter-mode.js +0 -1
- package/dist/edit-modes/draw-circle-by-diameter-mode.js.map +1 -1
- package/dist/edit-modes/draw-circle-from-center-mode.d.ts +2 -2
- package/dist/edit-modes/draw-circle-from-center-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-circle-from-center-mode.js +0 -1
- package/dist/edit-modes/draw-circle-from-center-mode.js.map +1 -1
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts +2 -2
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.js +1 -2
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.js.map +1 -1
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts +2 -2
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.js +0 -2
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.js.map +1 -1
- package/dist/edit-modes/draw-line-string-mode.d.ts +5 -5
- package/dist/edit-modes/draw-line-string-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-line-string-mode.js.map +1 -1
- package/dist/edit-modes/draw-point-mode.d.ts +2 -2
- package/dist/edit-modes/draw-point-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-point-mode.js.map +1 -1
- package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts +8 -8
- package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-polygon-by-dragging-mode.js.map +1 -1
- package/dist/edit-modes/draw-polygon-mode.d.ts +9 -5
- package/dist/edit-modes/draw-polygon-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-polygon-mode.js +226 -81
- package/dist/edit-modes/draw-polygon-mode.js.map +1 -1
- package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts +2 -2
- package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-rectangle-from-center-mode.js +0 -1
- package/dist/edit-modes/draw-rectangle-from-center-mode.js.map +1 -1
- package/dist/edit-modes/draw-rectangle-mode.d.ts +2 -2
- package/dist/edit-modes/draw-rectangle-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-rectangle-mode.js +0 -1
- package/dist/edit-modes/draw-rectangle-mode.js.map +1 -1
- package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts +2 -2
- package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-square-from-center-mode.d.ts +2 -2
- package/dist/edit-modes/draw-square-from-center-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-square-from-center-mode.js +0 -1
- package/dist/edit-modes/draw-square-from-center-mode.js.map +1 -1
- package/dist/edit-modes/draw-square-mode.d.ts +2 -2
- package/dist/edit-modes/draw-square-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-square-mode.js +0 -1
- package/dist/edit-modes/draw-square-mode.js.map +1 -1
- package/dist/edit-modes/duplicate-mode.d.ts +2 -2
- package/dist/edit-modes/duplicate-mode.d.ts.map +1 -1
- package/dist/edit-modes/duplicate-mode.js.map +1 -1
- package/dist/edit-modes/extend-line-string-mode.d.ts +4 -4
- package/dist/edit-modes/extend-line-string-mode.d.ts.map +1 -1
- package/dist/edit-modes/extend-line-string-mode.js.map +1 -1
- package/dist/edit-modes/extrude-mode.d.ts +7 -7
- package/dist/edit-modes/extrude-mode.d.ts.map +1 -1
- package/dist/edit-modes/extrude-mode.js.map +1 -1
- package/dist/edit-modes/geojson-edit-mode.d.ts +9 -9
- package/dist/edit-modes/geojson-edit-mode.d.ts.map +1 -1
- package/dist/edit-modes/geojson-edit-mode.js +4 -7
- package/dist/edit-modes/geojson-edit-mode.js.map +1 -1
- package/dist/edit-modes/immutable-feature-collection.d.ts +7 -7
- package/dist/edit-modes/immutable-feature-collection.d.ts.map +1 -1
- package/dist/edit-modes/immutable-feature-collection.js.map +1 -1
- package/dist/edit-modes/measure-area-mode.d.ts +3 -3
- package/dist/edit-modes/measure-area-mode.d.ts.map +1 -1
- package/dist/edit-modes/measure-area-mode.js.map +1 -1
- package/dist/edit-modes/modify-mode.d.ts +8 -8
- package/dist/edit-modes/modify-mode.d.ts.map +1 -1
- package/dist/edit-modes/modify-mode.js +2 -4
- package/dist/edit-modes/modify-mode.js.map +1 -1
- package/dist/edit-modes/resize-circle-mode.d.ts +3 -3
- package/dist/edit-modes/resize-circle-mode.d.ts.map +1 -1
- package/dist/edit-modes/resize-circle-mode.js +1 -5
- package/dist/edit-modes/resize-circle-mode.js.map +1 -1
- package/dist/edit-modes/rotate-mode.d.ts +7 -7
- package/dist/edit-modes/rotate-mode.d.ts.map +1 -1
- package/dist/edit-modes/rotate-mode.js +2 -9
- package/dist/edit-modes/rotate-mode.js.map +1 -1
- package/dist/edit-modes/scale-mode.d.ts +11 -11
- package/dist/edit-modes/scale-mode.d.ts.map +1 -1
- package/dist/edit-modes/scale-mode.js +1 -6
- package/dist/edit-modes/scale-mode.js.map +1 -1
- package/dist/edit-modes/snappable-mode.d.ts +5 -5
- package/dist/edit-modes/snappable-mode.d.ts.map +1 -1
- package/dist/edit-modes/snappable-mode.js.map +1 -1
- package/dist/edit-modes/split-polygon-mode.d.ts +5 -5
- package/dist/edit-modes/split-polygon-mode.d.ts.map +1 -1
- package/dist/edit-modes/split-polygon-mode.js +2 -5
- package/dist/edit-modes/split-polygon-mode.js.map +1 -1
- package/dist/edit-modes/three-click-polygon-mode.d.ts +3 -3
- package/dist/edit-modes/three-click-polygon-mode.d.ts.map +1 -1
- package/dist/edit-modes/three-click-polygon-mode.js.map +1 -1
- package/dist/edit-modes/translate-mode.d.ts +6 -6
- package/dist/edit-modes/translate-mode.d.ts.map +1 -1
- package/dist/edit-modes/translate-mode.js +1 -2
- package/dist/edit-modes/translate-mode.js.map +1 -1
- package/dist/edit-modes/two-click-polygon-mode.d.ts +6 -6
- package/dist/edit-modes/two-click-polygon-mode.d.ts.map +1 -1
- package/dist/edit-modes/two-click-polygon-mode.js.map +1 -1
- package/dist/edit-modes/types.d.ts +3 -3
- package/dist/edit-modes/types.d.ts.map +1 -1
- package/dist/edit-modes/utils.d.ts +7 -7
- package/dist/edit-modes/utils.d.ts.map +1 -1
- package/dist/edit-modes/utils.js +0 -3
- package/dist/edit-modes/utils.js.map +1 -1
- package/dist/editable-layers/editable-geojson-layer.d.ts +5 -13
- package/dist/editable-layers/editable-geojson-layer.d.ts.map +1 -1
- package/dist/editable-layers/editable-geojson-layer.js +4 -4
- package/dist/editable-layers/editable-geojson-layer.js.map +1 -1
- package/dist/editable-layers/selection-layer.d.ts +1 -2
- package/dist/editable-layers/selection-layer.d.ts.map +1 -1
- package/dist/editable-layers/selection-layer.js +2 -2
- package/dist/editable-layers/selection-layer.js.map +1 -1
- package/dist/index.cjs +369 -995
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +3 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -10
- package/dist/index.js.map +1 -1
- package/dist/mode-handlers/composite-mode-handler.d.ts +3 -3
- package/dist/mode-handlers/composite-mode-handler.d.ts.map +1 -1
- package/dist/mode-handlers/composite-mode-handler.js.map +1 -1
- package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-90degree-polygon-handler.js +4 -2
- package/dist/mode-handlers/draw-90degree-polygon-handler.js.map +1 -1
- package/dist/mode-handlers/draw-circle-by-bounding-box-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js +0 -1
- package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js.map +1 -1
- package/dist/mode-handlers/draw-circle-from-center-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-circle-from-center-handler.js +0 -1
- package/dist/mode-handlers/draw-circle-from-center-handler.js.map +1 -1
- package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js +1 -2
- package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js.map +1 -1
- package/dist/mode-handlers/draw-ellipse-using-three-points-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js +2 -2
- package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js.map +1 -1
- package/dist/mode-handlers/draw-point-handler.js.map +1 -1
- package/dist/mode-handlers/draw-polygon-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-polygon-handler.js +4 -2
- package/dist/mode-handlers/draw-polygon-handler.js.map +1 -1
- package/dist/mode-handlers/draw-rectangle-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-rectangle-handler.js +0 -1
- package/dist/mode-handlers/draw-rectangle-handler.js.map +1 -1
- package/dist/mode-handlers/draw-rectangle-using-three-points-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js +4 -2
- package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js.map +1 -1
- package/dist/mode-handlers/mode-handler.d.ts +12 -12
- package/dist/mode-handlers/mode-handler.d.ts.map +1 -1
- package/dist/mode-handlers/mode-handler.js +6 -7
- package/dist/mode-handlers/mode-handler.js.map +1 -1
- package/dist/mode-handlers/modify-handler.d.ts +2 -2
- package/dist/mode-handlers/modify-handler.d.ts.map +1 -1
- package/dist/mode-handlers/modify-handler.js +1 -4
- package/dist/mode-handlers/modify-handler.js.map +1 -1
- package/dist/mode-handlers/rotate-handler.d.ts +2 -2
- package/dist/mode-handlers/rotate-handler.d.ts.map +1 -1
- package/dist/mode-handlers/rotate-handler.js +2 -7
- package/dist/mode-handlers/rotate-handler.js.map +1 -1
- package/dist/mode-handlers/scale-handler.d.ts +2 -2
- package/dist/mode-handlers/scale-handler.d.ts.map +1 -1
- package/dist/mode-handlers/scale-handler.js +2 -7
- package/dist/mode-handlers/scale-handler.js.map +1 -1
- package/dist/mode-handlers/snappable-handler.d.ts +3 -3
- package/dist/mode-handlers/snappable-handler.d.ts.map +1 -1
- package/dist/mode-handlers/snappable-handler.js.map +1 -1
- package/dist/mode-handlers/split-polygon-handler.d.ts.map +1 -1
- package/dist/mode-handlers/split-polygon-handler.js +4 -5
- package/dist/mode-handlers/split-polygon-handler.js.map +1 -1
- package/dist/mode-handlers/translate-handler.d.ts +2 -2
- package/dist/mode-handlers/translate-handler.d.ts.map +1 -1
- package/dist/mode-handlers/translate-handler.js +1 -4
- package/dist/mode-handlers/translate-handler.js.map +1 -1
- package/dist/utils/geojson-types.d.ts +13 -34
- package/dist/utils/geojson-types.d.ts.map +1 -1
- package/dist/utils/translate-from-center.d.ts +2 -4
- package/dist/utils/translate-from-center.d.ts.map +1 -1
- package/dist/utils/translate-from-center.js.map +1 -1
- package/dist/utils/utils.d.ts +3 -3
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js.map +1 -1
- package/package.json +33 -33
- package/src/edit-modes/draw-90degree-polygon-mode.ts +2 -2
- package/src/edit-modes/draw-circle-by-diameter-mode.ts +3 -3
- package/src/edit-modes/draw-circle-from-center-mode.ts +3 -3
- package/src/edit-modes/draw-ellipse-by-bounding-box-mode.ts +4 -4
- package/src/edit-modes/draw-ellipse-using-three-points-mode.ts +3 -4
- package/src/edit-modes/draw-line-string-mode.ts +5 -5
- package/src/edit-modes/draw-point-mode.ts +2 -2
- package/src/edit-modes/draw-polygon-by-dragging-mode.ts +8 -8
- package/src/edit-modes/draw-polygon-mode.ts +304 -100
- package/src/edit-modes/draw-rectangle-from-center-mode.ts +2 -3
- package/src/edit-modes/draw-rectangle-mode.ts +2 -3
- package/src/edit-modes/draw-rectangle-using-three-points-mode.ts +2 -2
- package/src/edit-modes/draw-square-from-center-mode.ts +2 -3
- package/src/edit-modes/draw-square-mode.ts +3 -3
- package/src/edit-modes/duplicate-mode.ts +2 -2
- package/src/edit-modes/extend-line-string-mode.ts +4 -4
- package/src/edit-modes/extrude-mode.ts +7 -7
- package/src/edit-modes/geojson-edit-mode.ts +16 -19
- package/src/edit-modes/immutable-feature-collection.ts +10 -11
- package/src/edit-modes/measure-area-mode.ts +3 -3
- package/src/edit-modes/modify-mode.ts +13 -13
- package/src/edit-modes/resize-circle-mode.ts +6 -8
- package/src/edit-modes/rotate-mode.ts +9 -15
- package/src/edit-modes/scale-mode.ts +11 -15
- package/src/edit-modes/snappable-mode.ts +5 -5
- package/src/edit-modes/split-polygon-mode.ts +12 -16
- package/src/edit-modes/three-click-polygon-mode.ts +3 -3
- package/src/edit-modes/translate-mode.ts +10 -12
- package/src/edit-modes/two-click-polygon-mode.ts +7 -7
- package/src/edit-modes/types.ts +4 -4
- package/src/edit-modes/utils.ts +12 -16
- package/src/editable-layers/editable-geojson-layer.ts +19 -18
- package/src/editable-layers/selection-layer.ts +3 -3
- package/src/index.ts +8 -28
- package/src/mode-handlers/composite-mode-handler.ts +3 -3
- package/src/mode-handlers/draw-90degree-polygon-handler.ts +4 -2
- package/src/mode-handlers/draw-circle-by-bounding-box-handler.ts +0 -1
- package/src/mode-handlers/draw-circle-from-center-handler.ts +0 -1
- package/src/mode-handlers/draw-ellipse-by-bounding-box-handler.ts +1 -2
- package/src/mode-handlers/draw-ellipse-using-three-points-handler.ts +3 -2
- package/src/mode-handlers/draw-point-handler.ts +2 -2
- package/src/mode-handlers/draw-polygon-handler.ts +4 -2
- package/src/mode-handlers/draw-rectangle-handler.ts +0 -1
- package/src/mode-handlers/draw-rectangle-using-three-points-handler.ts +4 -2
- package/src/mode-handlers/mode-handler.ts +20 -21
- package/src/mode-handlers/modify-handler.ts +2 -4
- package/src/mode-handlers/rotate-handler.ts +4 -8
- package/src/mode-handlers/scale-handler.ts +4 -8
- package/src/mode-handlers/snappable-handler.ts +3 -3
- package/src/mode-handlers/split-polygon-handler.ts +6 -7
- package/src/mode-handlers/translate-handler.ts +3 -5
- package/src/utils/geojson-types.ts +15 -54
- package/src/utils/translate-from-center.ts +6 -11
- package/src/utils/utils.ts +4 -4
- package/dist/lib/constants.d.ts +0 -7
- package/dist/lib/constants.d.ts.map +0 -1
- package/dist/lib/constants.js +0 -10
- package/dist/lib/constants.js.map +0 -1
- package/dist/lib/deck-renderer/deck-cache.d.ts +0 -15
- package/dist/lib/deck-renderer/deck-cache.d.ts.map +0 -1
- package/dist/lib/deck-renderer/deck-cache.js +0 -52
- package/dist/lib/deck-renderer/deck-cache.js.map +0 -1
- package/dist/lib/deck-renderer/deck-drawer.d.ts +0 -63
- package/dist/lib/deck-renderer/deck-drawer.d.ts.map +0 -1
- package/dist/lib/deck-renderer/deck-drawer.js +0 -233
- package/dist/lib/deck-renderer/deck-drawer.js.map +0 -1
- package/dist/lib/feature.d.ts +0 -11
- package/dist/lib/feature.d.ts.map +0 -1
- package/dist/lib/feature.js +0 -20
- package/dist/lib/feature.js.map +0 -1
- package/dist/lib/layer-mouse-event.d.ts +0 -12
- package/dist/lib/layer-mouse-event.d.ts.map +0 -1
- package/dist/lib/layer-mouse-event.js +0 -28
- package/dist/lib/layer-mouse-event.js.map +0 -1
- package/dist/lib/layers/junctions-layer.d.ts +0 -9
- package/dist/lib/layers/junctions-layer.d.ts.map +0 -1
- package/dist/lib/layers/junctions-layer.js +0 -37
- package/dist/lib/layers/junctions-layer.js.map +0 -1
- package/dist/lib/layers/segments-layer.d.ts +0 -19
- package/dist/lib/layers/segments-layer.d.ts.map +0 -1
- package/dist/lib/layers/segments-layer.js +0 -98
- package/dist/lib/layers/segments-layer.js.map +0 -1
- package/dist/lib/layers/texts-layer.d.ts +0 -9
- package/dist/lib/layers/texts-layer.d.ts.map +0 -1
- package/dist/lib/layers/texts-layer.js +0 -36
- package/dist/lib/layers/texts-layer.js.map +0 -1
- package/dist/lib/math.d.ts +0 -12
- package/dist/lib/math.d.ts.map +0 -1
- package/dist/lib/math.js +0 -26
- package/dist/lib/math.js.map +0 -1
- package/dist/lib/nebula-core.d.ts +0 -35
- package/dist/lib/nebula-core.d.ts.map +0 -1
- package/dist/lib/nebula-core.js +0 -258
- package/dist/lib/nebula-core.js.map +0 -1
- package/dist/lib/nebula-layer.d.ts +0 -14
- package/dist/lib/nebula-layer.d.ts.map +0 -1
- package/dist/lib/nebula-layer.js +0 -30
- package/dist/lib/nebula-layer.js.map +0 -1
- package/dist/lib/style.d.ts +0 -20
- package/dist/lib/style.d.ts.map +0 -1
- package/dist/lib/style.js +0 -24
- package/dist/lib/style.js.map +0 -1
- package/dist/utils/curve-utils.d.ts +0 -3
- package/dist/utils/curve-utils.d.ts.map +0 -1
- package/dist/utils/curve-utils.js +0 -65
- package/dist/utils/curve-utils.js.map +0 -1
- package/src/lib/constants.ts +0 -10
- package/src/lib/deck-renderer/deck-cache.ts +0 -61
- package/src/lib/deck-renderer/deck-drawer.ts +0 -263
- package/src/lib/feature.ts +0 -31
- package/src/lib/layer-mouse-event.ts +0 -33
- package/src/lib/layers/junctions-layer.ts +0 -44
- package/src/lib/layers/segments-layer.ts +0 -112
- package/src/lib/layers/texts-layer.ts +0 -47
- package/src/lib/math.ts +0 -30
- package/src/lib/nebula-core.ts +0 -327
- package/src/lib/nebula-layer.ts +0 -37
- package/src/lib/style.ts +0 -26
- package/src/utils/curve-utils.ts +0 -81
|
@@ -6,16 +6,15 @@ import booleanPointInPolygon from '@turf/boolean-point-in-polygon';
|
|
|
6
6
|
import turfDifference from '@turf/difference';
|
|
7
7
|
import turfBuffer from '@turf/buffer';
|
|
8
8
|
import lineIntersect from '@turf/line-intersect';
|
|
9
|
-
import type {Point} from '
|
|
10
|
-
import {lineString} from '@turf/helpers';
|
|
9
|
+
import type {Point} from 'geojson';
|
|
10
|
+
import {feature as turfFeature, featureCollection, lineString} from '@turf/helpers';
|
|
11
11
|
import turfBearing from '@turf/bearing';
|
|
12
12
|
import turfDistance from '@turf/distance';
|
|
13
13
|
import turfDestination from '@turf/destination';
|
|
14
14
|
import turfPolygonToLine from '@turf/polygon-to-line';
|
|
15
|
-
import type {NearestPointOnLine} from '@turf/nearest-point-on-line';
|
|
16
15
|
import nearestPointOnLine from '@turf/nearest-point-on-line';
|
|
17
16
|
import {generatePointsParallelToLinePoints} from './utils';
|
|
18
|
-
import {FeatureCollection} from '../utils/geojson-types';
|
|
17
|
+
import {FeatureCollection, PolygonGeometry, SimpleFeatureCollection} from '../utils/geojson-types';
|
|
19
18
|
import {
|
|
20
19
|
ClickEvent,
|
|
21
20
|
PointerMoveEvent,
|
|
@@ -27,7 +26,7 @@ import {GeoJsonEditMode, GeoJsonEditAction} from './geojson-edit-mode';
|
|
|
27
26
|
import {ImmutableFeatureCollection} from './immutable-feature-collection';
|
|
28
27
|
|
|
29
28
|
export class SplitPolygonMode extends GeoJsonEditMode {
|
|
30
|
-
calculateMapCoords(clickSequence: any, mapCoords: any, props: ModeProps<
|
|
29
|
+
calculateMapCoords(clickSequence: any, mapCoords: any, props: ModeProps<SimpleFeatureCollection>) {
|
|
31
30
|
const modeConfig = props.modeConfig;
|
|
32
31
|
if (!modeConfig || !modeConfig.lock90Degree || !clickSequence.length) {
|
|
33
32
|
return mapCoords;
|
|
@@ -36,12 +35,11 @@ export class SplitPolygonMode extends GeoJsonEditMode {
|
|
|
36
35
|
// if first point is clicked, then find closest polygon point and build ~90deg vector
|
|
37
36
|
const firstPoint = clickSequence[0];
|
|
38
37
|
const selectedGeometry = this.getSelectedGeometry(props);
|
|
39
|
-
|
|
40
|
-
const feature = turfPolygonToLine(selectedGeometry);
|
|
38
|
+
const feature = turfPolygonToLine(selectedGeometry as PolygonGeometry);
|
|
41
39
|
|
|
42
40
|
const lines = feature.type === 'FeatureCollection' ? feature.features : [feature];
|
|
43
41
|
let minDistance = Number.MAX_SAFE_INTEGER;
|
|
44
|
-
let closestPoint:
|
|
42
|
+
let closestPoint: ReturnType<typeof nearestPointOnLine> | null = null;
|
|
45
43
|
// If Multipolygon, then we should find nearest polygon line and stick split to it.
|
|
46
44
|
lines.forEach((line) => {
|
|
47
45
|
const snapPoint = nearestPointOnLine(line, firstPoint);
|
|
@@ -55,7 +53,7 @@ export class SplitPolygonMode extends GeoJsonEditMode {
|
|
|
55
53
|
if (closestPoint) {
|
|
56
54
|
// closest point is used as 90degree entry to the polygon
|
|
57
55
|
const lastBearing = turfBearing(firstPoint, closestPoint);
|
|
58
|
-
const currentDistance = turfDistance(firstPoint, mapCoords, {units: 'meters'});
|
|
56
|
+
const currentDistance = turfDistance(firstPoint, mapCoords, { units: 'meters' });
|
|
59
57
|
return turfDestination(firstPoint, currentDistance, lastBearing, {
|
|
60
58
|
units: 'meters'
|
|
61
59
|
}).geometry.coordinates;
|
|
@@ -75,7 +73,7 @@ export class SplitPolygonMode extends GeoJsonEditMode {
|
|
|
75
73
|
return nearestPt;
|
|
76
74
|
}
|
|
77
75
|
|
|
78
|
-
getGuides(props: ModeProps<
|
|
76
|
+
getGuides(props: ModeProps<SimpleFeatureCollection>): GuideFeatureCollection {
|
|
79
77
|
const clickSequence = this.getClickSequence();
|
|
80
78
|
|
|
81
79
|
const guides: GuideFeatureCollection = {
|
|
@@ -104,7 +102,7 @@ export class SplitPolygonMode extends GeoJsonEditMode {
|
|
|
104
102
|
return guides;
|
|
105
103
|
}
|
|
106
104
|
|
|
107
|
-
handleClick(event: ClickEvent, props: ModeProps<
|
|
105
|
+
handleClick(event: ClickEvent, props: ModeProps<SimpleFeatureCollection>) {
|
|
108
106
|
const tentativeFeature = this.getTentativeGuide(props);
|
|
109
107
|
|
|
110
108
|
const selectedGeometry = this.getSelectedGeometry(props);
|
|
@@ -129,8 +127,7 @@ export class SplitPolygonMode extends GeoJsonEditMode {
|
|
|
129
127
|
coordinates: clickSequence[clickSequence.length - 1]
|
|
130
128
|
};
|
|
131
129
|
|
|
132
|
-
|
|
133
|
-
const isPointInPolygon = booleanPointInPolygon(pt, selectedGeometry);
|
|
130
|
+
const isPointInPolygon = booleanPointInPolygon(pt, selectedGeometry as PolygonGeometry);
|
|
134
131
|
if (clickSequence.length > 1 && tentativeFeature && !isPointInPolygon) {
|
|
135
132
|
this.resetClickSequence();
|
|
136
133
|
// @ts-expect-error narrow type
|
|
@@ -151,7 +148,7 @@ export class SplitPolygonMode extends GeoJsonEditMode {
|
|
|
151
148
|
props.onUpdateCursor('cell');
|
|
152
149
|
}
|
|
153
150
|
|
|
154
|
-
splitPolygon(tentativeFeature: TentativeFeature, props: ModeProps<
|
|
151
|
+
splitPolygon(tentativeFeature: TentativeFeature, props: ModeProps<SimpleFeatureCollection>) {
|
|
155
152
|
const selectedGeometry = this.getSelectedGeometry(props);
|
|
156
153
|
const featureIndex = props.selectedIndexes[0];
|
|
157
154
|
const modeConfig = props.modeConfig || {};
|
|
@@ -164,8 +161,7 @@ export class SplitPolygonMode extends GeoJsonEditMode {
|
|
|
164
161
|
}
|
|
165
162
|
|
|
166
163
|
const buffer = turfBuffer(tentativeFeature, gap, {units});
|
|
167
|
-
|
|
168
|
-
const updatedGeometry = turfDifference(selectedGeometry, buffer);
|
|
164
|
+
const updatedGeometry = turfDifference(featureCollection([turfFeature(selectedGeometry as PolygonGeometry), buffer]));
|
|
169
165
|
if (!updatedGeometry) {
|
|
170
166
|
// eslint-disable-next-line no-console,no-undef
|
|
171
167
|
console.warn('Canceling edit. Split Polygon erased');
|
|
@@ -9,12 +9,12 @@ import {
|
|
|
9
9
|
GuideFeatureCollection,
|
|
10
10
|
TentativeFeature
|
|
11
11
|
} from './types';
|
|
12
|
-
import {Position, Polygon,
|
|
12
|
+
import {Position, Polygon, Feature, FeatureCollection, SimpleFeatureCollection} from '../utils/geojson-types';
|
|
13
13
|
import {GeoJsonEditMode} from './geojson-edit-mode';
|
|
14
14
|
import omit from 'lodash.omit';
|
|
15
15
|
|
|
16
16
|
export class ThreeClickPolygonMode extends GeoJsonEditMode {
|
|
17
|
-
handleClick(event: ClickEvent, props: ModeProps<
|
|
17
|
+
handleClick(event: ClickEvent, props: ModeProps<SimpleFeatureCollection>) {
|
|
18
18
|
this.addClickSequence(event);
|
|
19
19
|
const clickSequence = this.getClickSequence();
|
|
20
20
|
const tentativeFeature = this.getTentativeGuide(props);
|
|
@@ -91,7 +91,7 @@ export class ThreeClickPolygonMode extends GeoJsonEditMode {
|
|
|
91
91
|
coord2: Position,
|
|
92
92
|
coord3: Position,
|
|
93
93
|
modeConfig: any
|
|
94
|
-
):
|
|
94
|
+
): Feature<Polygon> | null | undefined {
|
|
95
95
|
return null;
|
|
96
96
|
}
|
|
97
97
|
|
|
@@ -5,10 +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 type {Feature as TurfFeature, Geometry as TurfGeometry} from '@turf/helpers';
|
|
9
8
|
import {point} from '@turf/helpers';
|
|
10
9
|
import {WebMercatorViewport} from 'viewport-mercator-project';
|
|
11
|
-
import {FeatureCollection, Position,
|
|
10
|
+
import {FeatureCollection, Position, SimpleGeometry, SimpleFeatureCollection} from '../utils/geojson-types';
|
|
12
11
|
import {
|
|
13
12
|
PointerMoveEvent,
|
|
14
13
|
StartDraggingEvent,
|
|
@@ -22,10 +21,10 @@ import {GeoJsonEditMode, GeoJsonEditAction} from './geojson-edit-mode';
|
|
|
22
21
|
import {ImmutableFeatureCollection} from './immutable-feature-collection';
|
|
23
22
|
|
|
24
23
|
export class TranslateMode extends GeoJsonEditMode {
|
|
25
|
-
_geometryBeforeTranslate:
|
|
24
|
+
_geometryBeforeTranslate: SimpleFeatureCollection | null | undefined;
|
|
26
25
|
_isTranslatable: boolean = undefined!;
|
|
27
26
|
|
|
28
|
-
handleDragging(event: DraggingEvent, props: ModeProps<
|
|
27
|
+
handleDragging(event: DraggingEvent, props: ModeProps<SimpleFeatureCollection>) {
|
|
29
28
|
if (!this._isTranslatable) {
|
|
30
29
|
// Nothing to do
|
|
31
30
|
return;
|
|
@@ -55,7 +54,7 @@ export class TranslateMode extends GeoJsonEditMode {
|
|
|
55
54
|
this.updateCursor(props);
|
|
56
55
|
}
|
|
57
56
|
|
|
58
|
-
handleStartDragging(event: StartDraggingEvent, props: ModeProps<
|
|
57
|
+
handleStartDragging(event: StartDraggingEvent, props: ModeProps<SimpleFeatureCollection>) {
|
|
59
58
|
if (!this._isTranslatable) {
|
|
60
59
|
return;
|
|
61
60
|
}
|
|
@@ -64,7 +63,7 @@ export class TranslateMode extends GeoJsonEditMode {
|
|
|
64
63
|
this._geometryBeforeTranslate = this.getSelectedFeaturesAsFeatureCollection(props);
|
|
65
64
|
}
|
|
66
65
|
|
|
67
|
-
handleStopDragging(event: StopDraggingEvent, props: ModeProps<
|
|
66
|
+
handleStopDragging(event: StopDraggingEvent, props: ModeProps<SimpleFeatureCollection>) {
|
|
68
67
|
if (this._geometryBeforeTranslate) {
|
|
69
68
|
// Translate the geometry
|
|
70
69
|
const editAction = this.getTranslateAction(
|
|
@@ -95,7 +94,7 @@ export class TranslateMode extends GeoJsonEditMode {
|
|
|
95
94
|
startDragPoint: Position,
|
|
96
95
|
currentPoint: Position,
|
|
97
96
|
editType: string,
|
|
98
|
-
props: ModeProps<
|
|
97
|
+
props: ModeProps<SimpleFeatureCollection>
|
|
99
98
|
): GeoJsonEditAction | null | undefined {
|
|
100
99
|
if (!this._geometryBeforeTranslate) {
|
|
101
100
|
return null;
|
|
@@ -131,11 +130,10 @@ export class TranslateMode extends GeoJsonEditMode {
|
|
|
131
130
|
return null;
|
|
132
131
|
});
|
|
133
132
|
|
|
134
|
-
// @ts-expect-error turf types
|
|
135
133
|
updatedData = updatedData.replaceGeometry(selectedIndex, {
|
|
136
134
|
type: feature.geometry.type,
|
|
137
|
-
coordinates
|
|
138
|
-
});
|
|
135
|
+
coordinates,
|
|
136
|
+
} as SimpleGeometry);
|
|
139
137
|
}
|
|
140
138
|
}
|
|
141
139
|
} else {
|
|
@@ -146,13 +144,13 @@ export class TranslateMode extends GeoJsonEditMode {
|
|
|
146
144
|
const direction = turfBearing(p1, p2);
|
|
147
145
|
|
|
148
146
|
const movedFeatures = this._geometryBeforeTranslate.features.map((feature) =>
|
|
149
|
-
translateFromCenter(clone(feature
|
|
147
|
+
translateFromCenter(clone(feature), distanceMoved, direction)
|
|
150
148
|
);
|
|
151
149
|
|
|
152
150
|
for (let i = 0; i < selectedIndexes.length; i++) {
|
|
153
151
|
const selectedIndex = selectedIndexes[i];
|
|
154
152
|
const movedFeature = movedFeatures[i];
|
|
155
|
-
updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry
|
|
153
|
+
updatedData = updatedData.replaceGeometry(selectedIndex, movedFeature.geometry);
|
|
156
154
|
}
|
|
157
155
|
}
|
|
158
156
|
|
|
@@ -11,12 +11,12 @@ import {
|
|
|
11
11
|
GuideFeatureCollection,
|
|
12
12
|
TentativeFeature
|
|
13
13
|
} from './types';
|
|
14
|
-
import {Polygon, FeatureCollection,
|
|
14
|
+
import {Polygon, FeatureCollection, Feature, Position, SimpleFeatureCollection} from '../utils/geojson-types';
|
|
15
15
|
import {GeoJsonEditMode} from './geojson-edit-mode';
|
|
16
16
|
import omit from 'lodash.omit';
|
|
17
17
|
|
|
18
18
|
export class TwoClickPolygonMode extends GeoJsonEditMode {
|
|
19
|
-
handleClick(event: ClickEvent, props: ModeProps<
|
|
19
|
+
handleClick(event: ClickEvent, props: ModeProps<SimpleFeatureCollection>) {
|
|
20
20
|
if (props.modeConfig && props.modeConfig.dragToDraw) {
|
|
21
21
|
// handled in drag handlers
|
|
22
22
|
return;
|
|
@@ -27,7 +27,7 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
|
|
|
27
27
|
this.checkAndFinishPolygon(props);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
handleStartDragging(event: StartDraggingEvent, props: ModeProps<
|
|
30
|
+
handleStartDragging(event: StartDraggingEvent, props: ModeProps<SimpleFeatureCollection>): void {
|
|
31
31
|
if (!props.modeConfig || !props.modeConfig.dragToDraw) {
|
|
32
32
|
// handled in click handlers
|
|
33
33
|
return;
|
|
@@ -37,7 +37,7 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
|
|
|
37
37
|
event.cancelPan();
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
handleStopDragging(event: StopDraggingEvent, props: ModeProps<
|
|
40
|
+
handleStopDragging(event: StopDraggingEvent, props: ModeProps<SimpleFeatureCollection>): void {
|
|
41
41
|
if (!props.modeConfig || !props.modeConfig.dragToDraw) {
|
|
42
42
|
// handled in click handlers
|
|
43
43
|
return;
|
|
@@ -47,7 +47,7 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
|
|
|
47
47
|
this.checkAndFinishPolygon(props);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
checkAndFinishPolygon(props: ModeProps<
|
|
50
|
+
checkAndFinishPolygon(props: ModeProps<SimpleFeatureCollection>) {
|
|
51
51
|
const clickSequence = this.getClickSequence();
|
|
52
52
|
const tentativeFeature = this.getTentativeGuide(props);
|
|
53
53
|
|
|
@@ -56,7 +56,7 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
|
|
|
56
56
|
tentativeFeature &&
|
|
57
57
|
tentativeFeature.geometry.type === 'Polygon'
|
|
58
58
|
) {
|
|
59
|
-
const feature:
|
|
59
|
+
const feature: Feature<Polygon> = {
|
|
60
60
|
type: 'Feature',
|
|
61
61
|
properties: omit(tentativeFeature.properties, 'guideType'),
|
|
62
62
|
geometry: {
|
|
@@ -110,7 +110,7 @@ export class TwoClickPolygonMode extends GeoJsonEditMode {
|
|
|
110
110
|
coord1: Position,
|
|
111
111
|
coord2: Position,
|
|
112
112
|
modeConfig: any
|
|
113
|
-
):
|
|
113
|
+
): Feature<Polygon> | null | undefined {
|
|
114
114
|
return null;
|
|
115
115
|
}
|
|
116
116
|
|
package/src/edit-modes/types.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
import {Position, Point,
|
|
5
|
+
import {Position, Point, SimpleGeometry, Feature} from '../utils/geojson-types';
|
|
6
6
|
|
|
7
7
|
export type ScreenCoordinates = [number, number];
|
|
8
8
|
|
|
@@ -92,7 +92,7 @@ export type EditHandleType =
|
|
|
92
92
|
| 'scale'
|
|
93
93
|
| 'rotate';
|
|
94
94
|
|
|
95
|
-
export type EditHandleFeature =
|
|
95
|
+
export type EditHandleFeature = Feature<
|
|
96
96
|
Point,
|
|
97
97
|
{
|
|
98
98
|
guideType: 'editHandle';
|
|
@@ -103,8 +103,8 @@ export type EditHandleFeature = FeatureWithProps<
|
|
|
103
103
|
}
|
|
104
104
|
>;
|
|
105
105
|
|
|
106
|
-
export type TentativeFeature =
|
|
107
|
-
|
|
106
|
+
export type TentativeFeature = Feature<
|
|
107
|
+
SimpleGeometry,
|
|
108
108
|
{
|
|
109
109
|
guideType: 'tentative';
|
|
110
110
|
shape?: string;
|
package/src/edit-modes/utils.ts
CHANGED
|
@@ -8,23 +8,21 @@ import destination from '@turf/destination';
|
|
|
8
8
|
import bearing from '@turf/bearing';
|
|
9
9
|
import pointToLineDistance from '@turf/point-to-line-distance';
|
|
10
10
|
import {flattenEach} from '@turf/meta';
|
|
11
|
-
// import type {MultiLineString} from '@turf/helpers';
|
|
12
11
|
import {point} from '@turf/helpers';
|
|
13
12
|
import {getCoords} from '@turf/invariant';
|
|
14
13
|
import {WebMercatorViewport} from 'viewport-mercator-project';
|
|
15
14
|
import {Viewport, Pick, EditHandleFeature, EditHandleType, StartDraggingEvent} from './types';
|
|
16
15
|
import {
|
|
17
|
-
|
|
16
|
+
SimpleGeometry,
|
|
18
17
|
Position,
|
|
19
18
|
Point,
|
|
20
19
|
LineString,
|
|
21
20
|
Polygon,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
AnyCoordinates
|
|
21
|
+
Feature,
|
|
22
|
+
SimpleGeometryCoordinates
|
|
25
23
|
} from '../utils/geojson-types';
|
|
26
24
|
|
|
27
|
-
export type NearestPointType =
|
|
25
|
+
export type NearestPointType = Feature<Point, {dist: number; index: number}>;
|
|
28
26
|
|
|
29
27
|
export function toDeckColor(
|
|
30
28
|
color?: [number, number, number, number] | number,
|
|
@@ -119,8 +117,8 @@ export function mix(a: number, b: number, ratio: number): number {
|
|
|
119
117
|
}
|
|
120
118
|
|
|
121
119
|
export function nearestPointOnProjectedLine(
|
|
122
|
-
line:
|
|
123
|
-
inPoint:
|
|
120
|
+
line: Feature<LineString>,
|
|
121
|
+
inPoint: Feature<Point>,
|
|
124
122
|
viewport: Viewport
|
|
125
123
|
): NearestPointType {
|
|
126
124
|
const wmViewport = new WebMercatorViewport(viewport);
|
|
@@ -187,8 +185,8 @@ export function nearestPointOnProjectedLine(
|
|
|
187
185
|
}
|
|
188
186
|
|
|
189
187
|
export function nearestPointOnLine( // <G extends LineString | MultiLineString>(
|
|
190
|
-
lines:
|
|
191
|
-
inPoint:
|
|
188
|
+
lines: Feature<LineString>,
|
|
189
|
+
inPoint: Feature<Point>,
|
|
192
190
|
viewport?: Viewport
|
|
193
191
|
): NearestPointType {
|
|
194
192
|
let mercator;
|
|
@@ -204,11 +202,9 @@ export function nearestPointOnLine( // <G extends LineString | MultiLineString>(
|
|
|
204
202
|
return closestPoint;
|
|
205
203
|
}
|
|
206
204
|
|
|
207
|
-
// @ts-expect-error TODO
|
|
208
205
|
// eslint-disable-next-line max-statements, complexity
|
|
209
206
|
flattenEach(lines, (line: any) => {
|
|
210
207
|
const coords: any = getCoords(line);
|
|
211
|
-
// @ts-expect-error TODO
|
|
212
208
|
const pointCoords: any = getCoords(inPoint);
|
|
213
209
|
|
|
214
210
|
let minDist;
|
|
@@ -369,7 +365,7 @@ export function getPickedEditHandles(picks: Pick[] | null | undefined): EditHand
|
|
|
369
365
|
}
|
|
370
366
|
|
|
371
367
|
export function getEditHandlesForGeometry(
|
|
372
|
-
geometry:
|
|
368
|
+
geometry: SimpleGeometry,
|
|
373
369
|
featureIndex: number,
|
|
374
370
|
editHandleType: EditHandleType = 'existing'
|
|
375
371
|
): EditHandleFeature[] {
|
|
@@ -474,7 +470,7 @@ function getEditHandlesForCoordinates(
|
|
|
474
470
|
* @returns Updated coordinates.
|
|
475
471
|
*/
|
|
476
472
|
export function updateRectanglePosition(
|
|
477
|
-
feature:
|
|
473
|
+
feature: Feature<Polygon>,
|
|
478
474
|
editHandleIndex: number,
|
|
479
475
|
coords: Position
|
|
480
476
|
): Position[][] | null {
|
|
@@ -501,9 +497,9 @@ export function updateRectanglePosition(
|
|
|
501
497
|
* @retuns Transformed coordinates.
|
|
502
498
|
*/
|
|
503
499
|
export function mapCoords(
|
|
504
|
-
coords:
|
|
500
|
+
coords: SimpleGeometryCoordinates,
|
|
505
501
|
callback: (coords: Position) => Position
|
|
506
|
-
):
|
|
502
|
+
): SimpleGeometryCoordinates {
|
|
507
503
|
if (typeof coords[0] === 'number') {
|
|
508
504
|
if (!isNaN(coords[0]) && isFinite(coords[0])) {
|
|
509
505
|
return callback(coords as Position);
|
|
@@ -13,7 +13,8 @@ import {
|
|
|
13
13
|
StopDraggingEvent,
|
|
14
14
|
DraggingEvent,
|
|
15
15
|
PointerMoveEvent,
|
|
16
|
-
DoubleClickEvent
|
|
16
|
+
DoubleClickEvent,
|
|
17
|
+
ModeProps
|
|
17
18
|
} from '../edit-modes/types';
|
|
18
19
|
|
|
19
20
|
import {ViewMode} from '../edit-modes/view-mode';
|
|
@@ -119,7 +120,7 @@ export type EditableGeoJsonLayerProps<DataT = any> = EditableLayerProps & {
|
|
|
119
120
|
mode?: any;
|
|
120
121
|
modeConfig?: any;
|
|
121
122
|
selectedFeatureIndexes?: number[];
|
|
122
|
-
onEdit?: (
|
|
123
|
+
onEdit?: (editAction: EditAction<DataT>) => void;
|
|
123
124
|
|
|
124
125
|
pickable?: boolean;
|
|
125
126
|
pickingRadius?: number;
|
|
@@ -141,8 +142,8 @@ export type EditableGeoJsonLayerProps<DataT = any> = EditableLayerProps & {
|
|
|
141
142
|
|
|
142
143
|
getLineColor?: Color | ((feature, isSelected, mode) => Color);
|
|
143
144
|
getFillColor?: Color | ((feature, isSelected, mode) => Color);
|
|
144
|
-
getRadius?: number | ((
|
|
145
|
-
getLineWidth?: number | ((
|
|
145
|
+
getRadius?: number | ((feature, isSelected, mode) => number);
|
|
146
|
+
getLineWidth?: number | ((feature, isSelected, mode) => number);
|
|
146
147
|
|
|
147
148
|
getTentativeLineColor?: Color | ((feature, isSelected, mode) => Color);
|
|
148
149
|
getTentativeFillColor?: Color | ((feature, isSelected, mode) => Color);
|
|
@@ -332,10 +333,10 @@ export class EditableGeoJsonLayer extends EditableLayer<
|
|
|
332
333
|
},
|
|
333
334
|
|
|
334
335
|
updateTriggers: {
|
|
335
|
-
getLineColor: [this.props.selectedFeatureIndexes, this.props.mode],
|
|
336
|
-
getFillColor: [this.props.selectedFeatureIndexes, this.props.mode],
|
|
337
|
-
getPointRadius: [this.props.selectedFeatureIndexes, this.props.mode],
|
|
338
|
-
getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode]
|
|
336
|
+
getLineColor: [this.props.updateTriggers.getLineColor, this.props.selectedFeatureIndexes, this.props.mode],
|
|
337
|
+
getFillColor: [this.props.updateTriggers.getFillColor, this.props.selectedFeatureIndexes, this.props.mode],
|
|
338
|
+
getPointRadius: [this.props.updateTriggers.getPointRadius, this.props.selectedFeatureIndexes, this.props.mode],
|
|
339
|
+
getLineWidth: [this.props.updateTriggers.getLineWidth, this.props.selectedFeatureIndexes, this.props.mode]
|
|
339
340
|
}
|
|
340
341
|
});
|
|
341
342
|
|
|
@@ -414,14 +415,14 @@ export class EditableGeoJsonLayer extends EditableLayer<
|
|
|
414
415
|
this.setState({selectedFeatures});
|
|
415
416
|
}
|
|
416
417
|
|
|
417
|
-
getModeProps(props: EditableGeoJsonLayerProps<
|
|
418
|
+
getModeProps<DataT>(props: EditableGeoJsonLayerProps<DataT>): ModeProps<DataT> {
|
|
418
419
|
return {
|
|
419
420
|
modeConfig: props.modeConfig,
|
|
420
421
|
data: props.data,
|
|
421
422
|
selectedIndexes: props.selectedFeatureIndexes,
|
|
422
423
|
lastPointerMoveEvent: this.state.lastPointerMoveEvent,
|
|
423
424
|
cursor: this.state.cursor,
|
|
424
|
-
onEdit: (editAction
|
|
425
|
+
onEdit: (editAction) => {
|
|
425
426
|
// Force a re-render
|
|
426
427
|
// This supports double-click where we need to ensure that there's a re-render between the two clicks
|
|
427
428
|
// even though the data wasn't changed, just the internal tentative feature.
|
|
@@ -551,7 +552,7 @@ export class EditableGeoJsonLayer extends EditableLayer<
|
|
|
551
552
|
|
|
552
553
|
createTooltipsLayers() {
|
|
553
554
|
const mode = this.getActiveMode();
|
|
554
|
-
const tooltips = mode.getTooltips(this.getModeProps(this.props)
|
|
555
|
+
const tooltips = mode.getTooltips(this.getModeProps(this.props));
|
|
555
556
|
|
|
556
557
|
const layer = new TextLayer({
|
|
557
558
|
getSize: DEFAULT_TOOLTIP_FONT_SIZE,
|
|
@@ -565,34 +566,34 @@ export class EditableGeoJsonLayer extends EditableLayer<
|
|
|
565
566
|
}
|
|
566
567
|
|
|
567
568
|
onLayerClick(event: ClickEvent): void {
|
|
568
|
-
this.getActiveMode().handleClick(event, this.getModeProps(this.props)
|
|
569
|
+
this.getActiveMode().handleClick(event, this.getModeProps(this.props));
|
|
569
570
|
}
|
|
570
571
|
|
|
571
572
|
onLayerDoubleClick(event: DoubleClickEvent): void {
|
|
572
573
|
if (this.getActiveMode().handleDoubleClick) {
|
|
573
|
-
this.getActiveMode().handleDoubleClick(event, this.getModeProps(this.props)
|
|
574
|
+
this.getActiveMode().handleDoubleClick(event, this.getModeProps(this.props));
|
|
574
575
|
}
|
|
575
576
|
}
|
|
576
577
|
|
|
577
578
|
onLayerKeyUp(event: KeyboardEvent): void {
|
|
578
|
-
this.getActiveMode().handleKeyUp(event, this.getModeProps(this.props)
|
|
579
|
+
this.getActiveMode().handleKeyUp(event, this.getModeProps(this.props));
|
|
579
580
|
}
|
|
580
581
|
|
|
581
582
|
onStartDragging(event: StartDraggingEvent): void {
|
|
582
|
-
this.getActiveMode().handleStartDragging(event, this.getModeProps(this.props)
|
|
583
|
+
this.getActiveMode().handleStartDragging(event, this.getModeProps(this.props));
|
|
583
584
|
}
|
|
584
585
|
|
|
585
586
|
onDragging(event: DraggingEvent): void {
|
|
586
|
-
this.getActiveMode().handleDragging(event, this.getModeProps(this.props)
|
|
587
|
+
this.getActiveMode().handleDragging(event, this.getModeProps(this.props));
|
|
587
588
|
}
|
|
588
589
|
|
|
589
590
|
onStopDragging(event: StopDraggingEvent): void {
|
|
590
|
-
this.getActiveMode().handleStopDragging(event, this.getModeProps(this.props)
|
|
591
|
+
this.getActiveMode().handleStopDragging(event, this.getModeProps(this.props));
|
|
591
592
|
}
|
|
592
593
|
|
|
593
594
|
onPointerMove(event: PointerMoveEvent): void {
|
|
594
595
|
this.setState({lastPointerMoveEvent: event});
|
|
595
|
-
this.getActiveMode().handlePointerMove(event, this.getModeProps(this.props)
|
|
596
|
+
this.getActiveMode().handlePointerMove(event, this.getModeProps(this.props));
|
|
596
597
|
}
|
|
597
598
|
|
|
598
599
|
getCursor({isDragging}: {isDragging: boolean}): null | 'grabbing' | 'grab' {
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import type {CompositeLayerProps, DefaultProps} from '@deck.gl/core';
|
|
8
8
|
import {CompositeLayer} from '@deck.gl/core';
|
|
9
9
|
import {PolygonLayer} from '@deck.gl/layers';
|
|
10
|
-
import {polygon} from '@turf/helpers';
|
|
10
|
+
import {featureCollection, polygon} from '@turf/helpers';
|
|
11
11
|
import turfBuffer from '@turf/buffer';
|
|
12
12
|
import turfDifference from '@turf/difference';
|
|
13
13
|
|
|
@@ -32,7 +32,7 @@ const MODE_CONFIG_MAP = {
|
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
35
|
-
interface SelectionLayerProps<DataT> extends CompositeLayerProps {
|
|
35
|
+
export interface SelectionLayerProps<DataT> extends CompositeLayerProps {
|
|
36
36
|
layerIds: any[];
|
|
37
37
|
onSelect: (info: any) => any;
|
|
38
38
|
selectionType: string | null;
|
|
@@ -121,7 +121,7 @@ export class SelectionLayer<DataT, ExtraPropsT> extends CompositeLayer<
|
|
|
121
121
|
try {
|
|
122
122
|
// turfDifference throws an exception if the polygon
|
|
123
123
|
// intersects with itself (TODO: check if true in all versions)
|
|
124
|
-
bigPolygon = turfDifference(bigBuffer, landPointsPoly);
|
|
124
|
+
bigPolygon = turfDifference(featureCollection([bigBuffer, landPointsPoly]));
|
|
125
125
|
} catch (e) {
|
|
126
126
|
// invalid selection polygon
|
|
127
127
|
console.log('turfDifference() error', e); // eslint-disable-line
|
package/src/index.ts
CHANGED
|
@@ -2,21 +2,6 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
export {ArrowStyles, DEFAULT_ARROWS, MAX_ARROWS} from './lib/style';
|
|
6
|
-
export {SELECTION_TYPE} from './lib/deck-renderer/deck-drawer';
|
|
7
|
-
|
|
8
|
-
export {Feature} from './lib/feature';
|
|
9
|
-
export {LayerMouseEvent} from './lib/layer-mouse-event';
|
|
10
|
-
|
|
11
|
-
export {NebulaLayer} from './lib/nebula-layer';
|
|
12
|
-
export {JunctionsLayer} from './lib/layers/junctions-layer';
|
|
13
|
-
export {TextsLayer} from './lib/layers/texts-layer';
|
|
14
|
-
export {SegmentsLayer} from './lib/layers/segments-layer';
|
|
15
|
-
|
|
16
|
-
export {NebulaCore} from './lib/nebula-core';
|
|
17
|
-
|
|
18
|
-
export {PROJECTED_PIXEL_SIZE_MULTIPLIER} from './lib/constants';
|
|
19
|
-
|
|
20
5
|
// Utils
|
|
21
6
|
export {toDeckColor} from './utils/utils';
|
|
22
7
|
|
|
@@ -53,10 +38,12 @@ export type {GeoJsonEditModeType} from './edit-modes/geojson-edit-mode';
|
|
|
53
38
|
export type {GeoJsonEditModeConstructor} from './edit-modes/geojson-edit-mode';
|
|
54
39
|
|
|
55
40
|
export type {EditableGeoJsonLayerProps} from './editable-layers/editable-geojson-layer';
|
|
41
|
+
export type {SelectionLayerProps} from './editable-layers/selection-layer';
|
|
56
42
|
|
|
57
43
|
export {GeoJsonEditMode} from './edit-modes/geojson-edit-mode';
|
|
58
44
|
|
|
59
45
|
// Alter modes
|
|
46
|
+
export {DeleteMode} from './edit-modes/delete-mode';
|
|
60
47
|
export {ModifyMode} from './edit-modes/modify-mode';
|
|
61
48
|
export {ResizeCircleMode} from './edit-modes/resize-circle-mode';
|
|
62
49
|
export {TranslateMode} from './edit-modes/translate-mode';
|
|
@@ -111,25 +98,18 @@ export type {
|
|
|
111
98
|
|
|
112
99
|
export type {
|
|
113
100
|
Position,
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
MultiLineStringCoordinates,
|
|
119
|
-
MultiPolygonCoordinates,
|
|
120
|
-
AnyCoordinates,
|
|
101
|
+
SimpleFeature,
|
|
102
|
+
SimpleFeatureCollection,
|
|
103
|
+
SimpleGeometry,
|
|
104
|
+
SimpleGeometryCoordinates,
|
|
121
105
|
Point,
|
|
122
106
|
LineString,
|
|
123
107
|
Polygon,
|
|
124
108
|
MultiPoint,
|
|
125
109
|
MultiLineString,
|
|
126
110
|
MultiPolygon,
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
BoundingBoxArray,
|
|
130
|
-
FeatureOf,
|
|
131
|
-
FeatureWithProps,
|
|
132
|
-
// Feature,
|
|
111
|
+
PolygonGeometry,
|
|
112
|
+
Feature,
|
|
133
113
|
FeatureCollection,
|
|
134
114
|
AnyGeoJson
|
|
135
115
|
} from './utils/geojson-types';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {SimpleFeature, SimpleFeatureCollection, Position} from '../utils/geojson-types';
|
|
2
2
|
import {
|
|
3
3
|
ClickEvent,
|
|
4
4
|
PointerMoveEvent,
|
|
@@ -35,7 +35,7 @@ export class CompositeModeHandler extends ModeHandler {
|
|
|
35
35
|
return result;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
setFeatureCollection(featureCollection:
|
|
38
|
+
setFeatureCollection(featureCollection: SimpleFeatureCollection): void {
|
|
39
39
|
this.handlers.forEach((handler) => handler.setFeatureCollection(featureCollection));
|
|
40
40
|
}
|
|
41
41
|
|
|
@@ -69,7 +69,7 @@ export class CompositeModeHandler extends ModeHandler {
|
|
|
69
69
|
return this._coalesce((handler) => handler.handleStopDragging(event));
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
getTentativeFeature():
|
|
72
|
+
getTentativeFeature(): SimpleFeature | null | undefined {
|
|
73
73
|
return this._coalesce((handler) => handler.getTentativeFeature());
|
|
74
74
|
}
|
|
75
75
|
|
|
@@ -76,7 +76,8 @@ export class Draw90DegreePolygonHandler extends ModeHandler {
|
|
|
76
76
|
geometry: {
|
|
77
77
|
type: 'LineString',
|
|
78
78
|
coordinates: [...clickSequence, p3]
|
|
79
|
-
}
|
|
79
|
+
},
|
|
80
|
+
properties: {}
|
|
80
81
|
});
|
|
81
82
|
} else {
|
|
82
83
|
// Draw a Polygon connecting all the clicked points with the hovered point
|
|
@@ -85,7 +86,8 @@ export class Draw90DegreePolygonHandler extends ModeHandler {
|
|
|
85
86
|
geometry: {
|
|
86
87
|
type: 'Polygon',
|
|
87
88
|
coordinates: [[...clickSequence, p3, clickSequence[0]]]
|
|
88
|
-
}
|
|
89
|
+
},
|
|
90
|
+
properties: {}
|
|
89
91
|
});
|
|
90
92
|
}
|
|
91
93
|
|
|
@@ -35,7 +35,6 @@ export class DrawCircleByBoundingBoxHandler extends TwoClickPolygonHandler {
|
|
|
35
35
|
const firstClickedPoint = clickSequence[0];
|
|
36
36
|
const centerCoordinates = getIntermediatePosition(firstClickedPoint, event.mapCoords);
|
|
37
37
|
const radius = Math.max(distance(firstClickedPoint, centerCoordinates), 0.001);
|
|
38
|
-
// @ts-expect-error turf types diff
|
|
39
38
|
this._setTentativeFeature(circle(centerCoordinates, radius, options));
|
|
40
39
|
|
|
41
40
|
return result;
|
|
@@ -34,7 +34,6 @@ export class DrawCircleFromCenterHandler extends TwoClickPolygonHandler {
|
|
|
34
34
|
|
|
35
35
|
const centerCoordinates = clickSequence[0];
|
|
36
36
|
const radius = Math.max(distance(centerCoordinates, event.mapCoords), 0.001);
|
|
37
|
-
// @ts-expect-error turf types diff
|
|
38
37
|
this._setTentativeFeature(circle(centerCoordinates, radius, options));
|
|
39
38
|
|
|
40
39
|
return result;
|
|
@@ -37,8 +37,7 @@ export class DrawEllipseByBoundingBoxHandler extends TwoClickPolygonHandler {
|
|
|
37
37
|
|
|
38
38
|
const xSemiAxis = Math.max(distance(point(polygonPoints[0]), point(polygonPoints[1])), 0.001);
|
|
39
39
|
const ySemiAxis = Math.max(distance(point(polygonPoints[0]), point(polygonPoints[3])), 0.001);
|
|
40
|
-
|
|
41
|
-
this._setTentativeFeature(ellipse(centerCoordinates, xSemiAxis, ySemiAxis));
|
|
40
|
+
this._setTentativeFeature(ellipse(centerCoordinates, xSemiAxis, ySemiAxis, {}));
|
|
42
41
|
|
|
43
42
|
return result;
|
|
44
43
|
}
|