@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
package/dist/index.cjs
CHANGED
|
@@ -34,9 +34,8 @@ var __publicField = (obj, key, value) => {
|
|
|
34
34
|
// dist/index.js
|
|
35
35
|
var dist_exports = {};
|
|
36
36
|
__export(dist_exports, {
|
|
37
|
-
ArrowStyles: () => ArrowStyles,
|
|
38
37
|
CompositeMode: () => CompositeMode,
|
|
39
|
-
|
|
38
|
+
DeleteMode: () => DeleteMode,
|
|
40
39
|
Draw90DegreePolygonMode: () => Draw90DegreePolygonMode,
|
|
41
40
|
DrawCircleByDiameterMode: () => DrawCircleByDiameterMode,
|
|
42
41
|
DrawCircleFromCenterMode: () => DrawCircleFromCenterMode,
|
|
@@ -55,33 +54,24 @@ __export(dist_exports, {
|
|
|
55
54
|
EditModeTrayWidget: () => EditModeTrayWidget,
|
|
56
55
|
EditableGeoJsonLayer: () => EditableGeoJsonLayer,
|
|
57
56
|
EditableH3ClusterLayer: () => EditableH3ClusterLayer,
|
|
57
|
+
EditorToolbarWidget: () => EditorToolbarWidget,
|
|
58
58
|
ElevatedEditHandleLayer: () => ElevatedEditHandleLayer,
|
|
59
59
|
ElevationMode: () => ElevationMode,
|
|
60
60
|
ExtendLineStringMode: () => ExtendLineStringMode,
|
|
61
61
|
ExtrudeMode: () => ExtrudeMode,
|
|
62
|
-
Feature: () => Feature,
|
|
63
62
|
GeoJsonEditMode: () => GeoJsonEditMode,
|
|
64
63
|
ImmutableFeatureCollection: () => ImmutableFeatureCollection,
|
|
65
64
|
JunctionScatterplotLayer: () => JunctionScatterplotLayer,
|
|
66
|
-
JunctionsLayer: () => JunctionsLayer,
|
|
67
|
-
LayerMouseEvent: () => LayerMouseEvent,
|
|
68
|
-
MAX_ARROWS: () => MAX_ARROWS,
|
|
69
65
|
MeasureAngleMode: () => MeasureAngleMode,
|
|
70
66
|
MeasureAreaMode: () => MeasureAreaMode,
|
|
71
67
|
MeasureDistanceMode: () => MeasureDistanceMode,
|
|
72
68
|
ModifyMode: () => ModifyMode,
|
|
73
|
-
NebulaCore: () => NebulaCore,
|
|
74
|
-
NebulaLayer: () => NebulaLayer,
|
|
75
|
-
PROJECTED_PIXEL_SIZE_MULTIPLIER: () => PROJECTED_PIXEL_SIZE_MULTIPLIER,
|
|
76
69
|
ResizeCircleMode: () => ResizeCircleMode,
|
|
77
70
|
RotateMode: () => RotateMode,
|
|
78
|
-
SELECTION_TYPE: () => SELECTION_TYPE,
|
|
79
71
|
ScaleMode: () => ScaleMode,
|
|
80
|
-
SegmentsLayer: () => SegmentsLayer,
|
|
81
72
|
SelectionLayer: () => SelectionLayer,
|
|
82
73
|
SnappableMode: () => SnappableMode,
|
|
83
74
|
SplitPolygonMode: () => SplitPolygonMode,
|
|
84
|
-
TextsLayer: () => TextsLayer,
|
|
85
75
|
TransformMode: () => TransformMode,
|
|
86
76
|
TranslateMode: () => TranslateMode,
|
|
87
77
|
ViewMode: () => ViewMode,
|
|
@@ -93,302 +83,6 @@ __export(dist_exports, {
|
|
|
93
83
|
});
|
|
94
84
|
module.exports = __toCommonJS(dist_exports);
|
|
95
85
|
|
|
96
|
-
// dist/lib/style.js
|
|
97
|
-
var ArrowStyles = {
|
|
98
|
-
NONE: 0,
|
|
99
|
-
FORWARD: 1,
|
|
100
|
-
BACKWARD: 2,
|
|
101
|
-
BOTH: 3
|
|
102
|
-
};
|
|
103
|
-
var DEFAULT_ARROWS = 1;
|
|
104
|
-
var MAX_ARROWS = 3;
|
|
105
|
-
var DEFAULT_STYLE = {
|
|
106
|
-
arrowColor: [0, 0, 0, 1],
|
|
107
|
-
arrowCount: DEFAULT_ARROWS,
|
|
108
|
-
arrowStyle: ArrowStyles.NONE,
|
|
109
|
-
fillColor: [0, 0, 0, 1],
|
|
110
|
-
lineColor: [0, 0, 0, 1],
|
|
111
|
-
lineWidthMeters: 5,
|
|
112
|
-
outlineRadiusMeters: 0,
|
|
113
|
-
opacity: 1,
|
|
114
|
-
zLevel: 0
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
// dist/lib/deck-renderer/deck-drawer.js
|
|
118
|
-
var import_layers = require("@deck.gl/layers");
|
|
119
|
-
var import_helpers = require("@turf/helpers");
|
|
120
|
-
var import_bbox = __toESM(require("@turf/bbox"), 1);
|
|
121
|
-
var import_bbox_polygon = __toESM(require("@turf/bbox-polygon"), 1);
|
|
122
|
-
var import_buffer = __toESM(require("@turf/buffer"), 1);
|
|
123
|
-
var import_difference = __toESM(require("@turf/difference"), 1);
|
|
124
|
-
var import_distance = __toESM(require("@turf/distance"), 1);
|
|
125
|
-
var POLYGON_LINE_COLOR = [0, 255, 0, 255];
|
|
126
|
-
var POLYGON_FILL_COLOR = [255, 255, 255, 90];
|
|
127
|
-
var POLYGON_LINE_WIDTH = 2;
|
|
128
|
-
var POLYGON_THRESHOLD = 0.01;
|
|
129
|
-
var EXPANSION_KM = 10;
|
|
130
|
-
var LAYER_ID_VIEW = "DeckDrawerView";
|
|
131
|
-
var LAYER_ID_PICK = "DeckDrawerPick";
|
|
132
|
-
var SELECTION_TYPE = {
|
|
133
|
-
NONE: null,
|
|
134
|
-
RECTANGLE: "rectangle",
|
|
135
|
-
POLYGON: "polygon"
|
|
136
|
-
};
|
|
137
|
-
var DeckDrawer = class {
|
|
138
|
-
nebula;
|
|
139
|
-
usePolygon;
|
|
140
|
-
validPolygon;
|
|
141
|
-
landPoints;
|
|
142
|
-
mousePoints;
|
|
143
|
-
constructor(nebula) {
|
|
144
|
-
this.nebula = nebula;
|
|
145
|
-
this.usePolygon = false;
|
|
146
|
-
this.validPolygon = true;
|
|
147
|
-
this.landPoints = [];
|
|
148
|
-
this.mousePoints = [];
|
|
149
|
-
}
|
|
150
|
-
_getLayerIds() {
|
|
151
|
-
return this.nebula.deckgl.props.layers.filter((l) => l && l.props && l.props.nebulaLayer && l.props.nebulaLayer.enableSelection).map((l) => l.id);
|
|
152
|
-
}
|
|
153
|
-
_selectFromPickingInfos(pickingInfos) {
|
|
154
|
-
const objects = pickingInfos.map(({ layer, index, object }) => object.original || layer.props.nebulaLayer.deckCache.originals[index]);
|
|
155
|
-
this.nebula.props.onSelection(objects);
|
|
156
|
-
}
|
|
157
|
-
_getBoundingBox() {
|
|
158
|
-
const { mousePoints } = this;
|
|
159
|
-
const allX = mousePoints.map((mousePoint) => mousePoint[0]);
|
|
160
|
-
const allY = mousePoints.map((mousePoint) => mousePoint[1]);
|
|
161
|
-
const x = Math.min(...allX);
|
|
162
|
-
const y = Math.min(...allY);
|
|
163
|
-
const maxX = Math.max(...allX);
|
|
164
|
-
const maxY = Math.max(...allY);
|
|
165
|
-
return { x, y, width: maxX - x, height: maxY - y };
|
|
166
|
-
}
|
|
167
|
-
_selectRectangleObjects() {
|
|
168
|
-
if (this.landPoints.length !== 2)
|
|
169
|
-
return;
|
|
170
|
-
const [x1, y1] = this.mousePoints[0];
|
|
171
|
-
const [x2, y2] = this.mousePoints[1];
|
|
172
|
-
const pickingInfos = this.nebula.deckgl.pickObjects({
|
|
173
|
-
x: Math.min(x1, x2),
|
|
174
|
-
y: Math.min(y1, y2),
|
|
175
|
-
width: Math.abs(x2 - x1),
|
|
176
|
-
height: Math.abs(y2 - y1),
|
|
177
|
-
layerIds: this._getLayerIds()
|
|
178
|
-
});
|
|
179
|
-
this._selectFromPickingInfos(pickingInfos);
|
|
180
|
-
}
|
|
181
|
-
_selectPolygonObjects() {
|
|
182
|
-
const pickingInfos = this.nebula.deckgl.pickObjects({
|
|
183
|
-
...this._getBoundingBox(),
|
|
184
|
-
layerIds: [LAYER_ID_PICK, ...this._getLayerIds()]
|
|
185
|
-
});
|
|
186
|
-
this._selectFromPickingInfos(pickingInfos.filter((item) => item.layer.id !== LAYER_ID_PICK));
|
|
187
|
-
}
|
|
188
|
-
_getMousePosFromEvent(event) {
|
|
189
|
-
const { offsetX, offsetY } = event;
|
|
190
|
-
return [offsetX, offsetY];
|
|
191
|
-
}
|
|
192
|
-
// eslint-disable-next-line max-statements, complexity
|
|
193
|
-
handleEvent(event, lngLat, selectionType) {
|
|
194
|
-
if (event.type !== "mouseup")
|
|
195
|
-
event.stopPropagation();
|
|
196
|
-
this.usePolygon = selectionType === SELECTION_TYPE.POLYGON;
|
|
197
|
-
let redraw = false;
|
|
198
|
-
let deactivate = false;
|
|
199
|
-
const { usePolygon, landPoints, mousePoints } = this;
|
|
200
|
-
if (event.type === "mousedown") {
|
|
201
|
-
if (usePolygon && landPoints.length) {
|
|
202
|
-
if (this.landPoints.length < 3 || this.validPolygon) {
|
|
203
|
-
landPoints.push(lngLat);
|
|
204
|
-
mousePoints.push(this._getMousePosFromEvent(event));
|
|
205
|
-
}
|
|
206
|
-
} else {
|
|
207
|
-
this.landPoints = [lngLat, lngLat];
|
|
208
|
-
const m = this._getMousePosFromEvent(event);
|
|
209
|
-
this.mousePoints = [m, m];
|
|
210
|
-
}
|
|
211
|
-
redraw = true;
|
|
212
|
-
} else if (event.type === "mousemove" && landPoints.length) {
|
|
213
|
-
landPoints[landPoints.length - 1] = lngLat;
|
|
214
|
-
mousePoints[mousePoints.length - 1] = this._getMousePosFromEvent(event);
|
|
215
|
-
redraw = true;
|
|
216
|
-
} else if (event.type === "mouseup") {
|
|
217
|
-
if (usePolygon) {
|
|
218
|
-
if (landPoints.length > 4 && (0, import_distance.default)(landPoints[0], landPoints[landPoints.length - 1]) < POLYGON_THRESHOLD && this.validPolygon) {
|
|
219
|
-
this._selectPolygonObjects();
|
|
220
|
-
this.reset();
|
|
221
|
-
redraw = true;
|
|
222
|
-
deactivate = true;
|
|
223
|
-
}
|
|
224
|
-
} else {
|
|
225
|
-
this._selectRectangleObjects();
|
|
226
|
-
this.reset();
|
|
227
|
-
redraw = true;
|
|
228
|
-
deactivate = true;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
return { redraw, deactivate };
|
|
232
|
-
}
|
|
233
|
-
reset() {
|
|
234
|
-
this.landPoints = [];
|
|
235
|
-
this.mousePoints = [];
|
|
236
|
-
}
|
|
237
|
-
_makeStartPointHighlight(center) {
|
|
238
|
-
const buffer = (0, import_buffer.default)((0, import_helpers.point)(center), POLYGON_THRESHOLD / 4);
|
|
239
|
-
return (0, import_bbox_polygon.default)((0, import_bbox.default)(buffer)).geometry.coordinates;
|
|
240
|
-
}
|
|
241
|
-
render() {
|
|
242
|
-
const data = [];
|
|
243
|
-
const dataPick = [];
|
|
244
|
-
if (!this.usePolygon && this.landPoints.length === 2) {
|
|
245
|
-
const [[x1, y1], [x2, y2]] = this.mousePoints;
|
|
246
|
-
const selPolygon = [
|
|
247
|
-
[x1, y1],
|
|
248
|
-
[x1, y2],
|
|
249
|
-
[x2, y2],
|
|
250
|
-
[x2, y1],
|
|
251
|
-
[x1, y1]
|
|
252
|
-
].map((mousePos) => this.nebula.unprojectMousePosition(mousePos));
|
|
253
|
-
data.push({
|
|
254
|
-
polygon: selPolygon,
|
|
255
|
-
lineColor: POLYGON_LINE_COLOR,
|
|
256
|
-
fillColor: POLYGON_FILL_COLOR
|
|
257
|
-
});
|
|
258
|
-
} else if (this.usePolygon && this.landPoints.length) {
|
|
259
|
-
data.push({
|
|
260
|
-
polygon: this.landPoints,
|
|
261
|
-
lineColor: POLYGON_LINE_COLOR,
|
|
262
|
-
fillColor: POLYGON_FILL_COLOR
|
|
263
|
-
});
|
|
264
|
-
if (this.landPoints.length >= 3) {
|
|
265
|
-
const landPointsPoly = (0, import_helpers.polygon)([[...this.landPoints, this.landPoints[0]]]);
|
|
266
|
-
const bigBuffer = (0, import_buffer.default)((0, import_helpers.point)(this.landPoints[0]), EXPANSION_KM);
|
|
267
|
-
let bigPolygon;
|
|
268
|
-
try {
|
|
269
|
-
bigPolygon = (0, import_difference.default)(bigBuffer, landPointsPoly);
|
|
270
|
-
dataPick.push({
|
|
271
|
-
polygon: bigPolygon.geometry.coordinates,
|
|
272
|
-
fillColor: [0, 0, 0, 1]
|
|
273
|
-
});
|
|
274
|
-
this.validPolygon = true;
|
|
275
|
-
} catch (e) {
|
|
276
|
-
this.validPolygon = false;
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
if (this.landPoints.length) {
|
|
281
|
-
data.push({
|
|
282
|
-
polygon: this._makeStartPointHighlight(this.landPoints[0]),
|
|
283
|
-
lineColor: [0, 0, 0, 0],
|
|
284
|
-
fillColor: POLYGON_LINE_COLOR
|
|
285
|
-
});
|
|
286
|
-
}
|
|
287
|
-
data.push({ polygon: [[0, 0]] });
|
|
288
|
-
dataPick.push({ polygon: [[0, 0]] });
|
|
289
|
-
return [
|
|
290
|
-
new import_layers.PolygonLayer({
|
|
291
|
-
id: LAYER_ID_VIEW,
|
|
292
|
-
data,
|
|
293
|
-
fp64: false,
|
|
294
|
-
opacity: 1,
|
|
295
|
-
pickable: false,
|
|
296
|
-
lineWidthMinPixels: POLYGON_LINE_WIDTH,
|
|
297
|
-
lineWidthMaxPixels: POLYGON_LINE_WIDTH,
|
|
298
|
-
lineDashJustified: true,
|
|
299
|
-
// TODO(v9) Add extension
|
|
300
|
-
// getLineDashArray: (x) => POLYGON_DASHES,
|
|
301
|
-
getLineColor: (obj) => obj.lineColor || [0, 0, 0, 255],
|
|
302
|
-
getFillColor: (obj) => obj.fillColor || [0, 0, 0, 255],
|
|
303
|
-
getPolygon: (o) => o.polygon
|
|
304
|
-
}),
|
|
305
|
-
new import_layers.PolygonLayer({
|
|
306
|
-
id: LAYER_ID_PICK,
|
|
307
|
-
data: dataPick,
|
|
308
|
-
getLineColor: (obj) => obj.lineColor || [0, 0, 0, 255],
|
|
309
|
-
getFillColor: (obj) => obj.fillColor || [0, 0, 0, 255],
|
|
310
|
-
fp64: false,
|
|
311
|
-
opacity: 1,
|
|
312
|
-
stroked: false,
|
|
313
|
-
pickable: true,
|
|
314
|
-
getPolygon: (o) => o.polygon
|
|
315
|
-
})
|
|
316
|
-
];
|
|
317
|
-
}
|
|
318
|
-
};
|
|
319
|
-
|
|
320
|
-
// dist/lib/feature.js
|
|
321
|
-
var Feature = class {
|
|
322
|
-
// geo json coordinates
|
|
323
|
-
geoJson;
|
|
324
|
-
style;
|
|
325
|
-
original;
|
|
326
|
-
metadata;
|
|
327
|
-
constructor(geoJson, style, original = null, metadata = {}) {
|
|
328
|
-
this.geoJson = geoJson;
|
|
329
|
-
this.style = style;
|
|
330
|
-
this.original = original;
|
|
331
|
-
this.metadata = metadata;
|
|
332
|
-
}
|
|
333
|
-
getCoords() {
|
|
334
|
-
return this.geoJson.geometry.coordinates;
|
|
335
|
-
}
|
|
336
|
-
};
|
|
337
|
-
|
|
338
|
-
// dist/lib/layer-mouse-event.js
|
|
339
|
-
var LayerMouseEvent = class {
|
|
340
|
-
canceled = false;
|
|
341
|
-
// original item that this event is related to
|
|
342
|
-
data;
|
|
343
|
-
// internal nebula info about the object
|
|
344
|
-
metadata;
|
|
345
|
-
// the mouse [lng,lat] raycasted onto the ground
|
|
346
|
-
groundPoint;
|
|
347
|
-
// browser event
|
|
348
|
-
nativeEvent;
|
|
349
|
-
// reference to nebula
|
|
350
|
-
nebula;
|
|
351
|
-
constructor(nativeEvent, { data, groundPoint, nebula, metadata }) {
|
|
352
|
-
this.nativeEvent = nativeEvent;
|
|
353
|
-
this.data = data;
|
|
354
|
-
this.groundPoint = groundPoint;
|
|
355
|
-
this.nebula = nebula;
|
|
356
|
-
this.metadata = metadata;
|
|
357
|
-
}
|
|
358
|
-
stopPropagation() {
|
|
359
|
-
this.nativeEvent.stopPropagation();
|
|
360
|
-
this.canceled = true;
|
|
361
|
-
}
|
|
362
|
-
};
|
|
363
|
-
|
|
364
|
-
// dist/lib/nebula-layer.js
|
|
365
|
-
var import_eventemitter3 = require("eventemitter3");
|
|
366
|
-
var import_uuid = require("uuid");
|
|
367
|
-
var NebulaLayer = class extends import_eventemitter3.EventEmitter {
|
|
368
|
-
getData;
|
|
369
|
-
toNebulaFeature;
|
|
370
|
-
id;
|
|
371
|
-
helperLayers;
|
|
372
|
-
// flags
|
|
373
|
-
usesMapEvents = false;
|
|
374
|
-
enablePicking = false;
|
|
375
|
-
enableSelection = false;
|
|
376
|
-
//
|
|
377
|
-
constructor({ getData, on, toNebulaFeature }) {
|
|
378
|
-
super();
|
|
379
|
-
this.id = (0, import_uuid.v4)();
|
|
380
|
-
this.getData = getData;
|
|
381
|
-
this.toNebulaFeature = toNebulaFeature;
|
|
382
|
-
this.helperLayers = [];
|
|
383
|
-
if (on) {
|
|
384
|
-
Object.keys(on).forEach((key) => this.on(key, on[key]));
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
render(config) {
|
|
388
|
-
return null;
|
|
389
|
-
}
|
|
390
|
-
};
|
|
391
|
-
|
|
392
86
|
// dist/utils/utils.js
|
|
393
87
|
var utils_exports = {};
|
|
394
88
|
__export(utils_exports, {
|
|
@@ -403,8 +97,8 @@ __export(utils_exports, {
|
|
|
403
97
|
var import_destination = __toESM(require("@turf/destination"), 1);
|
|
404
98
|
var import_bearing = __toESM(require("@turf/bearing"), 1);
|
|
405
99
|
var import_point_to_line_distance = __toESM(require("@turf/point-to-line-distance"), 1);
|
|
406
|
-
var
|
|
407
|
-
var
|
|
100
|
+
var import_helpers = require("@turf/helpers");
|
|
101
|
+
var import_web_mercator = require("@math.gl/web-mercator");
|
|
408
102
|
function toDeckColor(color, defaultColor = [255, 0, 0, 255]) {
|
|
409
103
|
if (!Array.isArray(color)) {
|
|
410
104
|
return defaultColor;
|
|
@@ -428,7 +122,7 @@ function generatePointsParallelToLinePoints(p1, p2, mapCoords2) {
|
|
|
428
122
|
type: "LineString",
|
|
429
123
|
coordinates: [p1, p2]
|
|
430
124
|
};
|
|
431
|
-
const pt = (0,
|
|
125
|
+
const pt = (0, import_helpers.point)(mapCoords2);
|
|
432
126
|
const ddistance = (0, import_point_to_line_distance.default)(pt, lineString3);
|
|
433
127
|
const lineBearing = (0, import_bearing.default)(p1, p2);
|
|
434
128
|
const isPointToLeftOfLine = (mapCoords2[0] - p1[0]) * (p2[1] - p1[1]) - (mapCoords2[1] - p1[1]) * (p2[0] - p1[0]);
|
|
@@ -446,7 +140,7 @@ function mix(a, b, ratio) {
|
|
|
446
140
|
return b * ratio + a * (1 - ratio);
|
|
447
141
|
}
|
|
448
142
|
function nearestPointOnProjectedLine(line, inPoint, viewport) {
|
|
449
|
-
const wmViewport = new
|
|
143
|
+
const wmViewport = new import_web_mercator.WebMercatorViewport(viewport);
|
|
450
144
|
const coordinates = line.geometry.coordinates;
|
|
451
145
|
const projectedCoords = coordinates.map(([x3, y3, z = 0]) => wmViewport.project([x3, y3, z]));
|
|
452
146
|
const [x, y] = wmViewport.project(inPoint.geometry.coordinates);
|
|
@@ -499,479 +193,13 @@ function insertBefore(base, insertBeforeText, toInsert) {
|
|
|
499
193
|
return base.slice(0, at) + toInsert + base.slice(at);
|
|
500
194
|
}
|
|
501
195
|
|
|
502
|
-
// dist/lib/deck-renderer/deck-cache.js
|
|
503
|
-
var DeckCache = class {
|
|
504
|
-
objects;
|
|
505
|
-
originals;
|
|
506
|
-
updateTrigger;
|
|
507
|
-
_idToPosition;
|
|
508
|
-
_getData;
|
|
509
|
-
_convert;
|
|
510
|
-
constructor(getData, convert) {
|
|
511
|
-
this.objects = [];
|
|
512
|
-
this.originals = [];
|
|
513
|
-
this.updateTrigger = 0;
|
|
514
|
-
this._idToPosition = /* @__PURE__ */ new Map();
|
|
515
|
-
this._getData = getData;
|
|
516
|
-
this._convert = convert;
|
|
517
|
-
}
|
|
518
|
-
updateAllDeckObjects() {
|
|
519
|
-
if (!this._getData || !this._convert)
|
|
520
|
-
return;
|
|
521
|
-
this.originals.length = 0;
|
|
522
|
-
this.objects.length = 0;
|
|
523
|
-
this._idToPosition.clear();
|
|
524
|
-
this._getData().forEach((d) => {
|
|
525
|
-
this._idToPosition.set(d.id, this.objects.length);
|
|
526
|
-
this.originals.push(d);
|
|
527
|
-
this.objects.push(this._convert(d));
|
|
528
|
-
});
|
|
529
|
-
this.triggerUpdate();
|
|
530
|
-
}
|
|
531
|
-
updateDeckObjectsByIds(ids) {
|
|
532
|
-
if (!this._getData || !this._convert)
|
|
533
|
-
return;
|
|
534
|
-
ids.forEach((id) => {
|
|
535
|
-
const p = this._idToPosition.get(id);
|
|
536
|
-
if (p !== void 0) {
|
|
537
|
-
this.objects[p] = this._convert(this.originals[p]);
|
|
538
|
-
}
|
|
539
|
-
});
|
|
540
|
-
this.triggerUpdate();
|
|
541
|
-
}
|
|
542
|
-
triggerUpdate() {
|
|
543
|
-
this.updateTrigger++;
|
|
544
|
-
}
|
|
545
|
-
getDeckObjectById(id) {
|
|
546
|
-
const p = this._idToPosition.get(id);
|
|
547
|
-
return p !== void 0 ? this.objects[p] : null;
|
|
548
|
-
}
|
|
549
|
-
getOriginalById(id) {
|
|
550
|
-
const p = this._idToPosition.get(id);
|
|
551
|
-
return p !== void 0 ? this.originals[p] : null;
|
|
552
|
-
}
|
|
553
|
-
};
|
|
554
|
-
|
|
555
|
-
// dist/editable-layers/junction-scatterplot-layer.js
|
|
556
|
-
var import_core = require("@deck.gl/core");
|
|
557
|
-
var import_layers2 = require("@deck.gl/layers");
|
|
558
|
-
var JunctionScatterplotLayer = class extends import_core.CompositeLayer {
|
|
559
|
-
renderLayers() {
|
|
560
|
-
const { id, getFillColor, getStrokeColor, getInnerRadius, updateTriggers } = this.props;
|
|
561
|
-
return [
|
|
562
|
-
// the full circles
|
|
563
|
-
new import_layers2.ScatterplotLayer({
|
|
564
|
-
...this.props,
|
|
565
|
-
id: `${id}-full`,
|
|
566
|
-
data: this.props.data,
|
|
567
|
-
getLineColor: getStrokeColor,
|
|
568
|
-
updateTriggers: {
|
|
569
|
-
...updateTriggers,
|
|
570
|
-
getStrokeColor: updateTriggers.getStrokeColor
|
|
571
|
-
}
|
|
572
|
-
}),
|
|
573
|
-
// the inner part
|
|
574
|
-
new import_layers2.ScatterplotLayer({
|
|
575
|
-
...this.props,
|
|
576
|
-
id: `${id}-inner`,
|
|
577
|
-
data: this.props.data,
|
|
578
|
-
getFillColor,
|
|
579
|
-
getRadius: getInnerRadius,
|
|
580
|
-
pickable: false,
|
|
581
|
-
updateTriggers: {
|
|
582
|
-
...updateTriggers,
|
|
583
|
-
getFillColor: updateTriggers.getFillColor,
|
|
584
|
-
getRadius: updateTriggers.getInnerRadius
|
|
585
|
-
}
|
|
586
|
-
})
|
|
587
|
-
];
|
|
588
|
-
}
|
|
589
|
-
};
|
|
590
|
-
__publicField(JunctionScatterplotLayer, "layerName", "JunctionScatterplotLayer");
|
|
591
|
-
__publicField(JunctionScatterplotLayer, "defaultProps", {
|
|
592
|
-
...import_layers2.ScatterplotLayer.defaultProps,
|
|
593
|
-
getFillColor: (d) => [0, 0, 0, 255],
|
|
594
|
-
getStrokeColor: (d) => [255, 255, 255, 255],
|
|
595
|
-
getInnerRadius: (d) => 1
|
|
596
|
-
});
|
|
597
|
-
|
|
598
|
-
// dist/lib/layers/junctions-layer.js
|
|
599
|
-
var JunctionsLayer = class extends NebulaLayer {
|
|
600
|
-
deckCache;
|
|
601
|
-
constructor(config) {
|
|
602
|
-
super(config);
|
|
603
|
-
this.deckCache = new DeckCache(config.getData, (data) => config.toNebulaFeature(data));
|
|
604
|
-
this.enablePicking = true;
|
|
605
|
-
}
|
|
606
|
-
render({ nebula }) {
|
|
607
|
-
const defaultColor = [0, 0, 0, 255];
|
|
608
|
-
const { objects, updateTrigger } = this.deckCache;
|
|
609
|
-
return new JunctionScatterplotLayer({
|
|
610
|
-
id: `junctions-${this.id}`,
|
|
611
|
-
data: objects,
|
|
612
|
-
opacity: 1,
|
|
613
|
-
pickable: true,
|
|
614
|
-
getPosition: (nf) => nf.geoJson.geometry.coordinates,
|
|
615
|
-
getFillColor: (nf) => toDeckColor(nf.style.fillColor) || defaultColor,
|
|
616
|
-
getStrokeColor: (nf) => toDeckColor(nf.style.outlineColor) || toDeckColor(nf.style.fillColor) || defaultColor,
|
|
617
|
-
getRadius: (nf) => nf.style.pointRadiusMeters + nf.style.outlineRadiusMeters || 1,
|
|
618
|
-
getInnerRadius: (nf) => nf.style.pointRadiusMeters || 0.5,
|
|
619
|
-
parameters: {
|
|
620
|
-
depthCompare: "always"
|
|
621
|
-
},
|
|
622
|
-
updateTriggers: { all: updateTrigger },
|
|
623
|
-
// @ts-expect-error TODO
|
|
624
|
-
nebulaLayer: this
|
|
625
|
-
});
|
|
626
|
-
}
|
|
627
|
-
};
|
|
628
|
-
|
|
629
|
-
// dist/lib/layers/texts-layer.js
|
|
630
|
-
var import_layers3 = require("@deck.gl/layers");
|
|
631
|
-
|
|
632
|
-
// dist/lib/constants.js
|
|
633
|
-
var PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;
|
|
634
|
-
|
|
635
|
-
// dist/lib/layers/texts-layer.js
|
|
636
|
-
var TextsLayer = class extends NebulaLayer {
|
|
637
|
-
deckCache;
|
|
638
|
-
constructor(config) {
|
|
639
|
-
super(config);
|
|
640
|
-
this.deckCache = new DeckCache(config.getData, (data) => config.toNebulaFeature(data));
|
|
641
|
-
}
|
|
642
|
-
render({ nebula }) {
|
|
643
|
-
const defaultColor = [0, 0, 0, 255];
|
|
644
|
-
const { objects, updateTrigger } = this.deckCache;
|
|
645
|
-
const { zoom } = nebula.props.viewport;
|
|
646
|
-
return new import_layers3.TextLayer({
|
|
647
|
-
id: `texts-${this.id}`,
|
|
648
|
-
data: objects,
|
|
649
|
-
opacity: 1,
|
|
650
|
-
fp64: false,
|
|
651
|
-
pickable: false,
|
|
652
|
-
getText: (nf) => nf.style.text,
|
|
653
|
-
getPosition: (nf) => nf.geoJson.geometry.coordinates,
|
|
654
|
-
getColor: (nf) => toDeckColor(nf.style.fillColor) || defaultColor,
|
|
655
|
-
// TODO: layer should offer option to scale with zoom
|
|
656
|
-
sizeScale: 1 / Math.pow(2, 20 - zoom),
|
|
657
|
-
getSize: PROJECTED_PIXEL_SIZE_MULTIPLIER,
|
|
658
|
-
updateTriggers: { all: updateTrigger },
|
|
659
|
-
nebulaLayer: this
|
|
660
|
-
});
|
|
661
|
-
}
|
|
662
|
-
};
|
|
663
|
-
|
|
664
|
-
// dist/lib/layers/segments-layer.js
|
|
665
|
-
var import_layers4 = require("@deck.gl-community/layers");
|
|
666
|
-
var NEBULA_TO_DECK_DIRECTIONS = {
|
|
667
|
-
[ArrowStyles.NONE]: { forward: false, backward: false },
|
|
668
|
-
[ArrowStyles.FORWARD]: { forward: true, backward: false },
|
|
669
|
-
[ArrowStyles.BACKWARD]: { forward: false, backward: true },
|
|
670
|
-
[ArrowStyles.BOTH]: { forward: true, backward: true }
|
|
671
|
-
};
|
|
672
|
-
var SegmentsLayer = class extends NebulaLayer {
|
|
673
|
-
deckCache;
|
|
674
|
-
noBlend;
|
|
675
|
-
highlightColor;
|
|
676
|
-
arrowSize;
|
|
677
|
-
jointRounded;
|
|
678
|
-
capRounded;
|
|
679
|
-
dashed;
|
|
680
|
-
markerLayerProps;
|
|
681
|
-
constructor(config) {
|
|
682
|
-
super(config);
|
|
683
|
-
this.deckCache = new DeckCache(config.getData, (data) => config.toNebulaFeature(data));
|
|
684
|
-
this.enableSelection = true;
|
|
685
|
-
this.enablePicking = config.enablePicking ?? true;
|
|
686
|
-
this.noBlend = config.noBlend ?? false;
|
|
687
|
-
this.jointRounded = config.jointRounded ?? true;
|
|
688
|
-
this.capRounded = config.capRounded ?? true;
|
|
689
|
-
this.dashed = config.dashed ?? false;
|
|
690
|
-
this.markerLayerProps = config.markerLayerProps ?? null;
|
|
691
|
-
this.highlightColor = [1, 1, 1, 1];
|
|
692
|
-
this.arrowSize = 1;
|
|
693
|
-
}
|
|
694
|
-
getMouseOverSegment() {
|
|
695
|
-
return null;
|
|
696
|
-
}
|
|
697
|
-
_calcMarkerPercentages(nf) {
|
|
698
|
-
const { arrowPercentages } = nf.style;
|
|
699
|
-
if (arrowPercentages) {
|
|
700
|
-
return arrowPercentages;
|
|
701
|
-
}
|
|
702
|
-
const arrowStyle = nf.style.arrowStyle || DEFAULT_STYLE.arrowStyle;
|
|
703
|
-
if (arrowStyle === ArrowStyles.NONE)
|
|
704
|
-
return [];
|
|
705
|
-
const arrowCount = Math.min(nf.style.arrowCount || DEFAULT_STYLE.arrowCount, MAX_ARROWS);
|
|
706
|
-
return [[0.5], [0.33, 0.66], [0.25, 0.5, 0.75]][arrowCount - 1];
|
|
707
|
-
}
|
|
708
|
-
_getHighlightedObjectIndex({ nebula }) {
|
|
709
|
-
const { deckglMouseOverInfo } = nebula;
|
|
710
|
-
if (deckglMouseOverInfo) {
|
|
711
|
-
const { originalLayer, index } = deckglMouseOverInfo;
|
|
712
|
-
if (originalLayer === this) {
|
|
713
|
-
return index;
|
|
714
|
-
}
|
|
715
|
-
}
|
|
716
|
-
return -1;
|
|
717
|
-
}
|
|
718
|
-
render({ nebula }) {
|
|
719
|
-
const defaultColor = [0, 0, 0, 255];
|
|
720
|
-
const { objects, updateTrigger } = this.deckCache;
|
|
721
|
-
return new import_layers4.PathMarkerLayer({
|
|
722
|
-
id: `segments-${this.id}`,
|
|
723
|
-
data: objects,
|
|
724
|
-
opacity: 1,
|
|
725
|
-
fp64: false,
|
|
726
|
-
jointRounded: this.jointRounded,
|
|
727
|
-
capRounded: this.capRounded,
|
|
728
|
-
pickable: true,
|
|
729
|
-
sizeScale: this.arrowSize || 6,
|
|
730
|
-
parameters: {
|
|
731
|
-
depthCompare: "always",
|
|
732
|
-
blendColorOperation: this.noBlend ? void 0 : "max"
|
|
733
|
-
},
|
|
734
|
-
getPath: (nf) => nf.geoJson.geometry.coordinates,
|
|
735
|
-
getColor: (nf) => toDeckColor(nf.style.lineColor, defaultColor),
|
|
736
|
-
getWidth: (nf) => nf.style.lineWidthMeters || 1,
|
|
737
|
-
getZLevel: (nf) => nf.style.zLevel * 255,
|
|
738
|
-
getDirection: (nf) => NEBULA_TO_DECK_DIRECTIONS[nf.style.arrowStyle],
|
|
739
|
-
getMarkerColor: (nf) => toDeckColor(nf.style.arrowColor, defaultColor),
|
|
740
|
-
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
741
|
-
getMarkerPercentages: this._calcMarkerPercentages,
|
|
742
|
-
updateTriggers: { all: updateTrigger },
|
|
743
|
-
highlightedObjectIndex: this._getHighlightedObjectIndex({ nebula }),
|
|
744
|
-
highlightColor: toDeckColor(this.highlightColor),
|
|
745
|
-
dashJustified: this.dashed,
|
|
746
|
-
getDashArray: this.dashed ? (nf) => nf.style.dashArray : void 0,
|
|
747
|
-
markerLayerProps: this.markerLayerProps || import_layers4.PathMarkerLayer.defaultProps.markerLayerProps,
|
|
748
|
-
nebulaLayer: this
|
|
749
|
-
});
|
|
750
|
-
}
|
|
751
|
-
};
|
|
752
|
-
|
|
753
|
-
// dist/lib/nebula-core.js
|
|
754
|
-
var import_eventemitter32 = require("eventemitter3");
|
|
755
|
-
var import_core2 = require("@deck.gl/core");
|
|
756
|
-
var LOGGER_PREFIX = "Nebula: ";
|
|
757
|
-
var NebulaCore = class {
|
|
758
|
-
init(props) {
|
|
759
|
-
this.props = props;
|
|
760
|
-
this.wmViewport = new import_core2.WebMercatorViewport(this.props.viewport);
|
|
761
|
-
["click", "mousemove", "mouseup", "mousedown"].forEach((name) => document.addEventListener(name, this._onMouseEvent, true));
|
|
762
|
-
}
|
|
763
|
-
detach() {
|
|
764
|
-
["click", "mousemove", "mouseup", "mousedown"].forEach((name) => document.removeEventListener(name, this._onMouseEvent, true));
|
|
765
|
-
}
|
|
766
|
-
updateProps(newProps) {
|
|
767
|
-
this.props = newProps;
|
|
768
|
-
const { viewport } = this.props;
|
|
769
|
-
this.wmViewport = new import_core2.WebMercatorViewport(viewport);
|
|
770
|
-
}
|
|
771
|
-
props = null;
|
|
772
|
-
deckgl = null;
|
|
773
|
-
mainContainer = null;
|
|
774
|
-
deckglMouseOverInfo = null;
|
|
775
|
-
_deckDrawer = null;
|
|
776
|
-
_mouseWasDown = null;
|
|
777
|
-
wmViewport = null;
|
|
778
|
-
queryObjectEvents = new import_eventemitter32.EventEmitter();
|
|
779
|
-
forceUpdate = null;
|
|
780
|
-
inited = null;
|
|
781
|
-
log(message) {
|
|
782
|
-
const { logger } = this.props;
|
|
783
|
-
if (logger && logger.info) {
|
|
784
|
-
logger.info(LOGGER_PREFIX + message);
|
|
785
|
-
}
|
|
786
|
-
}
|
|
787
|
-
updateAllDeckObjects() {
|
|
788
|
-
this.getAllLayers().forEach((layer) => {
|
|
789
|
-
if (layer && layer.deckCache) {
|
|
790
|
-
layer.deckCache.updateAllDeckObjects();
|
|
791
|
-
}
|
|
792
|
-
});
|
|
793
|
-
this.forceUpdate();
|
|
794
|
-
}
|
|
795
|
-
updateDeckObjectsByIds(ids) {
|
|
796
|
-
this.getAllLayers().forEach((layer) => {
|
|
797
|
-
if (layer && layer.deckCache) {
|
|
798
|
-
layer.deckCache.updateDeckObjectsByIds(ids);
|
|
799
|
-
}
|
|
800
|
-
});
|
|
801
|
-
this.forceUpdate();
|
|
802
|
-
}
|
|
803
|
-
rerenderLayers() {
|
|
804
|
-
this.updateAllDeckObjects();
|
|
805
|
-
}
|
|
806
|
-
_isNebulaEvent({ buttons, target, type }) {
|
|
807
|
-
const { viewport } = this.props;
|
|
808
|
-
if (this._mouseWasDown && type === "mouseup") {
|
|
809
|
-
this._mouseWasDown = false;
|
|
810
|
-
return true;
|
|
811
|
-
}
|
|
812
|
-
if (type === "mousemove" && buttons > 0) {
|
|
813
|
-
return true;
|
|
814
|
-
}
|
|
815
|
-
if (!target.getBoundingClientRect) {
|
|
816
|
-
return false;
|
|
817
|
-
}
|
|
818
|
-
const rect = target.getBoundingClientRect();
|
|
819
|
-
return Math.round(rect.width) === Math.round(viewport.width) && Math.round(rect.height) === Math.round(viewport.height);
|
|
820
|
-
}
|
|
821
|
-
_onMouseEvent = (event) => {
|
|
822
|
-
if (!this._isNebulaEvent(event)) {
|
|
823
|
-
return;
|
|
824
|
-
}
|
|
825
|
-
if (event.type === "mousedown") {
|
|
826
|
-
this._mouseWasDown = true;
|
|
827
|
-
}
|
|
828
|
-
const { top = 0, left = 0 } = this.mainContainer ? this.mainContainer.getBoundingClientRect() : {};
|
|
829
|
-
const proxyEvent = new Proxy(event, {
|
|
830
|
-
get: (original, propertyName) => {
|
|
831
|
-
if (propertyName === "offsetX") {
|
|
832
|
-
return original.pageX - left;
|
|
833
|
-
}
|
|
834
|
-
if (propertyName === "offsetY") {
|
|
835
|
-
return original.pageY - top;
|
|
836
|
-
}
|
|
837
|
-
if (propertyName === "type") {
|
|
838
|
-
return original.type.replace("pointer", "mouse");
|
|
839
|
-
}
|
|
840
|
-
const result = original[propertyName];
|
|
841
|
-
if (typeof result === "function") {
|
|
842
|
-
return result.bind(original);
|
|
843
|
-
}
|
|
844
|
-
return result;
|
|
845
|
-
}
|
|
846
|
-
});
|
|
847
|
-
this._handleDeckGLEvent(proxyEvent);
|
|
848
|
-
};
|
|
849
|
-
getMouseGroundPosition(event) {
|
|
850
|
-
return this.wmViewport.unproject([event.offsetX, event.offsetY]);
|
|
851
|
-
}
|
|
852
|
-
unprojectMousePosition(mousePosition) {
|
|
853
|
-
return this.wmViewport.unproject(mousePosition);
|
|
854
|
-
}
|
|
855
|
-
// eslint-disable-next-line max-statements, complexity
|
|
856
|
-
_handleDeckGLEvent(event) {
|
|
857
|
-
const { deckgl, props: { onMapMouseEvent, selectionType, eventFilter } } = this;
|
|
858
|
-
let sendMapEvent = true;
|
|
859
|
-
let cursor = "auto";
|
|
860
|
-
if (event && deckgl && selectionType) {
|
|
861
|
-
if (!this._deckDrawer)
|
|
862
|
-
this._deckDrawer = new DeckDrawer(this);
|
|
863
|
-
const lngLat = this.getMouseGroundPosition(event);
|
|
864
|
-
if (eventFilter && !eventFilter(lngLat, event))
|
|
865
|
-
return;
|
|
866
|
-
const drawerResult = this._deckDrawer.handleEvent(event, lngLat, selectionType);
|
|
867
|
-
if (drawerResult.redraw)
|
|
868
|
-
this.forceUpdate();
|
|
869
|
-
return;
|
|
870
|
-
}
|
|
871
|
-
if (event && deckgl && (!event.buttons || event.type !== "mousemove")) {
|
|
872
|
-
const layerIds = deckgl.props.layers.filter((l) => l && l.props && l.props.nebulaLayer && l.props.nebulaLayer.enablePicking).map((l) => l.id);
|
|
873
|
-
const pickingInfo = deckgl.pickObject({
|
|
874
|
-
x: event.offsetX,
|
|
875
|
-
y: event.offsetY,
|
|
876
|
-
radius: 5,
|
|
877
|
-
layerIds
|
|
878
|
-
});
|
|
879
|
-
this.queryObjectEvents.emit("pick", { event, pickingInfo });
|
|
880
|
-
if (pickingInfo) {
|
|
881
|
-
sendMapEvent = false;
|
|
882
|
-
const { index, lngLat } = pickingInfo;
|
|
883
|
-
if (eventFilter && !eventFilter(lngLat, event))
|
|
884
|
-
return;
|
|
885
|
-
const { layer: deckLayer, object } = pickingInfo;
|
|
886
|
-
if (deckLayer && deckLayer.props && deckLayer.props.nebulaLayer && deckLayer.props.nebulaLayer.eventHandler) {
|
|
887
|
-
deckLayer.props.nebulaLayer.eventHandler(event, pickingInfo);
|
|
888
|
-
}
|
|
889
|
-
const original = object.original || deckLayer.props.nebulaLayer && deckLayer.props.nebulaLayer.deckCache && deckLayer.props.nebulaLayer.deckCache.originals[index];
|
|
890
|
-
if (original) {
|
|
891
|
-
this.deckglMouseOverInfo = { originalLayer: deckLayer.props.nebulaLayer, index };
|
|
892
|
-
const nebulaMouseEvent = new LayerMouseEvent(event, {
|
|
893
|
-
data: original,
|
|
894
|
-
metadata: object.metadata,
|
|
895
|
-
groundPoint: lngLat,
|
|
896
|
-
nebula: this
|
|
897
|
-
});
|
|
898
|
-
deckLayer.props.nebulaLayer.emit(event.type, nebulaMouseEvent);
|
|
899
|
-
this.forceUpdate();
|
|
900
|
-
}
|
|
901
|
-
cursor = "pointer";
|
|
902
|
-
}
|
|
903
|
-
}
|
|
904
|
-
if (document.documentElement) {
|
|
905
|
-
document.documentElement.style.cursor = cursor;
|
|
906
|
-
}
|
|
907
|
-
if (sendMapEvent) {
|
|
908
|
-
this.deckglMouseOverInfo = null;
|
|
909
|
-
const lngLat = this.getMouseGroundPosition(event);
|
|
910
|
-
if (eventFilter && !eventFilter(lngLat, event))
|
|
911
|
-
return;
|
|
912
|
-
const nebulaMouseEvent = new LayerMouseEvent(event, {
|
|
913
|
-
groundPoint: lngLat,
|
|
914
|
-
nebula: this
|
|
915
|
-
});
|
|
916
|
-
this.getAllLayers().filter((layer) => layer && layer.usesMapEvents).forEach((layer) => layer.emit("mapMouseEvent", nebulaMouseEvent));
|
|
917
|
-
this.getAllLayers().filter((layer) => layer && layer.props && layer.props.nebulaLayer && layer.props.nebulaLayer.mapMouseEvent).forEach((layer) => layer.props.nebulaLayer.mapMouseEvent(nebulaMouseEvent, layer));
|
|
918
|
-
if (onMapMouseEvent) {
|
|
919
|
-
onMapMouseEvent(event, lngLat);
|
|
920
|
-
}
|
|
921
|
-
}
|
|
922
|
-
}
|
|
923
|
-
getExtraDeckLayers() {
|
|
924
|
-
const result = [];
|
|
925
|
-
if (this._deckDrawer)
|
|
926
|
-
result.push(...this._deckDrawer.render());
|
|
927
|
-
return result;
|
|
928
|
-
}
|
|
929
|
-
renderDeckLayers() {
|
|
930
|
-
return this.getAllLayers().map((layer) => layer instanceof NebulaLayer ? layer.render({ nebula: this }) : layer).filter(Boolean);
|
|
931
|
-
}
|
|
932
|
-
getAllLayers() {
|
|
933
|
-
const result = [];
|
|
934
|
-
this.props.layers.filter(Boolean).forEach((layer) => {
|
|
935
|
-
result.push(layer);
|
|
936
|
-
if (layer instanceof NebulaLayer) {
|
|
937
|
-
result.push(...layer.helperLayers);
|
|
938
|
-
}
|
|
939
|
-
});
|
|
940
|
-
return result.filter(Boolean);
|
|
941
|
-
}
|
|
942
|
-
getRenderedLayers() {
|
|
943
|
-
return [...this.renderDeckLayers(), ...this.getExtraDeckLayers()];
|
|
944
|
-
}
|
|
945
|
-
updateAndGetRenderedLayers(layers, viewport, container) {
|
|
946
|
-
if (this.inited) {
|
|
947
|
-
this.updateProps({ layers, viewport });
|
|
948
|
-
this.forceUpdate = () => container.forceUpdate();
|
|
949
|
-
} else {
|
|
950
|
-
this.inited = true;
|
|
951
|
-
this.init({ layers, viewport });
|
|
952
|
-
this.forceUpdate = () => container.forceUpdate();
|
|
953
|
-
this.updateAllDeckObjects();
|
|
954
|
-
}
|
|
955
|
-
return this.getRenderedLayers();
|
|
956
|
-
}
|
|
957
|
-
setDeck(deckgl) {
|
|
958
|
-
if (deckgl) {
|
|
959
|
-
this.deckgl = deckgl;
|
|
960
|
-
}
|
|
961
|
-
}
|
|
962
|
-
setMainContainer(mainContainer) {
|
|
963
|
-
if (mainContainer) {
|
|
964
|
-
this.mainContainer = mainContainer;
|
|
965
|
-
}
|
|
966
|
-
}
|
|
967
|
-
};
|
|
968
|
-
|
|
969
196
|
// dist/editable-layers/editable-geojson-layer.js
|
|
970
|
-
var
|
|
197
|
+
var import_layers2 = require("@deck.gl/layers");
|
|
971
198
|
|
|
972
199
|
// dist/edit-modes/geojson-edit-mode.js
|
|
200
|
+
var import_helpers3 = require("@turf/helpers");
|
|
973
201
|
var import_union = __toESM(require("@turf/union"), 1);
|
|
974
|
-
var
|
|
202
|
+
var import_difference = __toESM(require("@turf/difference"), 1);
|
|
975
203
|
var import_intersect = __toESM(require("@turf/intersect"), 1);
|
|
976
204
|
var import_rewind = __toESM(require("@turf/rewind"), 1);
|
|
977
205
|
|
|
@@ -980,9 +208,9 @@ var import_destination2 = __toESM(require("@turf/destination"), 1);
|
|
|
980
208
|
var import_bearing2 = __toESM(require("@turf/bearing"), 1);
|
|
981
209
|
var import_point_to_line_distance2 = __toESM(require("@turf/point-to-line-distance"), 1);
|
|
982
210
|
var import_meta = require("@turf/meta");
|
|
983
|
-
var
|
|
211
|
+
var import_helpers2 = require("@turf/helpers");
|
|
984
212
|
var import_invariant = require("@turf/invariant");
|
|
985
|
-
var
|
|
213
|
+
var import_web_mercator2 = require("@math.gl/web-mercator");
|
|
986
214
|
function recursivelyTraverseNestedArrays2(array, prefix, fn) {
|
|
987
215
|
if (!Array.isArray(array[0])) {
|
|
988
216
|
return true;
|
|
@@ -1000,7 +228,7 @@ function generatePointsParallelToLinePoints2(p1, p2, coords) {
|
|
|
1000
228
|
type: "LineString",
|
|
1001
229
|
coordinates: [p1, p2]
|
|
1002
230
|
};
|
|
1003
|
-
const pt = (0,
|
|
231
|
+
const pt = (0, import_helpers2.point)(coords);
|
|
1004
232
|
const ddistance = (0, import_point_to_line_distance2.default)(pt, lineString3);
|
|
1005
233
|
const lineBearing = (0, import_bearing2.default)(p1, p2);
|
|
1006
234
|
const isPointToLeftOfLine = (coords[0] - p1[0]) * (p2[1] - p1[1]) - (coords[1] - p1[1]) * (p2[0] - p1[0]);
|
|
@@ -1018,7 +246,7 @@ function mix2(a, b, ratio) {
|
|
|
1018
246
|
return b * ratio + a * (1 - ratio);
|
|
1019
247
|
}
|
|
1020
248
|
function nearestPointOnProjectedLine2(line, inPoint, viewport) {
|
|
1021
|
-
const wmViewport = new
|
|
249
|
+
const wmViewport = new import_web_mercator2.WebMercatorViewport(viewport);
|
|
1022
250
|
const coordinates = line.geometry.coordinates;
|
|
1023
251
|
const projectedCoords = coordinates.map(([x3, y3, z = 0]) => wmViewport.project([x3, y3, z]));
|
|
1024
252
|
const [x, y] = wmViewport.project(inPoint.geometry.coordinates);
|
|
@@ -1067,9 +295,9 @@ function nearestPointOnLine(lines, inPoint, viewport) {
|
|
|
1067
295
|
var _a, _b;
|
|
1068
296
|
let mercator;
|
|
1069
297
|
if (viewport) {
|
|
1070
|
-
mercator = new
|
|
298
|
+
mercator = new import_web_mercator2.WebMercatorViewport(viewport);
|
|
1071
299
|
}
|
|
1072
|
-
let closestPoint = (0,
|
|
300
|
+
let closestPoint = (0, import_helpers2.point)([Infinity, Infinity], {
|
|
1073
301
|
dist: Infinity
|
|
1074
302
|
});
|
|
1075
303
|
if (!((_a = lines.geometry) == null ? void 0 : _a.coordinates.length) || ((_b = lines.geometry) == null ? void 0 : _b.coordinates.length) < 2) {
|
|
@@ -1143,7 +371,7 @@ function nearestPointOnLine(lines, inPoint, viewport) {
|
|
|
1143
371
|
from
|
|
1144
372
|
};
|
|
1145
373
|
}
|
|
1146
|
-
closestPoint = (0,
|
|
374
|
+
closestPoint = (0, import_helpers2.point)([snapPoint.x, snapPoint.y], {
|
|
1147
375
|
dist: Math.abs(snapPoint.from - snapPoint.to),
|
|
1148
376
|
index: snapPoint.idx
|
|
1149
377
|
});
|
|
@@ -1270,8 +498,8 @@ function shouldCancelPan(event) {
|
|
|
1270
498
|
// dist/edit-modes/immutable-feature-collection.js
|
|
1271
499
|
var ImmutableFeatureCollection = class {
|
|
1272
500
|
featureCollection;
|
|
1273
|
-
constructor(
|
|
1274
|
-
this.featureCollection =
|
|
501
|
+
constructor(featureCollection7) {
|
|
502
|
+
this.featureCollection = featureCollection7;
|
|
1275
503
|
}
|
|
1276
504
|
getObject() {
|
|
1277
505
|
return this.featureCollection;
|
|
@@ -1506,9 +734,9 @@ function pruneGeometryIfNecessary(geometry) {
|
|
|
1506
734
|
}
|
|
1507
735
|
}
|
|
1508
736
|
function prunePolygonIfNecessary(geometry) {
|
|
1509
|
-
const
|
|
1510
|
-
for (let holeIndex = 1; holeIndex <
|
|
1511
|
-
if (removeHoleIfNecessary(
|
|
737
|
+
const polygon2 = geometry.coordinates;
|
|
738
|
+
for (let holeIndex = 1; holeIndex < polygon2.length; holeIndex++) {
|
|
739
|
+
if (removeHoleIfNecessary(polygon2, holeIndex)) {
|
|
1512
740
|
holeIndex--;
|
|
1513
741
|
}
|
|
1514
742
|
}
|
|
@@ -1524,23 +752,23 @@ function pruneMultiLineStringIfNecessary(geometry) {
|
|
|
1524
752
|
}
|
|
1525
753
|
function pruneMultiPolygonIfNecessary(geometry) {
|
|
1526
754
|
for (let polygonIndex = 0; polygonIndex < geometry.coordinates.length; polygonIndex++) {
|
|
1527
|
-
const
|
|
1528
|
-
const outerRing =
|
|
755
|
+
const polygon2 = geometry.coordinates[polygonIndex];
|
|
756
|
+
const outerRing = polygon2[0];
|
|
1529
757
|
if (outerRing.length <= 3) {
|
|
1530
758
|
geometry.coordinates.splice(polygonIndex, 1);
|
|
1531
759
|
polygonIndex--;
|
|
1532
760
|
}
|
|
1533
|
-
for (let holeIndex = 1; holeIndex <
|
|
1534
|
-
if (removeHoleIfNecessary(
|
|
761
|
+
for (let holeIndex = 1; holeIndex < polygon2.length; holeIndex++) {
|
|
762
|
+
if (removeHoleIfNecessary(polygon2, holeIndex)) {
|
|
1535
763
|
holeIndex--;
|
|
1536
764
|
}
|
|
1537
765
|
}
|
|
1538
766
|
}
|
|
1539
767
|
}
|
|
1540
|
-
function removeHoleIfNecessary(
|
|
1541
|
-
const hole =
|
|
768
|
+
function removeHoleIfNecessary(polygon2, holeIndex) {
|
|
769
|
+
const hole = polygon2[holeIndex];
|
|
1542
770
|
if (hole.length <= 3) {
|
|
1543
|
-
|
|
771
|
+
polygon2.splice(holeIndex, 1);
|
|
1544
772
|
return true;
|
|
1545
773
|
}
|
|
1546
774
|
return false;
|
|
@@ -1667,11 +895,11 @@ var GeoJsonEditMode = class {
|
|
|
1667
895
|
};
|
|
1668
896
|
let updatedGeometry;
|
|
1669
897
|
if (modeConfig.booleanOperation === "union") {
|
|
1670
|
-
updatedGeometry = (0, import_union.default)(selectedFeature, feature);
|
|
898
|
+
updatedGeometry = (0, import_union.default)((0, import_helpers3.featureCollection)([selectedFeature, feature]));
|
|
1671
899
|
} else if (modeConfig.booleanOperation === "difference") {
|
|
1672
|
-
updatedGeometry = (0,
|
|
900
|
+
updatedGeometry = (0, import_difference.default)((0, import_helpers3.featureCollection)([selectedFeature, feature]));
|
|
1673
901
|
} else if (modeConfig.booleanOperation === "intersection") {
|
|
1674
|
-
updatedGeometry = (0, import_intersect.default)(selectedFeature, feature);
|
|
902
|
+
updatedGeometry = (0, import_intersect.default)((0, import_helpers3.featureCollection)([selectedFeature, feature]));
|
|
1675
903
|
} else {
|
|
1676
904
|
console.warn(`Invalid booleanOperation ${modeConfig.booleanOperation}`);
|
|
1677
905
|
return null;
|
|
@@ -1744,10 +972,10 @@ var ViewMode = class extends GeoJsonEditMode {
|
|
|
1744
972
|
|
|
1745
973
|
// dist/edit-modes/translate-mode.js
|
|
1746
974
|
var import_bearing3 = __toESM(require("@turf/bearing"), 1);
|
|
1747
|
-
var
|
|
975
|
+
var import_distance = __toESM(require("@turf/distance"), 1);
|
|
1748
976
|
var import_clone = __toESM(require("@turf/clone"), 1);
|
|
1749
977
|
var import_helpers4 = require("@turf/helpers");
|
|
1750
|
-
var
|
|
978
|
+
var import_web_mercator3 = require("@math.gl/web-mercator");
|
|
1751
979
|
|
|
1752
980
|
// dist/utils/translate-from-center.js
|
|
1753
981
|
var import_center = __toESM(require("@turf/center"), 1);
|
|
@@ -1819,7 +1047,7 @@ var TranslateMode = class extends GeoJsonEditMode {
|
|
|
1819
1047
|
const selectedIndexes = props.selectedIndexes;
|
|
1820
1048
|
const { viewport: viewportDesc, screenSpace } = props.modeConfig || {};
|
|
1821
1049
|
if (viewportDesc && screenSpace) {
|
|
1822
|
-
const viewport = viewportDesc.project ? viewportDesc : new
|
|
1050
|
+
const viewport = viewportDesc.project ? viewportDesc : new import_web_mercator3.WebMercatorViewport(viewportDesc);
|
|
1823
1051
|
const from = viewport.project(startDragPoint);
|
|
1824
1052
|
const to = viewport.project(currentPoint);
|
|
1825
1053
|
const dx = to[0] - from[0];
|
|
@@ -1847,7 +1075,7 @@ var TranslateMode = class extends GeoJsonEditMode {
|
|
|
1847
1075
|
} else {
|
|
1848
1076
|
const p1 = (0, import_helpers4.point)(startDragPoint);
|
|
1849
1077
|
const p2 = (0, import_helpers4.point)(currentPoint);
|
|
1850
|
-
const distanceMoved = (0,
|
|
1078
|
+
const distanceMoved = (0, import_distance.default)(p1, p2);
|
|
1851
1079
|
const direction = (0, import_bearing3.default)(p1, p2);
|
|
1852
1080
|
const movedFeatures = this._geometryBeforeTranslate.features.map((feature) => translateFromCenter((0, import_clone.default)(feature), distanceMoved, direction));
|
|
1853
1081
|
for (let i = 0; i < selectedIndexes.length; i++) {
|
|
@@ -1894,12 +1122,7 @@ var ModifyMode = class extends GeoJsonEditMode {
|
|
|
1894
1122
|
const referencePoint = (0, import_helpers5.point)(mapCoords2);
|
|
1895
1123
|
recursivelyTraverseNestedArrays2(featureAsPick.object.geometry.coordinates, [], (lineString3, prefix) => {
|
|
1896
1124
|
const lineStringFeature = (0, import_helpers5.lineString)(lineString3);
|
|
1897
|
-
const candidateIntermediatePoint = this.getNearestPoint(
|
|
1898
|
-
// @ts-expect-error turf types too wide
|
|
1899
|
-
lineStringFeature,
|
|
1900
|
-
referencePoint,
|
|
1901
|
-
props.modeConfig && props.modeConfig.viewport
|
|
1902
|
-
);
|
|
1125
|
+
const candidateIntermediatePoint = this.getNearestPoint(lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport);
|
|
1903
1126
|
if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) {
|
|
1904
1127
|
intermediatePoint = candidateIntermediatePoint;
|
|
1905
1128
|
positionIndexPrefix = prefix;
|
|
@@ -1940,31 +1163,35 @@ var ModifyMode = class extends GeoJsonEditMode {
|
|
|
1940
1163
|
return nearestPointOnLine(line, inPoint, viewport);
|
|
1941
1164
|
}
|
|
1942
1165
|
handleClick(event, props) {
|
|
1943
|
-
var _a;
|
|
1166
|
+
var _a, _b;
|
|
1944
1167
|
const pickedExistingHandle = getPickedExistingEditHandle(event.picks);
|
|
1945
1168
|
const pickedIntermediateHandle = getPickedIntermediateEditHandle(event.picks);
|
|
1946
1169
|
if (pickedExistingHandle) {
|
|
1947
1170
|
const { featureIndex, positionIndexes } = pickedExistingHandle.properties;
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1171
|
+
const feature = props.data.features[featureIndex];
|
|
1172
|
+
const canRemovePosition = !(((_a = props.modeConfig) == null ? void 0 : _a.lockRectangles) && (feature == null ? void 0 : feature.properties.shape) === "Rectangle");
|
|
1173
|
+
if (canRemovePosition) {
|
|
1174
|
+
let updatedData;
|
|
1175
|
+
try {
|
|
1176
|
+
updatedData = new ImmutableFeatureCollection(props.data).removePosition(featureIndex, positionIndexes).getObject();
|
|
1177
|
+
} catch (ignored) {
|
|
1178
|
+
}
|
|
1179
|
+
if (updatedData) {
|
|
1180
|
+
props.onEdit({
|
|
1181
|
+
updatedData,
|
|
1182
|
+
editType: "removePosition",
|
|
1183
|
+
editContext: {
|
|
1184
|
+
featureIndexes: [featureIndex],
|
|
1185
|
+
positionIndexes,
|
|
1186
|
+
position: pickedExistingHandle.geometry.coordinates
|
|
1187
|
+
}
|
|
1188
|
+
});
|
|
1189
|
+
}
|
|
1963
1190
|
}
|
|
1964
1191
|
} else if (pickedIntermediateHandle) {
|
|
1965
1192
|
const { featureIndex, positionIndexes } = pickedIntermediateHandle.properties;
|
|
1966
1193
|
const feature = props.data.features[featureIndex];
|
|
1967
|
-
const canAddPosition = !(((
|
|
1194
|
+
const canAddPosition = !(((_b = props.modeConfig) == null ? void 0 : _b.lockRectangles) && (feature == null ? void 0 : feature.properties.shape) === "Rectangle");
|
|
1968
1195
|
if (canAddPosition) {
|
|
1969
1196
|
const updatedData = new ImmutableFeatureCollection(props.data).addPosition(featureIndex, positionIndexes, pickedIntermediateHandle.geometry.coordinates).getObject();
|
|
1970
1197
|
if (updatedData) {
|
|
@@ -2035,7 +1262,7 @@ var ModifyMode = class extends GeoJsonEditMode {
|
|
|
2035
1262
|
}
|
|
2036
1263
|
handleStopDragging(event, props) {
|
|
2037
1264
|
const selectedFeatureIndexes = props.selectedIndexes;
|
|
2038
|
-
const editHandle = getPickedEditHandle(event.
|
|
1265
|
+
const editHandle = getPickedEditHandle(event.pointerDownPicks);
|
|
2039
1266
|
if (selectedFeatureIndexes.length && editHandle) {
|
|
2040
1267
|
this._dragEditHandle("finishMovePosition", props, editHandle, event);
|
|
2041
1268
|
}
|
|
@@ -2051,14 +1278,14 @@ var ModifyMode = class extends GeoJsonEditMode {
|
|
|
2051
1278
|
};
|
|
2052
1279
|
|
|
2053
1280
|
// dist/edit-modes/scale-mode.js
|
|
2054
|
-
var
|
|
1281
|
+
var import_bbox = __toESM(require("@turf/bbox"), 1);
|
|
2055
1282
|
var import_centroid = __toESM(require("@turf/centroid"), 1);
|
|
2056
1283
|
var import_bearing4 = __toESM(require("@turf/bearing"), 1);
|
|
2057
|
-
var
|
|
1284
|
+
var import_bbox_polygon = __toESM(require("@turf/bbox-polygon"), 1);
|
|
2058
1285
|
var import_helpers6 = require("@turf/helpers");
|
|
2059
1286
|
var import_polygon_to_line = require("@turf/polygon-to-line");
|
|
2060
1287
|
var import_meta2 = require("@turf/meta");
|
|
2061
|
-
var
|
|
1288
|
+
var import_distance2 = __toESM(require("@turf/distance"), 1);
|
|
2062
1289
|
var import_transform_scale = __toESM(require("@turf/transform-scale"), 1);
|
|
2063
1290
|
var import_invariant2 = require("@turf/invariant");
|
|
2064
1291
|
var ScaleMode = class extends GeoJsonEditMode {
|
|
@@ -2107,12 +1334,7 @@ var ScaleMode = class extends GeoJsonEditMode {
|
|
|
2107
1334
|
const oppositeHandle = this._getOppositeScaleHandle(this._selectedEditHandle);
|
|
2108
1335
|
const origin = (0, import_invariant2.getCoord)(oppositeHandle);
|
|
2109
1336
|
const scaleFactor = getScaleFactor(origin, startDragPoint, currentPoint);
|
|
2110
|
-
const scaledFeatures = (0, import_transform_scale.default)(
|
|
2111
|
-
// @ts-expect-error turf types diff
|
|
2112
|
-
this._geometryBeingScaled,
|
|
2113
|
-
scaleFactor,
|
|
2114
|
-
{ origin }
|
|
2115
|
-
);
|
|
1337
|
+
const scaledFeatures = (0, import_transform_scale.default)(this._geometryBeingScaled, scaleFactor, { origin });
|
|
2116
1338
|
return {
|
|
2117
1339
|
updatedData: this._getUpdatedData(props, scaledFeatures),
|
|
2118
1340
|
editType,
|
|
@@ -2186,7 +1408,7 @@ var ScaleMode = class extends GeoJsonEditMode {
|
|
|
2186
1408
|
if (this._isSinglePointGeometrySelected(selectedGeometry)) {
|
|
2187
1409
|
return { type: "FeatureCollection", features: [] };
|
|
2188
1410
|
}
|
|
2189
|
-
const boundingBox = (0,
|
|
1411
|
+
const boundingBox = (0, import_bbox_polygon.default)((0, import_bbox.default)(selectedGeometry));
|
|
2190
1412
|
boundingBox.properties.mode = "scale";
|
|
2191
1413
|
const cornerGuidePoints = [];
|
|
2192
1414
|
(0, import_meta2.coordEach)(boundingBox, (coord, coordIndex) => {
|
|
@@ -2204,17 +1426,17 @@ var ScaleMode = class extends GeoJsonEditMode {
|
|
|
2204
1426
|
}
|
|
2205
1427
|
};
|
|
2206
1428
|
function getScaleFactor(centroid, startDragPoint, currentPoint) {
|
|
2207
|
-
const startDistance = (0,
|
|
2208
|
-
const endDistance = (0,
|
|
1429
|
+
const startDistance = (0, import_distance2.default)(centroid, startDragPoint);
|
|
1430
|
+
const endDistance = (0, import_distance2.default)(centroid, currentPoint);
|
|
2209
1431
|
return endDistance / startDistance;
|
|
2210
1432
|
}
|
|
2211
1433
|
|
|
2212
1434
|
// dist/edit-modes/rotate-mode.js
|
|
2213
|
-
var
|
|
1435
|
+
var import_bbox2 = __toESM(require("@turf/bbox"), 1);
|
|
2214
1436
|
var import_centroid2 = __toESM(require("@turf/centroid"), 1);
|
|
2215
1437
|
var import_bearing5 = __toESM(require("@turf/bearing"), 1);
|
|
2216
|
-
var
|
|
2217
|
-
var
|
|
1438
|
+
var import_bbox_polygon2 = __toESM(require("@turf/bbox-polygon"), 1);
|
|
1439
|
+
var import_distance3 = __toESM(require("@turf/distance"), 1);
|
|
2218
1440
|
var import_meta3 = require("@turf/meta");
|
|
2219
1441
|
var import_invariant3 = require("@turf/invariant");
|
|
2220
1442
|
var import_helpers7 = require("@turf/helpers");
|
|
@@ -2241,7 +1463,7 @@ var RotateMode = class extends GeoJsonEditMode {
|
|
|
2241
1463
|
if (this._isRotating) {
|
|
2242
1464
|
return (0, import_helpers7.featureCollection)([(0, import_centroid2.default)(selectedGeometry)]);
|
|
2243
1465
|
}
|
|
2244
|
-
const boundingBox = (0,
|
|
1466
|
+
const boundingBox = (0, import_bbox_polygon2.default)((0, import_bbox2.default)(selectedGeometry));
|
|
2245
1467
|
let previousCoord = null;
|
|
2246
1468
|
let topEdgeMidpointCoords = null;
|
|
2247
1469
|
let longestEdgeLength = 0;
|
|
@@ -2251,7 +1473,7 @@ var RotateMode = class extends GeoJsonEditMode {
|
|
|
2251
1473
|
if (!topEdgeMidpointCoords || edgeMidpoint[1] > topEdgeMidpointCoords[1]) {
|
|
2252
1474
|
topEdgeMidpointCoords = edgeMidpoint;
|
|
2253
1475
|
}
|
|
2254
|
-
const edgeDistance = (0,
|
|
1476
|
+
const edgeDistance = (0, import_distance3.default)(coord, previousCoord);
|
|
2255
1477
|
longestEdgeLength = Math.max(longestEdgeLength, edgeDistance);
|
|
2256
1478
|
}
|
|
2257
1479
|
previousCoord = coord;
|
|
@@ -2315,15 +1537,10 @@ var RotateMode = class extends GeoJsonEditMode {
|
|
|
2315
1537
|
return null;
|
|
2316
1538
|
}
|
|
2317
1539
|
const centroid = (0, import_centroid2.default)(this._geometryBeingRotated);
|
|
2318
|
-
const angle = getRotationAngle(centroid, startDragPoint, currentPoint);
|
|
2319
|
-
const rotatedFeatures = (0, import_transform_rotate.default)(
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
angle,
|
|
2323
|
-
{
|
|
2324
|
-
pivot: centroid
|
|
2325
|
-
}
|
|
2326
|
-
);
|
|
1540
|
+
const angle = getRotationAngle(centroid.geometry.coordinates, startDragPoint, currentPoint);
|
|
1541
|
+
const rotatedFeatures = (0, import_transform_rotate.default)(this._geometryBeingRotated, angle, {
|
|
1542
|
+
pivot: centroid
|
|
1543
|
+
});
|
|
2327
1544
|
let updatedData = new ImmutableFeatureCollection(props.data);
|
|
2328
1545
|
const selectedIndexes = props.selectedIndexes;
|
|
2329
1546
|
for (let i = 0; i < selectedIndexes.length; i++) {
|
|
@@ -2365,12 +1582,12 @@ var DuplicateMode = class extends TranslateMode {
|
|
|
2365
1582
|
|
|
2366
1583
|
// dist/edit-modes/split-polygon-mode.js
|
|
2367
1584
|
var import_boolean_point_in_polygon = __toESM(require("@turf/boolean-point-in-polygon"), 1);
|
|
2368
|
-
var
|
|
2369
|
-
var
|
|
1585
|
+
var import_difference2 = __toESM(require("@turf/difference"), 1);
|
|
1586
|
+
var import_buffer = __toESM(require("@turf/buffer"), 1);
|
|
2370
1587
|
var import_line_intersect = __toESM(require("@turf/line-intersect"), 1);
|
|
2371
1588
|
var import_helpers8 = require("@turf/helpers");
|
|
2372
1589
|
var import_bearing6 = __toESM(require("@turf/bearing"), 1);
|
|
2373
|
-
var
|
|
1590
|
+
var import_distance4 = __toESM(require("@turf/distance"), 1);
|
|
2374
1591
|
var import_destination3 = __toESM(require("@turf/destination"), 1);
|
|
2375
1592
|
var import_polygon_to_line3 = __toESM(require("@turf/polygon-to-line"), 1);
|
|
2376
1593
|
var import_nearest_point_on_line = __toESM(require("@turf/nearest-point-on-line"), 1);
|
|
@@ -2389,7 +1606,7 @@ var SplitPolygonMode = class extends GeoJsonEditMode {
|
|
|
2389
1606
|
let closestPoint = null;
|
|
2390
1607
|
lines.forEach((line) => {
|
|
2391
1608
|
const snapPoint = (0, import_nearest_point_on_line.default)(line, firstPoint);
|
|
2392
|
-
const distanceFromOrigin = (0,
|
|
1609
|
+
const distanceFromOrigin = (0, import_distance4.default)(snapPoint, firstPoint);
|
|
2393
1610
|
if (minDistance > distanceFromOrigin) {
|
|
2394
1611
|
minDistance = distanceFromOrigin;
|
|
2395
1612
|
closestPoint = snapPoint;
|
|
@@ -2397,7 +1614,7 @@ var SplitPolygonMode = class extends GeoJsonEditMode {
|
|
|
2397
1614
|
});
|
|
2398
1615
|
if (closestPoint) {
|
|
2399
1616
|
const lastBearing = (0, import_bearing6.default)(firstPoint, closestPoint);
|
|
2400
|
-
const currentDistance = (0,
|
|
1617
|
+
const currentDistance = (0, import_distance4.default)(firstPoint, mapCoords2, { units: "meters" });
|
|
2401
1618
|
return (0, import_destination3.default)(firstPoint, currentDistance, lastBearing, {
|
|
2402
1619
|
units: "meters"
|
|
2403
1620
|
}).geometry.coordinates;
|
|
@@ -2473,8 +1690,8 @@ var SplitPolygonMode = class extends GeoJsonEditMode {
|
|
|
2473
1690
|
gap = 0.1;
|
|
2474
1691
|
units = "centimeters";
|
|
2475
1692
|
}
|
|
2476
|
-
const buffer = (0,
|
|
2477
|
-
const updatedGeometry = (0,
|
|
1693
|
+
const buffer = (0, import_buffer.default)(tentativeFeature, gap, { units });
|
|
1694
|
+
const updatedGeometry = (0, import_difference2.default)((0, import_helpers8.featureCollection)([(0, import_helpers8.feature)(selectedGeometry), buffer]));
|
|
2478
1695
|
if (!updatedGeometry) {
|
|
2479
1696
|
console.warn("Canceling edit. Split Polygon erased");
|
|
2480
1697
|
return null;
|
|
@@ -2749,7 +1966,7 @@ var DrawPointMode = class extends GeoJsonEditMode {
|
|
|
2749
1966
|
};
|
|
2750
1967
|
|
|
2751
1968
|
// dist/edit-modes/draw-line-string-mode.js
|
|
2752
|
-
var
|
|
1969
|
+
var import_distance5 = __toESM(require("@turf/distance"), 1);
|
|
2753
1970
|
|
|
2754
1971
|
// dist/utils/memoize.js
|
|
2755
1972
|
function isEqual(a, b) {
|
|
@@ -2906,7 +2123,7 @@ var DrawLineStringMode = class extends GeoJsonEditMode {
|
|
|
2906
2123
|
calculateInfoDraw(clickSequence) {
|
|
2907
2124
|
if (clickSequence.length > 1) {
|
|
2908
2125
|
this.position = clickSequence[clickSequence.length - 1];
|
|
2909
|
-
this.dist += (0,
|
|
2126
|
+
this.dist += (0, import_distance5.default)(clickSequence[clickSequence.length - 2], clickSequence[clickSequence.length - 1]);
|
|
2910
2127
|
}
|
|
2911
2128
|
}
|
|
2912
2129
|
/**
|
|
@@ -2936,9 +2153,10 @@ var DrawLineStringMode = class extends GeoJsonEditMode {
|
|
|
2936
2153
|
};
|
|
2937
2154
|
|
|
2938
2155
|
// dist/edit-modes/draw-polygon-mode.js
|
|
2939
|
-
var import_line_intersect2 =
|
|
2156
|
+
var import_line_intersect2 = require("@turf/line-intersect");
|
|
2940
2157
|
var import_helpers9 = require("@turf/helpers");
|
|
2941
|
-
var import_boolean_within =
|
|
2158
|
+
var import_boolean_within = require("@turf/boolean-within");
|
|
2159
|
+
var import_kinks = require("@turf/kinks");
|
|
2942
2160
|
var DrawPolygonMode = class extends GeoJsonEditMode {
|
|
2943
2161
|
holeSequence = [];
|
|
2944
2162
|
isDrawingHole = false;
|
|
@@ -3079,12 +2297,12 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
|
|
|
3079
2297
|
// eslint-disable-next-line max-statements, complexity
|
|
3080
2298
|
finishDrawing(props) {
|
|
3081
2299
|
const clickSequence = this.getClickSequence();
|
|
3082
|
-
const
|
|
3083
|
-
const newPolygon = (0, import_helpers9.polygon)([
|
|
2300
|
+
const polygon2 = [...clickSequence, clickSequence[0]];
|
|
2301
|
+
const newPolygon = (0, import_helpers9.polygon)([polygon2]);
|
|
3084
2302
|
const canAddHole = canAddHoleToPolygon(props);
|
|
3085
2303
|
const canOverlap = canPolygonOverlap(props);
|
|
3086
2304
|
if (!canOverlap) {
|
|
3087
|
-
const overlapping = (0,
|
|
2305
|
+
const overlapping = (0, import_kinks.kinks)(newPolygon).features;
|
|
3088
2306
|
if (overlapping.length > 0) {
|
|
3089
2307
|
props.onEdit({
|
|
3090
2308
|
updatedData: props.data,
|
|
@@ -3096,7 +2314,7 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
|
|
|
3096
2314
|
}
|
|
3097
2315
|
}
|
|
3098
2316
|
if (canAddHole) {
|
|
3099
|
-
const holeResult = this.tryAddHoleToExistingPolygon(newPolygon,
|
|
2317
|
+
const holeResult = this.tryAddHoleToExistingPolygon(newPolygon, polygon2, props);
|
|
3100
2318
|
if (holeResult.handled) {
|
|
3101
2319
|
this.resetClickSequence();
|
|
3102
2320
|
return;
|
|
@@ -3111,10 +2329,10 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
|
|
|
3111
2329
|
this.resetClickSequence();
|
|
3112
2330
|
return;
|
|
3113
2331
|
}
|
|
3114
|
-
tryAddHoleToExistingPolygon(newPolygon,
|
|
2332
|
+
tryAddHoleToExistingPolygon(newPolygon, polygon2, props) {
|
|
3115
2333
|
for (const [featureIndex, feature] of props.data.features.entries()) {
|
|
3116
2334
|
if (feature.geometry.type === "Polygon") {
|
|
3117
|
-
const result = this.validateAndCreateHole(feature, featureIndex, newPolygon,
|
|
2335
|
+
const result = this.validateAndCreateHole(feature, featureIndex, newPolygon, polygon2, props);
|
|
3118
2336
|
if (result.handled) {
|
|
3119
2337
|
return result;
|
|
3120
2338
|
}
|
|
@@ -3122,11 +2340,11 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
|
|
|
3122
2340
|
}
|
|
3123
2341
|
return { handled: false };
|
|
3124
2342
|
}
|
|
3125
|
-
validateAndCreateHole(feature, featureIndex, newPolygon,
|
|
2343
|
+
validateAndCreateHole(feature, featureIndex, newPolygon, polygon2, props) {
|
|
3126
2344
|
const outer = (0, import_helpers9.polygon)(feature.geometry.coordinates);
|
|
3127
2345
|
for (let i = 1; i < feature.geometry.coordinates.length; i++) {
|
|
3128
2346
|
const hole = (0, import_helpers9.polygon)([feature.geometry.coordinates[i]]);
|
|
3129
|
-
const intersection = (0, import_line_intersect2.
|
|
2347
|
+
const intersection = (0, import_line_intersect2.lineIntersect)(hole, newPolygon);
|
|
3130
2348
|
if (intersection.features.length > 0) {
|
|
3131
2349
|
props.onEdit({
|
|
3132
2350
|
updatedData: props.data,
|
|
@@ -3135,7 +2353,7 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
|
|
|
3135
2353
|
});
|
|
3136
2354
|
return { handled: true };
|
|
3137
2355
|
}
|
|
3138
|
-
if ((0, import_boolean_within.
|
|
2356
|
+
if ((0, import_boolean_within.booleanWithin)(hole, newPolygon) || (0, import_boolean_within.booleanWithin)(newPolygon, hole)) {
|
|
3139
2357
|
props.onEdit({
|
|
3140
2358
|
updatedData: props.data,
|
|
3141
2359
|
editType: "invalidHole",
|
|
@@ -3144,7 +2362,7 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
|
|
|
3144
2362
|
return { handled: true };
|
|
3145
2363
|
}
|
|
3146
2364
|
}
|
|
3147
|
-
const intersectionWithOuter = (0, import_line_intersect2.
|
|
2365
|
+
const intersectionWithOuter = (0, import_line_intersect2.lineIntersect)(outer, newPolygon);
|
|
3148
2366
|
if (intersectionWithOuter.features.length > 0) {
|
|
3149
2367
|
props.onEdit({
|
|
3150
2368
|
updatedData: props.data,
|
|
@@ -3153,7 +2371,7 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
|
|
|
3153
2371
|
});
|
|
3154
2372
|
return { handled: true };
|
|
3155
2373
|
}
|
|
3156
|
-
if ((0, import_boolean_within.
|
|
2374
|
+
if ((0, import_boolean_within.booleanWithin)(outer, newPolygon)) {
|
|
3157
2375
|
props.onEdit({
|
|
3158
2376
|
updatedData: props.data,
|
|
3159
2377
|
editType: "invalidPolygon",
|
|
@@ -3161,10 +2379,10 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
|
|
|
3161
2379
|
});
|
|
3162
2380
|
return { handled: true };
|
|
3163
2381
|
}
|
|
3164
|
-
if ((0, import_boolean_within.
|
|
2382
|
+
if ((0, import_boolean_within.booleanWithin)(newPolygon, outer)) {
|
|
3165
2383
|
const updatedData = new ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, {
|
|
3166
2384
|
...feature.geometry,
|
|
3167
|
-
coordinates: [...feature.geometry.coordinates,
|
|
2385
|
+
coordinates: [...feature.geometry.coordinates, polygon2]
|
|
3168
2386
|
}).getObject();
|
|
3169
2387
|
props.onEdit({
|
|
3170
2388
|
updatedData,
|
|
@@ -3191,7 +2409,7 @@ function canPolygonOverlap(props) {
|
|
|
3191
2409
|
}
|
|
3192
2410
|
|
|
3193
2411
|
// dist/edit-modes/draw-rectangle-mode.js
|
|
3194
|
-
var
|
|
2412
|
+
var import_bbox_polygon3 = __toESM(require("@turf/bbox-polygon"), 1);
|
|
3195
2413
|
|
|
3196
2414
|
// dist/edit-modes/two-click-polygon-mode.js
|
|
3197
2415
|
var import_lodash = __toESM(require("lodash.omit"), 1);
|
|
@@ -3248,15 +2466,15 @@ var TwoClickPolygonMode = class extends GeoJsonEditMode {
|
|
|
3248
2466
|
}
|
|
3249
2467
|
const corner1 = clickSequence[0];
|
|
3250
2468
|
const corner2 = lastPointerMoveEvent.mapCoords;
|
|
3251
|
-
const
|
|
3252
|
-
if (
|
|
2469
|
+
const polygon2 = this.getTwoClickPolygon(corner1, corner2, modeConfig);
|
|
2470
|
+
if (polygon2) {
|
|
3253
2471
|
guides.features.push({
|
|
3254
2472
|
type: "Feature",
|
|
3255
2473
|
properties: {
|
|
3256
|
-
...
|
|
2474
|
+
...polygon2.properties,
|
|
3257
2475
|
guideType: "tentative"
|
|
3258
2476
|
},
|
|
3259
|
-
geometry:
|
|
2477
|
+
geometry: polygon2.geometry
|
|
3260
2478
|
});
|
|
3261
2479
|
}
|
|
3262
2480
|
return guides;
|
|
@@ -3283,7 +2501,7 @@ var TwoClickPolygonMode = class extends GeoJsonEditMode {
|
|
|
3283
2501
|
// dist/edit-modes/draw-rectangle-mode.js
|
|
3284
2502
|
var DrawRectangleMode = class extends TwoClickPolygonMode {
|
|
3285
2503
|
getTwoClickPolygon(coord1, coord2, modeConfig) {
|
|
3286
|
-
const rectangle = (0,
|
|
2504
|
+
const rectangle = (0, import_bbox_polygon3.default)([coord1[0], coord1[1], coord2[0], coord2[1]]);
|
|
3287
2505
|
rectangle.properties = rectangle.properties || {};
|
|
3288
2506
|
rectangle.properties.shape = "Rectangle";
|
|
3289
2507
|
return rectangle;
|
|
@@ -3291,22 +2509,22 @@ var DrawRectangleMode = class extends TwoClickPolygonMode {
|
|
|
3291
2509
|
};
|
|
3292
2510
|
|
|
3293
2511
|
// dist/edit-modes/draw-square-mode.js
|
|
3294
|
-
var
|
|
3295
|
-
var
|
|
2512
|
+
var import_bbox_polygon4 = __toESM(require("@turf/bbox-polygon"), 1);
|
|
2513
|
+
var import_distance6 = __toESM(require("@turf/distance"), 1);
|
|
3296
2514
|
var import_along = __toESM(require("@turf/along"), 1);
|
|
3297
2515
|
var import_helpers10 = require("@turf/helpers");
|
|
3298
2516
|
var DrawSquareMode = class extends TwoClickPolygonMode {
|
|
3299
2517
|
getTwoClickPolygon(coord1, coord2, modeConfig) {
|
|
3300
2518
|
const coord3 = [coord2[0], coord1[1]];
|
|
3301
2519
|
const coord4 = [coord1[0], coord2[1]];
|
|
3302
|
-
const distance1 = (0,
|
|
3303
|
-
const distance22 = (0,
|
|
2520
|
+
const distance1 = (0, import_distance6.default)((0, import_helpers10.point)(coord3), (0, import_helpers10.point)(coord1));
|
|
2521
|
+
const distance22 = (0, import_distance6.default)((0, import_helpers10.point)(coord4), (0, import_helpers10.point)(coord1));
|
|
3304
2522
|
const shortestDistance = distance1 <= distance22 ? distance1 : distance22;
|
|
3305
2523
|
const closestPoint = distance1 <= distance22 ? coord3 : coord4;
|
|
3306
2524
|
const line = (0, import_helpers10.lineString)([closestPoint, coord2]);
|
|
3307
2525
|
const newPoint = (0, import_along.default)(line, shortestDistance);
|
|
3308
2526
|
const corner = newPoint.geometry.coordinates;
|
|
3309
|
-
const square = (0,
|
|
2527
|
+
const square = (0, import_bbox_polygon4.default)([coord1[0], coord1[1], corner[0], corner[1]]);
|
|
3310
2528
|
square.properties = square.properties || {};
|
|
3311
2529
|
square.properties.shape = "Square";
|
|
3312
2530
|
return square;
|
|
@@ -3314,12 +2532,12 @@ var DrawSquareMode = class extends TwoClickPolygonMode {
|
|
|
3314
2532
|
};
|
|
3315
2533
|
|
|
3316
2534
|
// dist/edit-modes/draw-rectangle-from-center-mode.js
|
|
3317
|
-
var
|
|
2535
|
+
var import_bbox_polygon5 = __toESM(require("@turf/bbox-polygon"), 1);
|
|
3318
2536
|
var DrawRectangleFromCenterMode = class extends TwoClickPolygonMode {
|
|
3319
2537
|
getTwoClickPolygon(coord1, coord2, modeConfig) {
|
|
3320
2538
|
const longitude = coord1[0] > coord2[0] ? coord1[0] + Math.abs(coord1[0] - coord2[0]) : coord1[0] - Math.abs(coord1[0] - coord2[0]);
|
|
3321
2539
|
const latitude = coord1[1] > coord2[1] ? coord1[1] + Math.abs(coord1[1] - coord2[1]) : coord1[1] - Math.abs(coord1[1] - coord2[1]);
|
|
3322
|
-
const rectangle = (0,
|
|
2540
|
+
const rectangle = (0, import_bbox_polygon5.default)([longitude, latitude, coord2[0], coord2[1]]);
|
|
3323
2541
|
rectangle.properties = rectangle.properties || {};
|
|
3324
2542
|
rectangle.properties.shape = "Rectangle";
|
|
3325
2543
|
return rectangle;
|
|
@@ -3327,16 +2545,16 @@ var DrawRectangleFromCenterMode = class extends TwoClickPolygonMode {
|
|
|
3327
2545
|
};
|
|
3328
2546
|
|
|
3329
2547
|
// dist/edit-modes/draw-square-from-center-mode.js
|
|
3330
|
-
var
|
|
3331
|
-
var
|
|
2548
|
+
var import_bbox_polygon6 = __toESM(require("@turf/bbox-polygon"), 1);
|
|
2549
|
+
var import_distance7 = __toESM(require("@turf/distance"), 1);
|
|
3332
2550
|
var import_along2 = __toESM(require("@turf/along"), 1);
|
|
3333
2551
|
var import_helpers11 = require("@turf/helpers");
|
|
3334
2552
|
var DrawSquareFromCenterMode = class extends TwoClickPolygonMode {
|
|
3335
2553
|
getTwoClickPolygon(coord1, coord2, modeConfig) {
|
|
3336
2554
|
const coord3 = [coord2[0], coord1[1]];
|
|
3337
2555
|
const coord4 = [coord1[0], coord2[1]];
|
|
3338
|
-
const distance1 = (0,
|
|
3339
|
-
const distance22 = (0,
|
|
2556
|
+
const distance1 = (0, import_distance7.default)((0, import_helpers11.point)(coord3), (0, import_helpers11.point)(coord1));
|
|
2557
|
+
const distance22 = (0, import_distance7.default)((0, import_helpers11.point)(coord4), (0, import_helpers11.point)(coord1));
|
|
3340
2558
|
const shortestDistance = distance1 <= distance22 ? distance1 : distance22;
|
|
3341
2559
|
const closestPoint = distance1 <= distance22 ? coord3 : coord4;
|
|
3342
2560
|
const line = (0, import_helpers11.lineString)([closestPoint, coord2]);
|
|
@@ -3344,7 +2562,7 @@ var DrawSquareFromCenterMode = class extends TwoClickPolygonMode {
|
|
|
3344
2562
|
const corner = newPoint.geometry.coordinates;
|
|
3345
2563
|
const longitude = coord1[0] > corner[0] ? coord1[0] + Math.abs(coord1[0] - corner[0]) : coord1[0] - Math.abs(coord1[0] - corner[0]);
|
|
3346
2564
|
const latitude = coord1[1] > corner[1] ? coord1[1] + Math.abs(coord1[1] - corner[1]) : coord1[1] - Math.abs(coord1[1] - corner[1]);
|
|
3347
|
-
const square = (0,
|
|
2565
|
+
const square = (0, import_bbox_polygon6.default)([longitude, latitude, corner[0], corner[1]]);
|
|
3348
2566
|
square.properties = square.properties || {};
|
|
3349
2567
|
square.properties.shape = "Square";
|
|
3350
2568
|
return square;
|
|
@@ -3353,7 +2571,7 @@ var DrawSquareFromCenterMode = class extends TwoClickPolygonMode {
|
|
|
3353
2571
|
|
|
3354
2572
|
// dist/edit-modes/draw-circle-from-center-mode.js
|
|
3355
2573
|
var import_circle = __toESM(require("@turf/circle"), 1);
|
|
3356
|
-
var
|
|
2574
|
+
var import_distance8 = __toESM(require("@turf/distance"), 1);
|
|
3357
2575
|
var import_area = __toESM(require("@turf/area"), 1);
|
|
3358
2576
|
var DrawCircleFromCenterMode = class extends TwoClickPolygonMode {
|
|
3359
2577
|
radius = null;
|
|
@@ -3367,7 +2585,7 @@ var DrawCircleFromCenterMode = class extends TwoClickPolygonMode {
|
|
|
3367
2585
|
console.warn("Minimum steps to draw a circle is 4 ");
|
|
3368
2586
|
options.steps = 4;
|
|
3369
2587
|
}
|
|
3370
|
-
this.radius = Math.max((0,
|
|
2588
|
+
this.radius = Math.max((0, import_distance8.default)(coord1, coord2), 1e-3);
|
|
3371
2589
|
const geometry = (0, import_circle.default)(coord1, this.radius, options);
|
|
3372
2590
|
geometry.properties = geometry.properties || {};
|
|
3373
2591
|
geometry.properties.shape = "Circle";
|
|
@@ -3421,7 +2639,7 @@ var DrawCircleFromCenterMode = class extends TwoClickPolygonMode {
|
|
|
3421
2639
|
|
|
3422
2640
|
// dist/edit-modes/draw-circle-by-diameter-mode.js
|
|
3423
2641
|
var import_circle2 = __toESM(require("@turf/circle"), 1);
|
|
3424
|
-
var
|
|
2642
|
+
var import_distance9 = __toESM(require("@turf/distance"), 1);
|
|
3425
2643
|
var import_area2 = __toESM(require("@turf/area"), 1);
|
|
3426
2644
|
var DrawCircleByDiameterMode = class extends TwoClickPolygonMode {
|
|
3427
2645
|
radius = null;
|
|
@@ -3436,8 +2654,8 @@ var DrawCircleByDiameterMode = class extends TwoClickPolygonMode {
|
|
|
3436
2654
|
options.steps = 4;
|
|
3437
2655
|
}
|
|
3438
2656
|
const centerCoordinates = getIntermediatePosition(coord1, coord2);
|
|
3439
|
-
this.radius = Math.max((0,
|
|
3440
|
-
this.diameter = Math.max((0,
|
|
2657
|
+
this.radius = Math.max((0, import_distance9.default)(coord1, centerCoordinates), 1e-3);
|
|
2658
|
+
this.diameter = Math.max((0, import_distance9.default)(coord1, coord2), 1e-3);
|
|
3441
2659
|
this.position = centerCoordinates;
|
|
3442
2660
|
const geometry = (0, import_circle2.default)(centerCoordinates, this.radius, options);
|
|
3443
2661
|
geometry.properties = geometry.properties || {};
|
|
@@ -3495,8 +2713,8 @@ var DrawCircleByDiameterMode = class extends TwoClickPolygonMode {
|
|
|
3495
2713
|
};
|
|
3496
2714
|
|
|
3497
2715
|
// dist/edit-modes/draw-ellipse-by-bounding-box-mode.js
|
|
3498
|
-
var
|
|
3499
|
-
var
|
|
2716
|
+
var import_bbox_polygon7 = __toESM(require("@turf/bbox-polygon"), 1);
|
|
2717
|
+
var import_distance10 = __toESM(require("@turf/distance"), 1);
|
|
3500
2718
|
var import_ellipse = __toESM(require("@turf/ellipse"), 1);
|
|
3501
2719
|
var import_helpers12 = require("@turf/helpers");
|
|
3502
2720
|
var DrawEllipseByBoundingBoxMode = class extends TwoClickPolygonMode {
|
|
@@ -3505,11 +2723,11 @@ var DrawEllipseByBoundingBoxMode = class extends TwoClickPolygonMode {
|
|
|
3505
2723
|
const minY = Math.min(coord1[1], coord2[1]);
|
|
3506
2724
|
const maxX = Math.max(coord1[0], coord2[0]);
|
|
3507
2725
|
const maxY = Math.max(coord1[1], coord2[1]);
|
|
3508
|
-
const polygonPoints = (0,
|
|
2726
|
+
const polygonPoints = (0, import_bbox_polygon7.default)([minX, minY, maxX, maxY]).geometry.coordinates[0];
|
|
3509
2727
|
const centerCoordinates = getIntermediatePosition(coord1, coord2);
|
|
3510
|
-
const xSemiAxis = Math.max((0,
|
|
3511
|
-
const ySemiAxis = Math.max((0,
|
|
3512
|
-
const geometry = (0, import_ellipse.default)(centerCoordinates, xSemiAxis, ySemiAxis);
|
|
2728
|
+
const xSemiAxis = Math.max((0, import_distance10.default)((0, import_helpers12.point)(polygonPoints[0]), (0, import_helpers12.point)(polygonPoints[1])), 1e-3);
|
|
2729
|
+
const ySemiAxis = Math.max((0, import_distance10.default)((0, import_helpers12.point)(polygonPoints[0]), (0, import_helpers12.point)(polygonPoints[3])), 1e-3);
|
|
2730
|
+
const geometry = (0, import_ellipse.default)(centerCoordinates, xSemiAxis, ySemiAxis, {});
|
|
3513
2731
|
geometry.properties = geometry.properties || {};
|
|
3514
2732
|
geometry.properties.editProperties = geometry.properties.editProperties || {};
|
|
3515
2733
|
geometry.properties.editProperties.shape = "Ellipse";
|
|
@@ -3522,14 +2740,14 @@ var DrawEllipseByBoundingBoxMode = class extends TwoClickPolygonMode {
|
|
|
3522
2740
|
};
|
|
3523
2741
|
|
|
3524
2742
|
// dist/edit-modes/three-click-polygon-mode.js
|
|
3525
|
-
var import_lodash2 = __toESM(require("lodash.omit"), 1);
|
|
3526
2743
|
var ThreeClickPolygonMode = class extends GeoJsonEditMode {
|
|
3527
2744
|
handleClick(event, props) {
|
|
3528
2745
|
this.addClickSequence(event);
|
|
2746
|
+
const { modeConfig } = props;
|
|
3529
2747
|
const clickSequence = this.getClickSequence();
|
|
3530
|
-
|
|
3531
|
-
|
|
3532
|
-
const editAction = this.getAddFeatureOrBooleanPolygonAction(
|
|
2748
|
+
if (clickSequence.length > 2) {
|
|
2749
|
+
const { geometry, properties } = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], clickSequence[2], modeConfig);
|
|
2750
|
+
const editAction = this.getAddFeatureOrBooleanPolygonAction(geometry, props, properties);
|
|
3533
2751
|
this.resetClickSequence();
|
|
3534
2752
|
if (editAction) {
|
|
3535
2753
|
props.onEdit(editAction);
|
|
@@ -3543,11 +2761,11 @@ var ThreeClickPolygonMode = class extends GeoJsonEditMode {
|
|
|
3543
2761
|
type: "FeatureCollection",
|
|
3544
2762
|
features: []
|
|
3545
2763
|
};
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
if (
|
|
2764
|
+
const coords = [
|
|
2765
|
+
...clickSequence,
|
|
2766
|
+
...lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : []
|
|
2767
|
+
];
|
|
2768
|
+
if (coords.length === 2) {
|
|
3551
2769
|
guides.features.push({
|
|
3552
2770
|
type: "Feature",
|
|
3553
2771
|
properties: {
|
|
@@ -3555,19 +2773,18 @@ var ThreeClickPolygonMode = class extends GeoJsonEditMode {
|
|
|
3555
2773
|
},
|
|
3556
2774
|
geometry: {
|
|
3557
2775
|
type: "LineString",
|
|
3558
|
-
coordinates: [
|
|
2776
|
+
coordinates: [coords[0], coords[1]]
|
|
3559
2777
|
}
|
|
3560
2778
|
});
|
|
3561
|
-
} else {
|
|
3562
|
-
const
|
|
3563
|
-
if (
|
|
2779
|
+
} else if (coords.length > 2) {
|
|
2780
|
+
const polygon2 = this.getThreeClickPolygon(coords[0], coords[1], coords[2], modeConfig);
|
|
2781
|
+
if (polygon2) {
|
|
3564
2782
|
guides.features.push({
|
|
3565
|
-
|
|
2783
|
+
...polygon2,
|
|
3566
2784
|
properties: {
|
|
3567
|
-
...
|
|
2785
|
+
...polygon2.properties,
|
|
3568
2786
|
guideType: "tentative"
|
|
3569
|
-
}
|
|
3570
|
-
geometry: polygon3.geometry
|
|
2787
|
+
}
|
|
3571
2788
|
});
|
|
3572
2789
|
}
|
|
3573
2790
|
}
|
|
@@ -3621,15 +2838,15 @@ var DrawRectangleUsingThreePointsMode = class extends ThreeClickPolygonMode {
|
|
|
3621
2838
|
};
|
|
3622
2839
|
|
|
3623
2840
|
// dist/edit-modes/draw-ellipse-using-three-points-mode.js
|
|
3624
|
-
var
|
|
2841
|
+
var import_distance11 = __toESM(require("@turf/distance"), 1);
|
|
3625
2842
|
var import_ellipse2 = __toESM(require("@turf/ellipse"), 1);
|
|
3626
2843
|
var import_bearing8 = __toESM(require("@turf/bearing"), 1);
|
|
3627
2844
|
var import_helpers13 = require("@turf/helpers");
|
|
3628
2845
|
var DrawEllipseUsingThreePointsMode = class extends ThreeClickPolygonMode {
|
|
3629
2846
|
getThreeClickPolygon(coord1, coord2, coord3, modeConfig) {
|
|
3630
2847
|
const centerCoordinates = getIntermediatePosition(coord1, coord2);
|
|
3631
|
-
const xSemiAxis = Math.max((0,
|
|
3632
|
-
const ySemiAxis = Math.max((0,
|
|
2848
|
+
const xSemiAxis = Math.max((0, import_distance11.default)(centerCoordinates, (0, import_helpers13.point)(coord3)), 1e-3);
|
|
2849
|
+
const ySemiAxis = Math.max((0, import_distance11.default)(coord1, coord2), 1e-3) / 2;
|
|
3633
2850
|
const options = { angle: (0, import_bearing8.default)(coord1, coord2) };
|
|
3634
2851
|
const geometry = (0, import_ellipse2.default)(centerCoordinates, xSemiAxis, ySemiAxis, options);
|
|
3635
2852
|
geometry.properties = geometry.properties || {};
|
|
@@ -3647,7 +2864,7 @@ var DrawEllipseUsingThreePointsMode = class extends ThreeClickPolygonMode {
|
|
|
3647
2864
|
var import_destination4 = __toESM(require("@turf/destination"), 1);
|
|
3648
2865
|
var import_bearing9 = __toESM(require("@turf/bearing"), 1);
|
|
3649
2866
|
var import_line_intersect3 = __toESM(require("@turf/line-intersect"), 1);
|
|
3650
|
-
var
|
|
2867
|
+
var import_distance12 = __toESM(require("@turf/distance"), 1);
|
|
3651
2868
|
var import_helpers14 = require("@turf/helpers");
|
|
3652
2869
|
var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
|
|
3653
2870
|
createTentativeFeature(props) {
|
|
@@ -3718,13 +2935,13 @@ var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
|
|
|
3718
2935
|
const lineString3 = tentativeFeature.geometry;
|
|
3719
2936
|
clickSequence[clickSequence.length - 1] = lineString3.coordinates[lineString3.coordinates.length - 1];
|
|
3720
2937
|
} else if (clickSequence.length > 3 && tentativeFeature.geometry.type === "Polygon") {
|
|
3721
|
-
const
|
|
3722
|
-
clickSequence[clickSequence.length - 1] =
|
|
2938
|
+
const polygon2 = tentativeFeature.geometry;
|
|
2939
|
+
clickSequence[clickSequence.length - 1] = polygon2.coordinates[0][polygon2.coordinates[0].length - 2];
|
|
3723
2940
|
const clickedEditHandle = getPickedEditHandle(picks);
|
|
3724
|
-
if (clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[1] === 0 || clickedEditHandle.properties.positionIndexes[1] ===
|
|
2941
|
+
if (clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[1] === 0 || clickedEditHandle.properties.positionIndexes[1] === polygon2.coordinates[0].length - 3)) {
|
|
3725
2942
|
const polygonToAdd = {
|
|
3726
2943
|
type: "Polygon",
|
|
3727
|
-
coordinates: this.finalizedCoordinates([...
|
|
2944
|
+
coordinates: this.finalizedCoordinates([...polygon2.coordinates[0]])
|
|
3728
2945
|
};
|
|
3729
2946
|
this.resetClickSequence();
|
|
3730
2947
|
const editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);
|
|
@@ -3777,7 +2994,7 @@ var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
|
|
|
3777
2994
|
const newAngle2 = angle2 + factor * 90;
|
|
3778
2995
|
angles.second.push(newAngle2 > 180 ? newAngle2 - 360 : newAngle2);
|
|
3779
2996
|
});
|
|
3780
|
-
const distance7 = (0,
|
|
2997
|
+
const distance7 = (0, import_distance12.default)((0, import_helpers14.point)(p1), (0, import_helpers14.point)(p3));
|
|
3781
2998
|
[0, 1, 2].forEach((indexFirst) => {
|
|
3782
2999
|
const line1 = (0, import_helpers14.lineString)([
|
|
3783
3000
|
p1,
|
|
@@ -3800,7 +3017,7 @@ var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
|
|
|
3800
3017
|
};
|
|
3801
3018
|
|
|
3802
3019
|
// dist/edit-modes/draw-polygon-by-dragging-mode.js
|
|
3803
|
-
var
|
|
3020
|
+
var import_lodash2 = __toESM(require("lodash.throttle"), 1);
|
|
3804
3021
|
var DrawPolygonByDraggingMode = class extends DrawPolygonMode {
|
|
3805
3022
|
handleDraggingThrottled = null;
|
|
3806
3023
|
handleClick(event, props) {
|
|
@@ -3808,7 +3025,7 @@ var DrawPolygonByDraggingMode = class extends DrawPolygonMode {
|
|
|
3808
3025
|
handleStartDragging(event, props) {
|
|
3809
3026
|
event.cancelPan();
|
|
3810
3027
|
if (props.modeConfig && props.modeConfig.throttleMs) {
|
|
3811
|
-
this.handleDraggingThrottled = (0,
|
|
3028
|
+
this.handleDraggingThrottled = (0, import_lodash2.default)(this.handleDraggingAux, props.modeConfig.throttleMs);
|
|
3812
3029
|
} else {
|
|
3813
3030
|
this.handleDraggingThrottled = this.handleDraggingAux;
|
|
3814
3031
|
}
|
|
@@ -4107,12 +3324,12 @@ var DeleteMode = class extends GeoJsonEditMode {
|
|
|
4107
3324
|
};
|
|
4108
3325
|
|
|
4109
3326
|
// dist/constants.js
|
|
4110
|
-
var
|
|
3327
|
+
var PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;
|
|
4111
3328
|
|
|
4112
3329
|
// dist/editable-layers/editable-layer.js
|
|
4113
|
-
var
|
|
3330
|
+
var import_core = require("@deck.gl/core");
|
|
4114
3331
|
var EVENT_TYPES = ["click", "pointermove", "panstart", "panmove", "panend", "keyup", "dblclick"];
|
|
4115
|
-
var EditableLayer = class extends
|
|
3332
|
+
var EditableLayer = class extends import_core.CompositeLayer {
|
|
4116
3333
|
state = void 0;
|
|
4117
3334
|
// Overridable interaction event handlers
|
|
4118
3335
|
onLayerClick(event) {
|
|
@@ -4305,7 +3522,7 @@ var EditableLayer = class extends import_core3.CompositeLayer {
|
|
|
4305
3522
|
__publicField(EditableLayer, "layerName", "EditableLayer");
|
|
4306
3523
|
|
|
4307
3524
|
// dist/editable-layers/editable-path-layer.js
|
|
4308
|
-
var
|
|
3525
|
+
var import_layers = require("@deck.gl/layers");
|
|
4309
3526
|
var uniformBlock = `uniform pickingLineWidthUniforms {
|
|
4310
3527
|
float extraPixels;
|
|
4311
3528
|
} pickingLineWidth;
|
|
@@ -4319,10 +3536,10 @@ var pickingUniforms = {
|
|
|
4319
3536
|
}
|
|
4320
3537
|
};
|
|
4321
3538
|
var defaultProps = {
|
|
4322
|
-
...
|
|
3539
|
+
...import_layers.PathLayer.defaultProps,
|
|
4323
3540
|
pickingLineWidthExtraPixels: { type: "number", min: 0, value: Number.MAX_SAFE_INTEGER }
|
|
4324
3541
|
};
|
|
4325
|
-
var EditablePathLayer = class extends
|
|
3542
|
+
var EditablePathLayer = class extends import_layers.PathLayer {
|
|
4326
3543
|
getShaders() {
|
|
4327
3544
|
const shaders = super.getShaders();
|
|
4328
3545
|
shaders.vs = insertBefore(shaders.vs, "vec3 width;", `
|
|
@@ -4360,7 +3577,7 @@ var DEFAULT_EDITING_POINT_OUTLINE_COLOR = [255, 255, 255, 255];
|
|
|
4360
3577
|
var DEFAULT_EDITING_EXISTING_POINT_RADIUS = 5;
|
|
4361
3578
|
var DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS = 3;
|
|
4362
3579
|
var DEFAULT_EDITING_SNAP_POINT_RADIUS = 7;
|
|
4363
|
-
var DEFAULT_TOOLTIP_FONT_SIZE = 32 *
|
|
3580
|
+
var DEFAULT_TOOLTIP_FONT_SIZE = 32 * PROJECTED_PIXEL_SIZE_MULTIPLIER;
|
|
4364
3581
|
var DEFAULT_EDIT_MODE = DrawPolygonMode;
|
|
4365
3582
|
function guideAccessor(accessor) {
|
|
4366
3583
|
if (!accessor || typeof accessor !== "function") {
|
|
@@ -4412,7 +3629,7 @@ var defaultProps2 = {
|
|
|
4412
3629
|
fp64: false,
|
|
4413
3630
|
filled: true,
|
|
4414
3631
|
stroked: true,
|
|
4415
|
-
lineWidthScale:
|
|
3632
|
+
lineWidthScale: PROJECTED_PIXEL_SIZE_MULTIPLIER,
|
|
4416
3633
|
lineWidthMinPixels: 1,
|
|
4417
3634
|
lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,
|
|
4418
3635
|
pickingLineWidthExtraPixels: 0,
|
|
@@ -4527,13 +3744,29 @@ var EditableGeoJsonLayer = class extends EditableLayer {
|
|
|
4527
3744
|
}
|
|
4528
3745
|
},
|
|
4529
3746
|
updateTriggers: {
|
|
4530
|
-
getLineColor: [
|
|
4531
|
-
|
|
4532
|
-
|
|
4533
|
-
|
|
3747
|
+
getLineColor: [
|
|
3748
|
+
this.props.updateTriggers.getLineColor,
|
|
3749
|
+
this.props.selectedFeatureIndexes,
|
|
3750
|
+
this.props.mode
|
|
3751
|
+
],
|
|
3752
|
+
getFillColor: [
|
|
3753
|
+
this.props.updateTriggers.getFillColor,
|
|
3754
|
+
this.props.selectedFeatureIndexes,
|
|
3755
|
+
this.props.mode
|
|
3756
|
+
],
|
|
3757
|
+
getPointRadius: [
|
|
3758
|
+
this.props.updateTriggers.getPointRadius,
|
|
3759
|
+
this.props.selectedFeatureIndexes,
|
|
3760
|
+
this.props.mode
|
|
3761
|
+
],
|
|
3762
|
+
getLineWidth: [
|
|
3763
|
+
this.props.updateTriggers.getLineWidth,
|
|
3764
|
+
this.props.selectedFeatureIndexes,
|
|
3765
|
+
this.props.mode
|
|
3766
|
+
]
|
|
4534
3767
|
}
|
|
4535
3768
|
});
|
|
4536
|
-
let layers = [new
|
|
3769
|
+
let layers = [new import_layers2.GeoJsonLayer(subLayerProps)];
|
|
4537
3770
|
layers = layers.concat(this.createGuidesLayers(), this.createTooltipsLayers());
|
|
4538
3771
|
return layers;
|
|
4539
3772
|
}
|
|
@@ -4647,7 +3880,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
|
|
|
4647
3880
|
};
|
|
4648
3881
|
if (this.props.editHandleType === "icon") {
|
|
4649
3882
|
subLayerProps["points-icon"] = {
|
|
4650
|
-
type:
|
|
3883
|
+
type: import_layers2.IconLayer,
|
|
4651
3884
|
iconAtlas: this.props.editHandleIconAtlas,
|
|
4652
3885
|
iconMapping: this.props.editHandleIconMapping,
|
|
4653
3886
|
sizeUnits: this.props.editHandleIconSizeUnits,
|
|
@@ -4660,7 +3893,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
|
|
|
4660
3893
|
};
|
|
4661
3894
|
} else {
|
|
4662
3895
|
subLayerProps["points-circle"] = {
|
|
4663
|
-
type:
|
|
3896
|
+
type: import_layers2.ScatterplotLayer,
|
|
4664
3897
|
radiusScale: this.props.editHandlePointRadiusScale,
|
|
4665
3898
|
stroked: this.props.editHandlePointOutline,
|
|
4666
3899
|
getLineWidth: this.props.editHandlePointStrokeWidth,
|
|
@@ -4673,7 +3906,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
|
|
|
4673
3906
|
billboard: this.props.billboard
|
|
4674
3907
|
};
|
|
4675
3908
|
}
|
|
4676
|
-
const layer = new
|
|
3909
|
+
const layer = new import_layers2.GeoJsonLayer(this.getSubLayerProps({
|
|
4677
3910
|
id: "guides",
|
|
4678
3911
|
data: guides,
|
|
4679
3912
|
fp64: this.props.fp64,
|
|
@@ -4696,7 +3929,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
|
|
|
4696
3929
|
createTooltipsLayers() {
|
|
4697
3930
|
const mode = this.getActiveMode();
|
|
4698
3931
|
const tooltips = mode.getTooltips(this.getModeProps(this.props));
|
|
4699
|
-
const layer = new
|
|
3932
|
+
const layer = new import_layers2.TextLayer({
|
|
4700
3933
|
getSize: DEFAULT_TOOLTIP_FONT_SIZE,
|
|
4701
3934
|
...this.getSubLayerProps({
|
|
4702
3935
|
id: "tooltips",
|
|
@@ -4762,7 +3995,7 @@ var defaultProps3 = {
|
|
|
4762
3995
|
selectedIndexes: [],
|
|
4763
3996
|
filled: false,
|
|
4764
3997
|
stroked: true,
|
|
4765
|
-
lineWidthScale:
|
|
3998
|
+
lineWidthScale: PROJECTED_PIXEL_SIZE_MULTIPLIER,
|
|
4766
3999
|
lineWidthMinPixels: 1,
|
|
4767
4000
|
lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,
|
|
4768
4001
|
lineWidthUnits: "pixels",
|
|
@@ -4896,25 +4129,25 @@ __publicField(EditableH3ClusterLayer, "layerName", "EditableH3ClusterLayer");
|
|
|
4896
4129
|
__publicField(EditableH3ClusterLayer, "defaultProps", defaultProps3);
|
|
4897
4130
|
|
|
4898
4131
|
// dist/editable-layers/selection-layer.js
|
|
4899
|
-
var
|
|
4900
|
-
var
|
|
4132
|
+
var import_core2 = require("@deck.gl/core");
|
|
4133
|
+
var import_layers3 = require("@deck.gl/layers");
|
|
4901
4134
|
var import_helpers16 = require("@turf/helpers");
|
|
4902
|
-
var
|
|
4903
|
-
var
|
|
4904
|
-
var
|
|
4135
|
+
var import_buffer2 = __toESM(require("@turf/buffer"), 1);
|
|
4136
|
+
var import_difference3 = __toESM(require("@turf/difference"), 1);
|
|
4137
|
+
var SELECTION_TYPE = {
|
|
4905
4138
|
NONE: null,
|
|
4906
4139
|
RECTANGLE: "rectangle",
|
|
4907
4140
|
POLYGON: "polygon"
|
|
4908
4141
|
};
|
|
4909
4142
|
var MODE_MAP = {
|
|
4910
|
-
[
|
|
4911
|
-
[
|
|
4143
|
+
[SELECTION_TYPE.RECTANGLE]: DrawRectangleMode,
|
|
4144
|
+
[SELECTION_TYPE.POLYGON]: DrawPolygonMode
|
|
4912
4145
|
};
|
|
4913
4146
|
var MODE_CONFIG_MAP = {
|
|
4914
|
-
[
|
|
4147
|
+
[SELECTION_TYPE.RECTANGLE]: { dragToDraw: true }
|
|
4915
4148
|
};
|
|
4916
4149
|
var defaultProps4 = {
|
|
4917
|
-
selectionType:
|
|
4150
|
+
selectionType: SELECTION_TYPE.RECTANGLE,
|
|
4918
4151
|
layerIds: [],
|
|
4919
4152
|
onSelect: () => {
|
|
4920
4153
|
}
|
|
@@ -4923,7 +4156,7 @@ var EMPTY_DATA = {
|
|
|
4923
4156
|
type: "FeatureCollection",
|
|
4924
4157
|
features: []
|
|
4925
4158
|
};
|
|
4926
|
-
var
|
|
4159
|
+
var EXPANSION_KM = 50;
|
|
4927
4160
|
var LAYER_ID_GEOJSON = "selection-geojson";
|
|
4928
4161
|
var LAYER_ID_BLOCKER = "selection-blocker";
|
|
4929
4162
|
var PASS_THROUGH_PROPS = [
|
|
@@ -4948,7 +4181,7 @@ var PASS_THROUGH_PROPS = [
|
|
|
4948
4181
|
"getTentativeFillColor",
|
|
4949
4182
|
"getTentativeLineWidth"
|
|
4950
4183
|
];
|
|
4951
|
-
var SelectionLayer = class extends
|
|
4184
|
+
var SelectionLayer = class extends import_core2.CompositeLayer {
|
|
4952
4185
|
state = void 0;
|
|
4953
4186
|
_selectRectangleObjects(coordinates) {
|
|
4954
4187
|
const { layerIds, onSelect } = this.props;
|
|
@@ -4973,10 +4206,10 @@ var SelectionLayer = class extends import_core4.CompositeLayer {
|
|
|
4973
4206
|
const maxX = Math.max(...allX);
|
|
4974
4207
|
const maxY = Math.max(...allY);
|
|
4975
4208
|
const landPointsPoly = (0, import_helpers16.polygon)(coordinates);
|
|
4976
|
-
const bigBuffer = (0,
|
|
4209
|
+
const bigBuffer = (0, import_buffer2.default)(landPointsPoly, EXPANSION_KM);
|
|
4977
4210
|
let bigPolygon;
|
|
4978
4211
|
try {
|
|
4979
|
-
bigPolygon = (0,
|
|
4212
|
+
bigPolygon = (0, import_difference3.default)((0, import_helpers16.featureCollection)([bigBuffer, landPointsPoly]));
|
|
4980
4213
|
} catch (e) {
|
|
4981
4214
|
console.log("turfDifference() error", e);
|
|
4982
4215
|
return;
|
|
@@ -5020,9 +4253,9 @@ var SelectionLayer = class extends import_core4.CompositeLayer {
|
|
|
5020
4253
|
onEdit: ({ updatedData, editType }) => {
|
|
5021
4254
|
if (editType === "addFeature") {
|
|
5022
4255
|
const { coordinates } = updatedData.features[0].geometry;
|
|
5023
|
-
if (this.props.selectionType ===
|
|
4256
|
+
if (this.props.selectionType === SELECTION_TYPE.RECTANGLE) {
|
|
5024
4257
|
this._selectRectangleObjects(coordinates);
|
|
5025
|
-
} else if (this.props.selectionType ===
|
|
4258
|
+
} else if (this.props.selectionType === SELECTION_TYPE.POLYGON) {
|
|
5026
4259
|
this._selectPolygonObjects(coordinates);
|
|
5027
4260
|
}
|
|
5028
4261
|
}
|
|
@@ -5032,7 +4265,7 @@ var SelectionLayer = class extends import_core4.CompositeLayer {
|
|
|
5032
4265
|
];
|
|
5033
4266
|
if (pendingPolygonSelection) {
|
|
5034
4267
|
const { bigPolygon } = pendingPolygonSelection;
|
|
5035
|
-
layers.push(new
|
|
4268
|
+
layers.push(new import_layers3.PolygonLayer(this.getSubLayerProps({
|
|
5036
4269
|
id: LAYER_ID_BLOCKER,
|
|
5037
4270
|
pickable: true,
|
|
5038
4271
|
stroked: false,
|
|
@@ -5053,16 +4286,16 @@ __publicField(SelectionLayer, "layerName", "SelectionLayer");
|
|
|
5053
4286
|
__publicField(SelectionLayer, "defaultProps", defaultProps4);
|
|
5054
4287
|
|
|
5055
4288
|
// dist/editable-layers/elevated-edit-handle-layer.js
|
|
5056
|
-
var
|
|
5057
|
-
var
|
|
4289
|
+
var import_core3 = require("@deck.gl/core");
|
|
4290
|
+
var import_layers4 = require("@deck.gl/layers");
|
|
5058
4291
|
var defaultProps5 = {};
|
|
5059
|
-
var ElevatedEditHandleLayer = class extends
|
|
4292
|
+
var ElevatedEditHandleLayer = class extends import_core3.CompositeLayer {
|
|
5060
4293
|
renderLayers() {
|
|
5061
|
-
const handles = new
|
|
4294
|
+
const handles = new import_layers4.ScatterplotLayer(Object.assign({}, this.props, {
|
|
5062
4295
|
id: `${this.props.id}-ScatterplotLayer`,
|
|
5063
4296
|
data: this.props.data
|
|
5064
4297
|
}));
|
|
5065
|
-
const lines = new
|
|
4298
|
+
const lines = new import_layers4.LineLayer(Object.assign({}, this.props, {
|
|
5066
4299
|
id: `${this.props.id}-LineLayer`,
|
|
5067
4300
|
data: this.props.data,
|
|
5068
4301
|
pickable: false,
|
|
@@ -5080,7 +4313,7 @@ __publicField(ElevatedEditHandleLayer, "defaultProps", defaultProps5);
|
|
|
5080
4313
|
// dist/widgets/edit-mode-tray-widget.js
|
|
5081
4314
|
var import_jsx_runtime = require("preact/jsx-runtime");
|
|
5082
4315
|
var import_preact = require("preact");
|
|
5083
|
-
var
|
|
4316
|
+
var import_core4 = require("@deck.gl/core");
|
|
5084
4317
|
var ROOT_STYLE = {
|
|
5085
4318
|
position: "absolute",
|
|
5086
4319
|
display: "flex",
|
|
@@ -5124,7 +4357,7 @@ var BUTTON_LABEL_STYLE = {
|
|
|
5124
4357
|
marginTop: "2px",
|
|
5125
4358
|
lineHeight: "12px"
|
|
5126
4359
|
};
|
|
5127
|
-
var _EditModeTrayWidget = class extends
|
|
4360
|
+
var _EditModeTrayWidget = class extends import_core4.Widget {
|
|
5128
4361
|
placement = "top-left";
|
|
5129
4362
|
className = "deck-widget-edit-mode-tray";
|
|
5130
4363
|
layout = "vertical";
|
|
@@ -5288,6 +4521,7 @@ var _EditModeTrayWidget = class extends import_core6.Widget {
|
|
|
5288
4521
|
var EditModeTrayWidget = _EditModeTrayWidget;
|
|
5289
4522
|
__publicField(EditModeTrayWidget, "defaultProps", {
|
|
5290
4523
|
id: "edit-mode-tray",
|
|
4524
|
+
_container: null,
|
|
5291
4525
|
placement: "top-left",
|
|
5292
4526
|
layout: "vertical",
|
|
5293
4527
|
modes: [],
|
|
@@ -5295,11 +4529,223 @@ __publicField(EditModeTrayWidget, "defaultProps", {
|
|
|
5295
4529
|
className: ""
|
|
5296
4530
|
});
|
|
5297
4531
|
|
|
4532
|
+
// dist/widgets/editor-toolbar-widget.js
|
|
4533
|
+
var import_jsx_runtime2 = require("preact/jsx-runtime");
|
|
4534
|
+
var import_preact2 = require("preact");
|
|
4535
|
+
var import_core5 = require("@deck.gl/core");
|
|
4536
|
+
var ROOT_STYLE2 = {
|
|
4537
|
+
position: "absolute",
|
|
4538
|
+
display: "flex",
|
|
4539
|
+
flexDirection: "column",
|
|
4540
|
+
gap: "6px",
|
|
4541
|
+
pointerEvents: "auto",
|
|
4542
|
+
userSelect: "none",
|
|
4543
|
+
zIndex: "99"
|
|
4544
|
+
};
|
|
4545
|
+
var TRAY_STYLE = {
|
|
4546
|
+
display: "flex",
|
|
4547
|
+
gap: "4px",
|
|
4548
|
+
background: "rgba(36, 40, 41, 0.88)",
|
|
4549
|
+
borderRadius: "999px",
|
|
4550
|
+
padding: "5px 8px",
|
|
4551
|
+
alignItems: "center",
|
|
4552
|
+
justifyContent: "center",
|
|
4553
|
+
boxShadow: "0 4px 12px rgba(0, 0, 0, 0.25)"
|
|
4554
|
+
};
|
|
4555
|
+
var BUTTON_STYLE = {
|
|
4556
|
+
appearance: "none",
|
|
4557
|
+
background: "transparent",
|
|
4558
|
+
border: "none",
|
|
4559
|
+
color: "#f0f0f0",
|
|
4560
|
+
height: "30px",
|
|
4561
|
+
padding: "0 8px",
|
|
4562
|
+
display: "flex",
|
|
4563
|
+
alignItems: "center",
|
|
4564
|
+
justifyContent: "center",
|
|
4565
|
+
gap: "4px",
|
|
4566
|
+
borderRadius: "15px",
|
|
4567
|
+
cursor: "pointer",
|
|
4568
|
+
fontSize: "11px",
|
|
4569
|
+
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
|
|
4570
|
+
fontWeight: "500",
|
|
4571
|
+
transition: "background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease",
|
|
4572
|
+
whiteSpace: "nowrap"
|
|
4573
|
+
};
|
|
4574
|
+
var BUTTON_ACTIVE_STYLE2 = {
|
|
4575
|
+
background: "#0071e3",
|
|
4576
|
+
color: "#ffffff",
|
|
4577
|
+
boxShadow: "0 0 0 2px rgba(255, 255, 255, 0.35)"
|
|
4578
|
+
};
|
|
4579
|
+
var DIVIDER_STYLE = {
|
|
4580
|
+
width: "1px",
|
|
4581
|
+
height: "20px",
|
|
4582
|
+
background: "rgba(255, 255, 255, 0.2)",
|
|
4583
|
+
margin: "0 2px",
|
|
4584
|
+
flexShrink: "0"
|
|
4585
|
+
};
|
|
4586
|
+
var BADGE_STYLE = {
|
|
4587
|
+
color: "rgba(255, 255, 255, 0.6)",
|
|
4588
|
+
fontSize: "11px",
|
|
4589
|
+
padding: "0 6px",
|
|
4590
|
+
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
|
|
4591
|
+
whiteSpace: "nowrap"
|
|
4592
|
+
};
|
|
4593
|
+
function PencilIcon() {
|
|
4594
|
+
return (0, import_jsx_runtime2.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: (0, import_jsx_runtime2.jsx)("path", { d: "M10 1.5l2.5 2.5L4.5 12H2v-2.5z" }) });
|
|
4595
|
+
}
|
|
4596
|
+
function SubtractIcon() {
|
|
4597
|
+
return (0, import_jsx_runtime2.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "1.1", children: [(0, import_jsx_runtime2.jsx)("rect", { x: "1", y: "1", width: "8", height: "8", rx: "1.5" }), (0, import_jsx_runtime2.jsx)("rect", { x: "5", y: "5", width: "8", height: "8", rx: "1.5", fill: "rgba(36,40,41,0.88)" })] });
|
|
4598
|
+
}
|
|
4599
|
+
function UnionIcon() {
|
|
4600
|
+
return (0, import_jsx_runtime2.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "1.1", children: [(0, import_jsx_runtime2.jsx)("rect", { x: "1", y: "1", width: "8", height: "8", rx: "1.5" }), (0, import_jsx_runtime2.jsx)("rect", { x: "5", y: "5", width: "8", height: "8", rx: "1.5" })] });
|
|
4601
|
+
}
|
|
4602
|
+
function IntersectIcon() {
|
|
4603
|
+
return (0, import_jsx_runtime2.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", strokeWidth: "1.1", children: [(0, import_jsx_runtime2.jsx)("rect", { x: "1", y: "1", width: "8", height: "8", rx: "1.5", stroke: "currentColor", opacity: "0.4" }), (0, import_jsx_runtime2.jsx)("rect", { x: "5", y: "5", width: "8", height: "8", rx: "1.5", stroke: "currentColor", opacity: "0.4" }), (0, import_jsx_runtime2.jsx)("rect", { x: "5", y: "5", width: "4", height: "4", fill: "currentColor", opacity: "0.6" })] });
|
|
4604
|
+
}
|
|
4605
|
+
function TrashIcon() {
|
|
4606
|
+
return (0, import_jsx_runtime2.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "1.3", strokeLinecap: "round", strokeLinejoin: "round", children: (0, import_jsx_runtime2.jsx)("path", { d: "M2.5 4h9M5.5 4V2.5h3V4M3.5 4l.5 8h6l.5-8" }) });
|
|
4607
|
+
}
|
|
4608
|
+
function DownloadIcon() {
|
|
4609
|
+
return (0, import_jsx_runtime2.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "1.3", strokeLinecap: "round", strokeLinejoin: "round", children: (0, import_jsx_runtime2.jsx)("path", { d: "M7 2v7M4.5 6.5L7 9l2.5-2.5M2.5 11.5h9" }) });
|
|
4610
|
+
}
|
|
4611
|
+
var BOOLEAN_OPS = [
|
|
4612
|
+
{ op: null, icon: PencilIcon, label: "Edit", title: "Draw new features" },
|
|
4613
|
+
{ op: "difference", icon: SubtractIcon, label: "Sub", title: "Subtract from selection" },
|
|
4614
|
+
{ op: "union", icon: UnionIcon, label: "Union", title: "Union with selection" },
|
|
4615
|
+
{ op: "intersection", icon: IntersectIcon, label: "Sect", title: "Intersect with selection" }
|
|
4616
|
+
];
|
|
4617
|
+
var _EditorToolbarWidget = class extends import_core5.Widget {
|
|
4618
|
+
placement = "bottom-left";
|
|
4619
|
+
className = "deck-widget-editor-toolbar";
|
|
4620
|
+
deck = null;
|
|
4621
|
+
appliedCustomClassName = null;
|
|
4622
|
+
constructor(props = {}) {
|
|
4623
|
+
super({ ..._EditorToolbarWidget.defaultProps, ...props });
|
|
4624
|
+
this.placement = props.placement ?? _EditorToolbarWidget.defaultProps.placement;
|
|
4625
|
+
}
|
|
4626
|
+
setProps(props) {
|
|
4627
|
+
if (props.placement !== void 0) {
|
|
4628
|
+
this.placement = props.placement;
|
|
4629
|
+
}
|
|
4630
|
+
super.setProps(props);
|
|
4631
|
+
this.renderToolbar();
|
|
4632
|
+
}
|
|
4633
|
+
onAdd({ deck }) {
|
|
4634
|
+
this.deck = deck;
|
|
4635
|
+
}
|
|
4636
|
+
onRemove() {
|
|
4637
|
+
this.deck = null;
|
|
4638
|
+
const root = this.rootElement;
|
|
4639
|
+
if (root) {
|
|
4640
|
+
(0, import_preact2.render)(null, root);
|
|
4641
|
+
}
|
|
4642
|
+
this.rootElement = null;
|
|
4643
|
+
}
|
|
4644
|
+
onRenderHTML(rootElement) {
|
|
4645
|
+
const style = { ...ROOT_STYLE2, ...this.props.style };
|
|
4646
|
+
Object.assign(rootElement.style, style);
|
|
4647
|
+
if (this.appliedCustomClassName && this.appliedCustomClassName !== this.props.className) {
|
|
4648
|
+
rootElement.classList.remove(this.appliedCustomClassName);
|
|
4649
|
+
this.appliedCustomClassName = null;
|
|
4650
|
+
}
|
|
4651
|
+
if (this.props.className) {
|
|
4652
|
+
rootElement.classList.add(this.props.className);
|
|
4653
|
+
this.appliedCustomClassName = this.props.className;
|
|
4654
|
+
}
|
|
4655
|
+
rootElement.classList.add(this.className);
|
|
4656
|
+
this.renderToolbar();
|
|
4657
|
+
}
|
|
4658
|
+
renderToolbar() {
|
|
4659
|
+
const root = this.rootElement;
|
|
4660
|
+
if (!root) {
|
|
4661
|
+
return;
|
|
4662
|
+
}
|
|
4663
|
+
const booleanOp = this.props.booleanOperation ?? null;
|
|
4664
|
+
const featureCount = this.props.featureCount ?? 0;
|
|
4665
|
+
const stopEvent = (event) => {
|
|
4666
|
+
event.stopPropagation();
|
|
4667
|
+
if (typeof event.stopImmediatePropagation === "function") {
|
|
4668
|
+
event.stopImmediatePropagation();
|
|
4669
|
+
}
|
|
4670
|
+
};
|
|
4671
|
+
const ui = (0, import_jsx_runtime2.jsxs)("div", { style: TRAY_STYLE, onPointerDown: stopEvent, onPointerMove: stopEvent, onPointerUp: stopEvent, onMouseDown: stopEvent, onMouseMove: stopEvent, onMouseUp: stopEvent, onTouchStart: stopEvent, onTouchMove: stopEvent, onTouchEnd: stopEvent, children: [BOOLEAN_OPS.map(({ op, icon: Icon, label, title }) => {
|
|
4672
|
+
const active = booleanOp === op;
|
|
4673
|
+
return (0, import_jsx_runtime2.jsxs)("button", { type: "button", title, "aria-pressed": active, style: { ...BUTTON_STYLE, ...active ? BUTTON_ACTIVE_STYLE2 : {} }, onClick: (event) => {
|
|
4674
|
+
var _a, _b;
|
|
4675
|
+
stopEvent(event);
|
|
4676
|
+
(_b = (_a = this.props).onSetBooleanOperation) == null ? void 0 : _b.call(_a, op);
|
|
4677
|
+
}, children: [(0, import_jsx_runtime2.jsx)(Icon, {}), (0, import_jsx_runtime2.jsx)("span", { children: label })] }, label);
|
|
4678
|
+
}), (0, import_jsx_runtime2.jsx)("div", { style: DIVIDER_STYLE }), (0, import_jsx_runtime2.jsx)("button", { type: "button", title: "Clear all features", style: BUTTON_STYLE, onClick: (event) => {
|
|
4679
|
+
var _a, _b;
|
|
4680
|
+
stopEvent(event);
|
|
4681
|
+
(_b = (_a = this.props).onClear) == null ? void 0 : _b.call(_a);
|
|
4682
|
+
}, children: (0, import_jsx_runtime2.jsx)(TrashIcon, {}) }), (0, import_jsx_runtime2.jsx)("button", { type: "button", title: "Download as GeoJSON", style: BUTTON_STYLE, onClick: (event) => {
|
|
4683
|
+
var _a, _b;
|
|
4684
|
+
stopEvent(event);
|
|
4685
|
+
(_b = (_a = this.props).onExport) == null ? void 0 : _b.call(_a);
|
|
4686
|
+
}, children: (0, import_jsx_runtime2.jsx)(DownloadIcon, {}) }), (0, import_jsx_runtime2.jsx)("div", { style: DIVIDER_STYLE }), (0, import_jsx_runtime2.jsxs)("span", { style: BADGE_STYLE, children: [featureCount, " feature", featureCount !== 1 ? "s" : ""] })] });
|
|
4687
|
+
(0, import_preact2.render)(ui, root);
|
|
4688
|
+
}
|
|
4689
|
+
};
|
|
4690
|
+
var EditorToolbarWidget = _EditorToolbarWidget;
|
|
4691
|
+
__publicField(EditorToolbarWidget, "defaultProps", {
|
|
4692
|
+
id: "editor-toolbar",
|
|
4693
|
+
_container: null,
|
|
4694
|
+
placement: "bottom-left",
|
|
4695
|
+
booleanOperation: null,
|
|
4696
|
+
featureCount: 0,
|
|
4697
|
+
style: {},
|
|
4698
|
+
className: ""
|
|
4699
|
+
});
|
|
4700
|
+
|
|
4701
|
+
// dist/editable-layers/junction-scatterplot-layer.js
|
|
4702
|
+
var import_core6 = require("@deck.gl/core");
|
|
4703
|
+
var import_layers5 = require("@deck.gl/layers");
|
|
4704
|
+
var JunctionScatterplotLayer = class extends import_core6.CompositeLayer {
|
|
4705
|
+
renderLayers() {
|
|
4706
|
+
const { id, getFillColor, getStrokeColor, getInnerRadius, updateTriggers } = this.props;
|
|
4707
|
+
return [
|
|
4708
|
+
// the full circles
|
|
4709
|
+
new import_layers5.ScatterplotLayer({
|
|
4710
|
+
...this.props,
|
|
4711
|
+
id: `${id}-full`,
|
|
4712
|
+
data: this.props.data,
|
|
4713
|
+
getLineColor: getStrokeColor,
|
|
4714
|
+
updateTriggers: {
|
|
4715
|
+
...updateTriggers,
|
|
4716
|
+
getStrokeColor: updateTriggers.getStrokeColor
|
|
4717
|
+
}
|
|
4718
|
+
}),
|
|
4719
|
+
// the inner part
|
|
4720
|
+
new import_layers5.ScatterplotLayer({
|
|
4721
|
+
...this.props,
|
|
4722
|
+
id: `${id}-inner`,
|
|
4723
|
+
data: this.props.data,
|
|
4724
|
+
getFillColor,
|
|
4725
|
+
getRadius: getInnerRadius,
|
|
4726
|
+
pickable: false,
|
|
4727
|
+
updateTriggers: {
|
|
4728
|
+
...updateTriggers,
|
|
4729
|
+
getFillColor: updateTriggers.getFillColor,
|
|
4730
|
+
getRadius: updateTriggers.getInnerRadius
|
|
4731
|
+
}
|
|
4732
|
+
})
|
|
4733
|
+
];
|
|
4734
|
+
}
|
|
4735
|
+
};
|
|
4736
|
+
__publicField(JunctionScatterplotLayer, "layerName", "JunctionScatterplotLayer");
|
|
4737
|
+
__publicField(JunctionScatterplotLayer, "defaultProps", {
|
|
4738
|
+
...import_layers5.ScatterplotLayer.defaultProps,
|
|
4739
|
+
getFillColor: (d) => [0, 0, 0, 255],
|
|
4740
|
+
getStrokeColor: (d) => [255, 255, 255, 255],
|
|
4741
|
+
getInnerRadius: (d) => 1
|
|
4742
|
+
});
|
|
4743
|
+
|
|
5298
4744
|
// dist/edit-modes/resize-circle-mode.js
|
|
5299
4745
|
var import_nearest_point_on_line2 = __toESM(require("@turf/nearest-point-on-line"), 1);
|
|
5300
4746
|
var import_helpers17 = require("@turf/helpers");
|
|
5301
4747
|
var import_circle3 = __toESM(require("@turf/circle"), 1);
|
|
5302
|
-
var
|
|
4748
|
+
var import_distance13 = __toESM(require("@turf/distance"), 1);
|
|
5303
4749
|
var import_center2 = __toESM(require("@turf/center"), 1);
|
|
5304
4750
|
var ResizeCircleMode = class extends GeoJsonEditMode {
|
|
5305
4751
|
_selectedEditHandle;
|
|
@@ -5319,12 +4765,7 @@ var ResizeCircleMode = class extends GeoJsonEditMode {
|
|
|
5319
4765
|
const referencePoint = (0, import_helpers17.point)(mapCoords2);
|
|
5320
4766
|
recursivelyTraverseNestedArrays2(featureAsPick.object.geometry.coordinates, [], (lineString3, prefix) => {
|
|
5321
4767
|
const lineStringFeature = (0, import_helpers17.lineString)(lineString3);
|
|
5322
|
-
const candidateIntermediatePoint = this.getNearestPoint(
|
|
5323
|
-
// @ts-expect-error turf types too wide
|
|
5324
|
-
lineStringFeature,
|
|
5325
|
-
referencePoint,
|
|
5326
|
-
props.modeConfig && props.modeConfig.viewport
|
|
5327
|
-
);
|
|
4768
|
+
const candidateIntermediatePoint = this.getNearestPoint(lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport);
|
|
5328
4769
|
if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) {
|
|
5329
4770
|
intermediatePoint = candidateIntermediatePoint;
|
|
5330
4771
|
positionIndexPrefix = prefix;
|
|
@@ -5372,7 +4813,7 @@ var ResizeCircleMode = class extends GeoJsonEditMode {
|
|
|
5372
4813
|
const feature = this.getSelectedFeature(props);
|
|
5373
4814
|
const center = (0, import_center2.default)(feature).geometry.coordinates;
|
|
5374
4815
|
const numberOfSteps = Object.entries(feature.geometry.coordinates[0]).length - 1;
|
|
5375
|
-
const radius = Math.max((0,
|
|
4816
|
+
const radius = Math.max((0, import_distance13.default)(center, event.mapCoords), 1e-3);
|
|
5376
4817
|
const { steps = numberOfSteps } = {};
|
|
5377
4818
|
const options = { steps };
|
|
5378
4819
|
const updatedFeature = (0, import_circle3.default)(center, radius, options);
|
|
@@ -5488,7 +4929,7 @@ var ExtendLineStringMode = class extends GeoJsonEditMode {
|
|
|
5488
4929
|
};
|
|
5489
4930
|
|
|
5490
4931
|
// dist/edit-modes/measure-distance-mode.js
|
|
5491
|
-
var
|
|
4932
|
+
var import_distance14 = __toESM(require("@turf/distance"), 1);
|
|
5492
4933
|
var import_midpoint = __toESM(require("@turf/midpoint"), 1);
|
|
5493
4934
|
var MeasureDistanceMode = class extends GeoJsonEditMode {
|
|
5494
4935
|
_isMeasuringSessionFinished = false;
|
|
@@ -5496,7 +4937,7 @@ var MeasureDistanceMode = class extends GeoJsonEditMode {
|
|
|
5496
4937
|
_currentDistance = 0;
|
|
5497
4938
|
_calculateDistanceForTooltip = ({ positionA, positionB, modeConfig }) => {
|
|
5498
4939
|
const { turfOptions, measurementCallback } = modeConfig || {};
|
|
5499
|
-
const distance7 = (0,
|
|
4940
|
+
const distance7 = (0, import_distance14.default)(positionA, positionB, turfOptions);
|
|
5500
4941
|
if (measurementCallback) {
|
|
5501
4942
|
measurementCallback(distance7);
|
|
5502
4943
|
}
|