@deck.gl-community/editable-layers 9.2.0-beta.6 → 9.2.5
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 +5 -5
- package/dist/edit-modes/draw-polygon-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-polygon-mode.js +48 -52
- 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 +25 -23
- 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 +14 -18
- 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 +1 -4
- 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 +20 -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 +430 -989
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +5 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -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 +1 -1
- package/dist/utils/utils.js.map +1 -1
- package/dist/widgets/edit-mode-tray-widget.d.ts +1 -0
- package/dist/widgets/edit-mode-tray-widget.d.ts.map +1 -1
- package/dist/widgets/edit-mode-tray-widget.js +1 -0
- package/dist/widgets/edit-mode-tray-widget.js.map +1 -1
- package/dist/widgets/editor-toolbar-widget.d.ts +40 -0
- package/dist/widgets/editor-toolbar-widget.d.ts.map +1 -0
- package/dist/widgets/editor-toolbar-widget.js +170 -0
- package/dist/widgets/editor-toolbar-widget.js.map +1 -0
- package/package.json +47 -44
- package/src/edit-modes/draw-90degree-polygon-mode.ts +8 -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 +10 -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 +103 -124
- 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 +2 -3
- package/src/edit-modes/duplicate-mode.ts +2 -2
- package/src/edit-modes/extend-line-string-mode.ts +11 -4
- package/src/edit-modes/extrude-mode.ts +7 -7
- package/src/edit-modes/geojson-edit-mode.ts +28 -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 +42 -30
- package/src/edit-modes/resize-circle-mode.ts +10 -7
- package/src/edit-modes/rotate-mode.ts +11 -22
- package/src/edit-modes/scale-mode.ts +14 -19
- package/src/edit-modes/snappable-mode.ts +10 -5
- package/src/edit-modes/split-polygon-mode.ts +17 -15
- package/src/edit-modes/three-click-polygon-mode.ts +30 -33
- package/src/edit-modes/translate-mode.ts +15 -12
- package/src/edit-modes/two-click-polygon-mode.ts +13 -7
- package/src/edit-modes/types.ts +4 -4
- package/src/edit-modes/utils.ts +13 -17
- package/src/editable-layers/editable-geojson-layer.ts +35 -18
- package/src/editable-layers/selection-layer.ts +3 -3
- package/src/index.ts +11 -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 +34 -20
- package/src/mode-handlers/modify-handler.ts +2 -4
- package/src/mode-handlers/rotate-handler.ts +5 -12
- package/src/mode-handlers/scale-handler.ts +6 -14
- package/src/mode-handlers/snappable-handler.ts +3 -3
- package/src/mode-handlers/split-polygon-handler.ts +8 -7
- package/src/mode-handlers/translate-handler.ts +3 -5
- package/src/utils/geojson-types.ts +31 -54
- package/src/utils/translate-from-center.ts +13 -31
- package/src/utils/utils.ts +5 -5
- package/src/widgets/edit-mode-tray-widget.tsx +2 -6
- package/src/widgets/editor-toolbar-widget.tsx +348 -0
- 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
|
@@ -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,26 @@ export class EditableGeoJsonLayer extends EditableLayer<
|
|
|
332
333
|
},
|
|
333
334
|
|
|
334
335
|
updateTriggers: {
|
|
335
|
-
getLineColor: [
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
336
|
+
getLineColor: [
|
|
337
|
+
this.props.updateTriggers.getLineColor,
|
|
338
|
+
this.props.selectedFeatureIndexes,
|
|
339
|
+
this.props.mode
|
|
340
|
+
],
|
|
341
|
+
getFillColor: [
|
|
342
|
+
this.props.updateTriggers.getFillColor,
|
|
343
|
+
this.props.selectedFeatureIndexes,
|
|
344
|
+
this.props.mode
|
|
345
|
+
],
|
|
346
|
+
getPointRadius: [
|
|
347
|
+
this.props.updateTriggers.getPointRadius,
|
|
348
|
+
this.props.selectedFeatureIndexes,
|
|
349
|
+
this.props.mode
|
|
350
|
+
],
|
|
351
|
+
getLineWidth: [
|
|
352
|
+
this.props.updateTriggers.getLineWidth,
|
|
353
|
+
this.props.selectedFeatureIndexes,
|
|
354
|
+
this.props.mode
|
|
355
|
+
]
|
|
339
356
|
}
|
|
340
357
|
});
|
|
341
358
|
|
|
@@ -414,14 +431,14 @@ export class EditableGeoJsonLayer extends EditableLayer<
|
|
|
414
431
|
this.setState({selectedFeatures});
|
|
415
432
|
}
|
|
416
433
|
|
|
417
|
-
getModeProps(props: EditableGeoJsonLayerProps<
|
|
434
|
+
getModeProps<DataT>(props: EditableGeoJsonLayerProps<DataT>): ModeProps<DataT> {
|
|
418
435
|
return {
|
|
419
436
|
modeConfig: props.modeConfig,
|
|
420
437
|
data: props.data,
|
|
421
438
|
selectedIndexes: props.selectedFeatureIndexes,
|
|
422
439
|
lastPointerMoveEvent: this.state.lastPointerMoveEvent,
|
|
423
440
|
cursor: this.state.cursor,
|
|
424
|
-
onEdit: (editAction
|
|
441
|
+
onEdit: (editAction) => {
|
|
425
442
|
// Force a re-render
|
|
426
443
|
// This supports double-click where we need to ensure that there's a re-render between the two clicks
|
|
427
444
|
// even though the data wasn't changed, just the internal tentative feature.
|
|
@@ -551,7 +568,7 @@ export class EditableGeoJsonLayer extends EditableLayer<
|
|
|
551
568
|
|
|
552
569
|
createTooltipsLayers() {
|
|
553
570
|
const mode = this.getActiveMode();
|
|
554
|
-
const tooltips = mode.getTooltips(this.getModeProps(this.props)
|
|
571
|
+
const tooltips = mode.getTooltips(this.getModeProps(this.props));
|
|
555
572
|
|
|
556
573
|
const layer = new TextLayer({
|
|
557
574
|
getSize: DEFAULT_TOOLTIP_FONT_SIZE,
|
|
@@ -565,34 +582,34 @@ export class EditableGeoJsonLayer extends EditableLayer<
|
|
|
565
582
|
}
|
|
566
583
|
|
|
567
584
|
onLayerClick(event: ClickEvent): void {
|
|
568
|
-
this.getActiveMode().handleClick(event, this.getModeProps(this.props)
|
|
585
|
+
this.getActiveMode().handleClick(event, this.getModeProps(this.props));
|
|
569
586
|
}
|
|
570
587
|
|
|
571
588
|
onLayerDoubleClick(event: DoubleClickEvent): void {
|
|
572
589
|
if (this.getActiveMode().handleDoubleClick) {
|
|
573
|
-
this.getActiveMode().handleDoubleClick(event, this.getModeProps(this.props)
|
|
590
|
+
this.getActiveMode().handleDoubleClick(event, this.getModeProps(this.props));
|
|
574
591
|
}
|
|
575
592
|
}
|
|
576
593
|
|
|
577
594
|
onLayerKeyUp(event: KeyboardEvent): void {
|
|
578
|
-
this.getActiveMode().handleKeyUp(event, this.getModeProps(this.props)
|
|
595
|
+
this.getActiveMode().handleKeyUp(event, this.getModeProps(this.props));
|
|
579
596
|
}
|
|
580
597
|
|
|
581
598
|
onStartDragging(event: StartDraggingEvent): void {
|
|
582
|
-
this.getActiveMode().handleStartDragging(event, this.getModeProps(this.props)
|
|
599
|
+
this.getActiveMode().handleStartDragging(event, this.getModeProps(this.props));
|
|
583
600
|
}
|
|
584
601
|
|
|
585
602
|
onDragging(event: DraggingEvent): void {
|
|
586
|
-
this.getActiveMode().handleDragging(event, this.getModeProps(this.props)
|
|
603
|
+
this.getActiveMode().handleDragging(event, this.getModeProps(this.props));
|
|
587
604
|
}
|
|
588
605
|
|
|
589
606
|
onStopDragging(event: StopDraggingEvent): void {
|
|
590
|
-
this.getActiveMode().handleStopDragging(event, this.getModeProps(this.props)
|
|
607
|
+
this.getActiveMode().handleStopDragging(event, this.getModeProps(this.props));
|
|
591
608
|
}
|
|
592
609
|
|
|
593
610
|
onPointerMove(event: PointerMoveEvent): void {
|
|
594
611
|
this.setState({lastPointerMoveEvent: event});
|
|
595
|
-
this.getActiveMode().handlePointerMove(event, this.getModeProps(this.props)
|
|
612
|
+
this.getActiveMode().handlePointerMove(event, this.getModeProps(this.props));
|
|
596
613
|
}
|
|
597
614
|
|
|
598
615
|
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
|
|
|
@@ -37,6 +22,9 @@ export type {
|
|
|
37
22
|
EditModeTrayWidgetSelectEvent
|
|
38
23
|
} from './widgets/edit-mode-tray-widget';
|
|
39
24
|
|
|
25
|
+
export {EditorToolbarWidget} from './widgets/editor-toolbar-widget';
|
|
26
|
+
export type {EditorToolbarWidgetProps, BooleanOperation} from './widgets/editor-toolbar-widget';
|
|
27
|
+
|
|
40
28
|
// Layers move to deck.gl-community/layers?
|
|
41
29
|
export {JunctionScatterplotLayer} from './editable-layers/junction-scatterplot-layer';
|
|
42
30
|
|
|
@@ -53,10 +41,12 @@ export type {GeoJsonEditModeType} from './edit-modes/geojson-edit-mode';
|
|
|
53
41
|
export type {GeoJsonEditModeConstructor} from './edit-modes/geojson-edit-mode';
|
|
54
42
|
|
|
55
43
|
export type {EditableGeoJsonLayerProps} from './editable-layers/editable-geojson-layer';
|
|
44
|
+
export type {SelectionLayerProps} from './editable-layers/selection-layer';
|
|
56
45
|
|
|
57
46
|
export {GeoJsonEditMode} from './edit-modes/geojson-edit-mode';
|
|
58
47
|
|
|
59
48
|
// Alter modes
|
|
49
|
+
export {DeleteMode} from './edit-modes/delete-mode';
|
|
60
50
|
export {ModifyMode} from './edit-modes/modify-mode';
|
|
61
51
|
export {ResizeCircleMode} from './edit-modes/resize-circle-mode';
|
|
62
52
|
export {TranslateMode} from './edit-modes/translate-mode';
|
|
@@ -111,25 +101,18 @@ export type {
|
|
|
111
101
|
|
|
112
102
|
export type {
|
|
113
103
|
Position,
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
MultiLineStringCoordinates,
|
|
119
|
-
MultiPolygonCoordinates,
|
|
120
|
-
AnyCoordinates,
|
|
104
|
+
SimpleFeature,
|
|
105
|
+
SimpleFeatureCollection,
|
|
106
|
+
SimpleGeometry,
|
|
107
|
+
SimpleGeometryCoordinates,
|
|
121
108
|
Point,
|
|
122
109
|
LineString,
|
|
123
110
|
Polygon,
|
|
124
111
|
MultiPoint,
|
|
125
112
|
MultiLineString,
|
|
126
113
|
MultiPolygon,
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
BoundingBoxArray,
|
|
130
|
-
FeatureOf,
|
|
131
|
-
FeatureWithProps,
|
|
132
|
-
// Feature,
|
|
114
|
+
PolygonGeometry,
|
|
115
|
+
Feature,
|
|
133
116
|
FeatureCollection,
|
|
134
117
|
AnyGeoJson
|
|
135
118
|
} 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
|
}
|
|
@@ -32,7 +32,8 @@ export class DrawEllipseUsingThreePointsHandler extends ThreeClickPolygonHandler
|
|
|
32
32
|
geometry: {
|
|
33
33
|
type: 'LineString',
|
|
34
34
|
coordinates: [clickSequence[0], mapCoords]
|
|
35
|
-
}
|
|
35
|
+
},
|
|
36
|
+
properties: {}
|
|
36
37
|
});
|
|
37
38
|
} else if (clickSequence.length === 2) {
|
|
38
39
|
const [p1, p2] = clickSequence;
|
|
@@ -41,7 +42,7 @@ export class DrawEllipseUsingThreePointsHandler extends ThreeClickPolygonHandler
|
|
|
41
42
|
const xSemiAxis = Math.max(distance(centerCoordinates, point(mapCoords)), 0.001);
|
|
42
43
|
const ySemiAxis = Math.max(distance(p1, p2), 0.001) / 2;
|
|
43
44
|
const options = {angle: bearing(p1, p2)};
|
|
44
|
-
|
|
45
|
+
|
|
45
46
|
this._setTentativeFeature(ellipse(centerCoordinates, xSemiAxis, ySemiAxis, options));
|
|
46
47
|
}
|
|
47
48
|
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import {SimpleGeometry} from '../utils/geojson-types';
|
|
6
6
|
import {ClickEvent} from '../edit-modes/types';
|
|
7
7
|
import {EditAction, ModeHandler} from './mode-handler';
|
|
8
8
|
|
|
9
9
|
// TODO edit-modes: delete handlers once EditMode fully implemented
|
|
10
10
|
export class DrawPointHandler extends ModeHandler {
|
|
11
11
|
handleClick({mapCoords}: ClickEvent): EditAction | null | undefined {
|
|
12
|
-
const geometry:
|
|
12
|
+
const geometry: SimpleGeometry = {
|
|
13
13
|
type: 'Point',
|
|
14
14
|
coordinates: mapCoords
|
|
15
15
|
};
|
|
@@ -107,7 +107,8 @@ export class DrawPolygonHandler extends ModeHandler {
|
|
|
107
107
|
geometry: {
|
|
108
108
|
type: 'LineString',
|
|
109
109
|
coordinates: [...clickSequence, mapCoords]
|
|
110
|
-
}
|
|
110
|
+
},
|
|
111
|
+
properties: {}
|
|
111
112
|
});
|
|
112
113
|
} else {
|
|
113
114
|
// Draw a Polygon connecting all the clicked points with the hovered point
|
|
@@ -116,7 +117,8 @@ export class DrawPolygonHandler extends ModeHandler {
|
|
|
116
117
|
geometry: {
|
|
117
118
|
type: 'Polygon',
|
|
118
119
|
coordinates: [[...clickSequence, mapCoords, clickSequence[0]]]
|
|
119
|
-
}
|
|
120
|
+
},
|
|
121
|
+
properties: {}
|
|
120
122
|
});
|
|
121
123
|
}
|
|
122
124
|
|
|
@@ -24,7 +24,6 @@ export class DrawRectangleHandler extends TwoClickPolygonHandler {
|
|
|
24
24
|
const corner1 = clickSequence[0];
|
|
25
25
|
const corner2 = event.mapCoords;
|
|
26
26
|
|
|
27
|
-
// @ts-expect-error turf type diff
|
|
28
27
|
this._setTentativeFeature(bboxPolygon([corner1[0], corner1[1], corner2[0], corner2[1]]));
|
|
29
28
|
|
|
30
29
|
return result;
|
|
@@ -30,7 +30,8 @@ export class DrawRectangleUsingThreePointsHandler extends ThreeClickPolygonHandl
|
|
|
30
30
|
geometry: {
|
|
31
31
|
type: 'LineString',
|
|
32
32
|
coordinates: [clickSequence[0], mapCoords]
|
|
33
|
-
}
|
|
33
|
+
},
|
|
34
|
+
properties: {}
|
|
34
35
|
});
|
|
35
36
|
} else if (clickSequence.length === 2) {
|
|
36
37
|
const lineString: LineString = {
|
|
@@ -55,7 +56,8 @@ export class DrawRectangleUsingThreePointsHandler extends ThreeClickPolygonHandl
|
|
|
55
56
|
p1
|
|
56
57
|
]
|
|
57
58
|
]
|
|
58
|
-
}
|
|
59
|
+
},
|
|
60
|
+
properties: {}
|
|
59
61
|
});
|
|
60
62
|
}
|
|
61
63
|
|
|
@@ -4,11 +4,21 @@
|
|
|
4
4
|
|
|
5
5
|
// TODO edit-modes: delete handlers once EditMode fully implemented
|
|
6
6
|
|
|
7
|
+
import {featureCollection as turfFeatureCollection} from '@turf/helpers';
|
|
7
8
|
import turfUnion from '@turf/union';
|
|
8
9
|
import turfDifference from '@turf/difference';
|
|
9
10
|
import turfIntersect from '@turf/intersect';
|
|
10
11
|
|
|
11
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
FeatureCollection,
|
|
14
|
+
Feature,
|
|
15
|
+
Polygon,
|
|
16
|
+
SimpleGeometry,
|
|
17
|
+
Position,
|
|
18
|
+
PolygonGeometry,
|
|
19
|
+
SimpleFeatureCollection,
|
|
20
|
+
SimpleFeature
|
|
21
|
+
} from '../utils/geojson-types';
|
|
12
22
|
|
|
13
23
|
import {
|
|
14
24
|
ClickEvent,
|
|
@@ -29,7 +39,7 @@ export type EditHandle = {
|
|
|
29
39
|
};
|
|
30
40
|
|
|
31
41
|
export type EditAction = {
|
|
32
|
-
updatedData:
|
|
42
|
+
updatedData: SimpleFeatureCollection;
|
|
33
43
|
editType: string;
|
|
34
44
|
featureIndexes: number[];
|
|
35
45
|
editContext: any;
|
|
@@ -38,12 +48,12 @@ export type EditAction = {
|
|
|
38
48
|
export class ModeHandler {
|
|
39
49
|
// TODO: add underscore
|
|
40
50
|
featureCollection: ImmutableFeatureCollection = undefined!;
|
|
41
|
-
_tentativeFeature:
|
|
51
|
+
_tentativeFeature: SimpleFeature | null | undefined;
|
|
42
52
|
_modeConfig: any = null;
|
|
43
53
|
_selectedFeatureIndexes: number[] = [];
|
|
44
54
|
_clickSequence: Position[] = [];
|
|
45
55
|
|
|
46
|
-
constructor(featureCollection?:
|
|
56
|
+
constructor(featureCollection?: SimpleFeatureCollection) {
|
|
47
57
|
if (featureCollection) {
|
|
48
58
|
this.setFeatureCollection(featureCollection);
|
|
49
59
|
}
|
|
@@ -57,14 +67,14 @@ export class ModeHandler {
|
|
|
57
67
|
return this.featureCollection;
|
|
58
68
|
}
|
|
59
69
|
|
|
60
|
-
getSelectedFeature():
|
|
70
|
+
getSelectedFeature(): SimpleFeature | null | undefined {
|
|
61
71
|
if (this._selectedFeatureIndexes.length === 1) {
|
|
62
72
|
return this.featureCollection.getObject().features[this._selectedFeatureIndexes[0]];
|
|
63
73
|
}
|
|
64
74
|
return null;
|
|
65
75
|
}
|
|
66
76
|
|
|
67
|
-
getSelectedGeometry():
|
|
77
|
+
getSelectedGeometry(): SimpleGeometry | null | undefined {
|
|
68
78
|
const feature = this.getSelectedFeature();
|
|
69
79
|
if (feature) {
|
|
70
80
|
return feature.geometry;
|
|
@@ -72,7 +82,7 @@ export class ModeHandler {
|
|
|
72
82
|
return null;
|
|
73
83
|
}
|
|
74
84
|
|
|
75
|
-
getSelectedFeaturesAsFeatureCollection():
|
|
85
|
+
getSelectedFeaturesAsFeatureCollection(): SimpleFeatureCollection {
|
|
76
86
|
const {features} = this.featureCollection.getObject();
|
|
77
87
|
const selectedFeatures = this.getSelectedFeatureIndexes().map(
|
|
78
88
|
(selectedIndex) => features[selectedIndex]
|
|
@@ -83,7 +93,7 @@ export class ModeHandler {
|
|
|
83
93
|
};
|
|
84
94
|
}
|
|
85
95
|
|
|
86
|
-
setFeatureCollection(featureCollection:
|
|
96
|
+
setFeatureCollection(featureCollection: SimpleFeatureCollection): void {
|
|
87
97
|
this.featureCollection = new ImmutableFeatureCollection(featureCollection);
|
|
88
98
|
}
|
|
89
99
|
|
|
@@ -121,12 +131,12 @@ export class ModeHandler {
|
|
|
121
131
|
this._clickSequence = [];
|
|
122
132
|
}
|
|
123
133
|
|
|
124
|
-
getTentativeFeature():
|
|
134
|
+
getTentativeFeature(): SimpleFeature | null | undefined {
|
|
125
135
|
return this._tentativeFeature;
|
|
126
136
|
}
|
|
127
137
|
|
|
128
138
|
// TODO: remove the underscore
|
|
129
|
-
_setTentativeFeature(tentativeFeature:
|
|
139
|
+
_setTentativeFeature(tentativeFeature: SimpleFeature | null | undefined): void {
|
|
130
140
|
this._tentativeFeature = tentativeFeature;
|
|
131
141
|
if (!tentativeFeature) {
|
|
132
142
|
// Reset the click sequence
|
|
@@ -154,7 +164,7 @@ export class ModeHandler {
|
|
|
154
164
|
return selectedFeatureIndexes.some((index) => pickedIndexes.includes(index));
|
|
155
165
|
}
|
|
156
166
|
|
|
157
|
-
getAddFeatureAction(geometry:
|
|
167
|
+
getAddFeatureAction(geometry: SimpleGeometry): EditAction {
|
|
158
168
|
// Unsure why flow can't deal with Geometry type, but there I fixed it
|
|
159
169
|
const geometryAsAny: any = geometry;
|
|
160
170
|
|
|
@@ -218,21 +228,25 @@ export class ModeHandler {
|
|
|
218
228
|
return null;
|
|
219
229
|
}
|
|
220
230
|
|
|
221
|
-
const feature = {
|
|
231
|
+
const feature: Feature<Polygon> = {
|
|
222
232
|
type: 'Feature',
|
|
223
|
-
geometry
|
|
233
|
+
geometry,
|
|
234
|
+
properties: {}
|
|
224
235
|
};
|
|
225
236
|
|
|
226
237
|
let updatedGeometry;
|
|
227
238
|
if (modeConfig.booleanOperation === 'union') {
|
|
228
|
-
|
|
229
|
-
|
|
239
|
+
updatedGeometry = turfUnion(
|
|
240
|
+
turfFeatureCollection([selectedFeature as Feature<PolygonGeometry>, feature])
|
|
241
|
+
);
|
|
230
242
|
} else if (modeConfig.booleanOperation === 'difference') {
|
|
231
|
-
|
|
232
|
-
|
|
243
|
+
updatedGeometry = turfDifference(
|
|
244
|
+
turfFeatureCollection([selectedFeature as Feature<PolygonGeometry>, feature])
|
|
245
|
+
);
|
|
233
246
|
} else if (modeConfig.booleanOperation === 'intersection') {
|
|
234
|
-
|
|
235
|
-
|
|
247
|
+
updatedGeometry = turfIntersect(
|
|
248
|
+
turfFeatureCollection([selectedFeature as Feature<PolygonGeometry>, feature])
|
|
249
|
+
);
|
|
236
250
|
} else {
|
|
237
251
|
// eslint-disable-next-line no-console,no-undef
|
|
238
252
|
console.warn(`Invalid booleanOperation ${modeConfig.booleanOperation}`);
|
|
@@ -307,7 +321,7 @@ export function getIntermediatePosition(position1: Position, position2: Position
|
|
|
307
321
|
}
|
|
308
322
|
|
|
309
323
|
export function getEditHandlesForGeometry(
|
|
310
|
-
geometry:
|
|
324
|
+
geometry: SimpleGeometry,
|
|
311
325
|
featureIndex: number,
|
|
312
326
|
editHandleType: EditHandleType = 'existing'
|
|
313
327
|
): EditHandle[] {
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import nearestPointOnLine from '@turf/nearest-point-on-line';
|
|
6
6
|
import {point, lineString as toLineString} from '@turf/helpers';
|
|
7
|
-
import {Position,
|
|
7
|
+
import {Position, Feature, Point, LineString} from '../utils/geojson-types';
|
|
8
8
|
import {
|
|
9
9
|
recursivelyTraverseNestedArrays,
|
|
10
10
|
nearestPointOnProjectedLine,
|
|
@@ -66,7 +66,6 @@ export class ModifyHandler extends ModeHandler {
|
|
|
66
66
|
const lineStringFeature = toLineString(lineString);
|
|
67
67
|
|
|
68
68
|
const candidateIntermediatePoint = this.nearestPointOnLine(
|
|
69
|
-
// @ts-expect-error turf type diff
|
|
70
69
|
lineStringFeature,
|
|
71
70
|
referencePoint
|
|
72
71
|
);
|
|
@@ -102,7 +101,7 @@ export class ModifyHandler extends ModeHandler {
|
|
|
102
101
|
}
|
|
103
102
|
|
|
104
103
|
// turf.js does not support elevation for nearestPointOnLine
|
|
105
|
-
nearestPointOnLine(line:
|
|
104
|
+
nearestPointOnLine(line: Feature<LineString>, inPoint: Feature<Point>): NearestPointType {
|
|
106
105
|
const {coordinates} = line.geometry;
|
|
107
106
|
if (coordinates.some((coord) => coord.length > 2)) {
|
|
108
107
|
const modeConfig = this.getModeConfig();
|
|
@@ -115,7 +114,6 @@ export class ModifyHandler extends ModeHandler {
|
|
|
115
114
|
'Editing 3D point but modeConfig.viewport not provided. Falling back to 2D logic.'
|
|
116
115
|
);
|
|
117
116
|
}
|
|
118
|
-
// @ts-expect-error geojson types diff
|
|
119
117
|
return nearestPointOnLine(line, inPoint);
|
|
120
118
|
}
|
|
121
119
|
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
import turfCentroid from '@turf/centroid';
|
|
6
6
|
import turfBearing from '@turf/bearing';
|
|
7
7
|
import turfTransformRotate from '@turf/transform-rotate';
|
|
8
|
-
import {
|
|
8
|
+
import {SimpleFeatureCollection, Position} from '../utils/geojson-types';
|
|
9
9
|
import {PointerMoveEvent, StartDraggingEvent, StopDraggingEvent} from '../edit-modes/types';
|
|
10
10
|
import {EditAction, ModeHandler} from './mode-handler';
|
|
11
11
|
|
|
12
12
|
// TODO edit-modes: delete handlers once EditMode fully implemented
|
|
13
13
|
export class RotateHandler extends ModeHandler {
|
|
14
14
|
_isRotatable: boolean = undefined!;
|
|
15
|
-
_geometryBeingRotated:
|
|
15
|
+
_geometryBeingRotated: SimpleFeatureCollection | null | undefined;
|
|
16
16
|
|
|
17
17
|
handlePointerMove(event: PointerMoveEvent): {
|
|
18
18
|
editAction: EditAction | null | undefined;
|
|
@@ -66,17 +66,10 @@ export class RotateHandler extends ModeHandler {
|
|
|
66
66
|
|
|
67
67
|
getRotateAction(startDragPoint: Position, currentPoint: Position, editType: string): EditAction {
|
|
68
68
|
const startPosition = startDragPoint;
|
|
69
|
-
// @ts-expect-error turf types diff
|
|
70
69
|
const centroid = turfCentroid(this._geometryBeingRotated);
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
// @ts-expect-error turf type diff
|
|
75
|
-
const rotatedFeatures: FeatureCollection = turfTransformRotate(
|
|
76
|
-
// @ts-expect-error turf type diff
|
|
77
|
-
this._geometryBeingRotated,
|
|
78
|
-
angle
|
|
79
|
-
);
|
|
70
|
+
const angle = getRotationAngle(centroid.geometry.coordinates, startPosition, currentPoint);
|
|
71
|
+
|
|
72
|
+
const rotatedFeatures = turfTransformRotate(this._geometryBeingRotated, angle);
|
|
80
73
|
|
|
81
74
|
let updatedData = this.getImmutableFeatureCollection();
|
|
82
75
|
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
import turfCentroid from '@turf/centroid';
|
|
6
6
|
import turfDistance from '@turf/distance';
|
|
7
7
|
import turfTransformScale from '@turf/transform-scale';
|
|
8
|
-
import {
|
|
8
|
+
import {SimpleFeatureCollection, Position, SimpleGeometry} from '../utils/geojson-types';
|
|
9
9
|
import {PointerMoveEvent, StartDraggingEvent, StopDraggingEvent} from '../edit-modes/types';
|
|
10
10
|
import {EditAction, ModeHandler} from './mode-handler';
|
|
11
11
|
|
|
12
12
|
// TODO edit-modes: delete handlers once EditMode fully implemented
|
|
13
13
|
export class ScaleHandler extends ModeHandler {
|
|
14
14
|
_isScalable: boolean = undefined!;
|
|
15
|
-
_geometryBeingScaled:
|
|
15
|
+
_geometryBeingScaled: SimpleFeatureCollection | null | undefined;
|
|
16
16
|
|
|
17
17
|
handlePointerMove(event: PointerMoveEvent): {
|
|
18
18
|
editAction: EditAction | null | undefined;
|
|
@@ -66,19 +66,11 @@ export class ScaleHandler extends ModeHandler {
|
|
|
66
66
|
|
|
67
67
|
getScaleAction(startDragPoint: Position, currentPoint: Position, editType: string): EditAction {
|
|
68
68
|
const startPosition = startDragPoint;
|
|
69
|
-
// @ts-expect-error turf types diff
|
|
70
69
|
const centroid = turfCentroid(this._geometryBeingScaled);
|
|
71
|
-
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
// @ts-expect-error turf type diff
|
|
76
|
-
this._geometryBeingScaled,
|
|
77
|
-
factor,
|
|
78
|
-
{
|
|
79
|
-
origin: centroid
|
|
80
|
-
}
|
|
81
|
-
);
|
|
70
|
+
const factor = getScaleFactor(centroid.geometry.coordinates, startPosition, currentPoint);
|
|
71
|
+
const scaledFeatures = turfTransformScale(this._geometryBeingScaled, factor, {
|
|
72
|
+
origin: centroid
|
|
73
|
+
});
|
|
82
74
|
|
|
83
75
|
let updatedData = this.getImmutableFeatureCollection();
|
|
84
76
|
|