@deck.gl-community/editable-layers 9.2.0-beta.5 → 9.2.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/edit-modes/draw-90degree-polygon-mode.d.ts +2 -2
- package/dist/edit-modes/draw-90degree-polygon-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-90degree-polygon-mode.js.map +1 -1
- package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts +2 -2
- package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-circle-by-diameter-mode.js +0 -1
- package/dist/edit-modes/draw-circle-by-diameter-mode.js.map +1 -1
- package/dist/edit-modes/draw-circle-from-center-mode.d.ts +2 -2
- package/dist/edit-modes/draw-circle-from-center-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-circle-from-center-mode.js +0 -1
- package/dist/edit-modes/draw-circle-from-center-mode.js.map +1 -1
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts +2 -2
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.js +1 -2
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.js.map +1 -1
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts +2 -2
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.js +0 -2
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.js.map +1 -1
- package/dist/edit-modes/draw-line-string-mode.d.ts +5 -5
- package/dist/edit-modes/draw-line-string-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-line-string-mode.js.map +1 -1
- package/dist/edit-modes/draw-point-mode.d.ts +2 -2
- package/dist/edit-modes/draw-point-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-point-mode.js.map +1 -1
- package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts +8 -8
- package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-polygon-by-dragging-mode.js.map +1 -1
- package/dist/edit-modes/draw-polygon-mode.d.ts +9 -5
- package/dist/edit-modes/draw-polygon-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-polygon-mode.js +226 -81
- package/dist/edit-modes/draw-polygon-mode.js.map +1 -1
- package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts +2 -2
- package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-rectangle-from-center-mode.js +0 -1
- package/dist/edit-modes/draw-rectangle-from-center-mode.js.map +1 -1
- package/dist/edit-modes/draw-rectangle-mode.d.ts +2 -2
- package/dist/edit-modes/draw-rectangle-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-rectangle-mode.js +0 -1
- package/dist/edit-modes/draw-rectangle-mode.js.map +1 -1
- package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts +2 -2
- package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-square-from-center-mode.d.ts +2 -2
- package/dist/edit-modes/draw-square-from-center-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-square-from-center-mode.js +0 -1
- package/dist/edit-modes/draw-square-from-center-mode.js.map +1 -1
- package/dist/edit-modes/draw-square-mode.d.ts +2 -2
- package/dist/edit-modes/draw-square-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-square-mode.js +0 -1
- package/dist/edit-modes/draw-square-mode.js.map +1 -1
- package/dist/edit-modes/duplicate-mode.d.ts +2 -2
- package/dist/edit-modes/duplicate-mode.d.ts.map +1 -1
- package/dist/edit-modes/duplicate-mode.js.map +1 -1
- package/dist/edit-modes/extend-line-string-mode.d.ts +4 -4
- package/dist/edit-modes/extend-line-string-mode.d.ts.map +1 -1
- package/dist/edit-modes/extend-line-string-mode.js.map +1 -1
- package/dist/edit-modes/extrude-mode.d.ts +7 -7
- package/dist/edit-modes/extrude-mode.d.ts.map +1 -1
- package/dist/edit-modes/extrude-mode.js.map +1 -1
- package/dist/edit-modes/geojson-edit-mode.d.ts +9 -9
- package/dist/edit-modes/geojson-edit-mode.d.ts.map +1 -1
- package/dist/edit-modes/geojson-edit-mode.js +4 -7
- package/dist/edit-modes/geojson-edit-mode.js.map +1 -1
- package/dist/edit-modes/immutable-feature-collection.d.ts +7 -7
- package/dist/edit-modes/immutable-feature-collection.d.ts.map +1 -1
- package/dist/edit-modes/immutable-feature-collection.js.map +1 -1
- package/dist/edit-modes/measure-area-mode.d.ts +3 -3
- package/dist/edit-modes/measure-area-mode.d.ts.map +1 -1
- package/dist/edit-modes/measure-area-mode.js.map +1 -1
- package/dist/edit-modes/modify-mode.d.ts +8 -8
- package/dist/edit-modes/modify-mode.d.ts.map +1 -1
- package/dist/edit-modes/modify-mode.js +2 -4
- package/dist/edit-modes/modify-mode.js.map +1 -1
- package/dist/edit-modes/resize-circle-mode.d.ts +3 -3
- package/dist/edit-modes/resize-circle-mode.d.ts.map +1 -1
- package/dist/edit-modes/resize-circle-mode.js +1 -5
- package/dist/edit-modes/resize-circle-mode.js.map +1 -1
- package/dist/edit-modes/rotate-mode.d.ts +7 -7
- package/dist/edit-modes/rotate-mode.d.ts.map +1 -1
- package/dist/edit-modes/rotate-mode.js +2 -9
- package/dist/edit-modes/rotate-mode.js.map +1 -1
- package/dist/edit-modes/scale-mode.d.ts +11 -11
- package/dist/edit-modes/scale-mode.d.ts.map +1 -1
- package/dist/edit-modes/scale-mode.js +1 -6
- package/dist/edit-modes/scale-mode.js.map +1 -1
- package/dist/edit-modes/snappable-mode.d.ts +5 -5
- package/dist/edit-modes/snappable-mode.d.ts.map +1 -1
- package/dist/edit-modes/snappable-mode.js.map +1 -1
- package/dist/edit-modes/split-polygon-mode.d.ts +5 -5
- package/dist/edit-modes/split-polygon-mode.d.ts.map +1 -1
- package/dist/edit-modes/split-polygon-mode.js +2 -5
- package/dist/edit-modes/split-polygon-mode.js.map +1 -1
- package/dist/edit-modes/three-click-polygon-mode.d.ts +3 -3
- package/dist/edit-modes/three-click-polygon-mode.d.ts.map +1 -1
- package/dist/edit-modes/three-click-polygon-mode.js.map +1 -1
- package/dist/edit-modes/translate-mode.d.ts +6 -6
- package/dist/edit-modes/translate-mode.d.ts.map +1 -1
- package/dist/edit-modes/translate-mode.js +1 -2
- package/dist/edit-modes/translate-mode.js.map +1 -1
- package/dist/edit-modes/two-click-polygon-mode.d.ts +6 -6
- package/dist/edit-modes/two-click-polygon-mode.d.ts.map +1 -1
- package/dist/edit-modes/two-click-polygon-mode.js.map +1 -1
- package/dist/edit-modes/types.d.ts +3 -3
- package/dist/edit-modes/types.d.ts.map +1 -1
- package/dist/edit-modes/utils.d.ts +7 -7
- package/dist/edit-modes/utils.d.ts.map +1 -1
- package/dist/edit-modes/utils.js +0 -3
- package/dist/edit-modes/utils.js.map +1 -1
- package/dist/editable-layers/editable-geojson-layer.d.ts +5 -13
- package/dist/editable-layers/editable-geojson-layer.d.ts.map +1 -1
- package/dist/editable-layers/editable-geojson-layer.js +4 -4
- package/dist/editable-layers/editable-geojson-layer.js.map +1 -1
- package/dist/editable-layers/selection-layer.d.ts +1 -2
- package/dist/editable-layers/selection-layer.d.ts.map +1 -1
- package/dist/editable-layers/selection-layer.js +2 -2
- package/dist/editable-layers/selection-layer.js.map +1 -1
- package/dist/index.cjs +369 -995
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +3 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -10
- package/dist/index.js.map +1 -1
- package/dist/mode-handlers/composite-mode-handler.d.ts +3 -3
- package/dist/mode-handlers/composite-mode-handler.d.ts.map +1 -1
- package/dist/mode-handlers/composite-mode-handler.js.map +1 -1
- package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-90degree-polygon-handler.js +4 -2
- package/dist/mode-handlers/draw-90degree-polygon-handler.js.map +1 -1
- package/dist/mode-handlers/draw-circle-by-bounding-box-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js +0 -1
- package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js.map +1 -1
- package/dist/mode-handlers/draw-circle-from-center-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-circle-from-center-handler.js +0 -1
- package/dist/mode-handlers/draw-circle-from-center-handler.js.map +1 -1
- package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js +1 -2
- package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js.map +1 -1
- package/dist/mode-handlers/draw-ellipse-using-three-points-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js +2 -2
- package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js.map +1 -1
- package/dist/mode-handlers/draw-point-handler.js.map +1 -1
- package/dist/mode-handlers/draw-polygon-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-polygon-handler.js +4 -2
- package/dist/mode-handlers/draw-polygon-handler.js.map +1 -1
- package/dist/mode-handlers/draw-rectangle-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-rectangle-handler.js +0 -1
- package/dist/mode-handlers/draw-rectangle-handler.js.map +1 -1
- package/dist/mode-handlers/draw-rectangle-using-three-points-handler.d.ts.map +1 -1
- package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js +4 -2
- package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js.map +1 -1
- package/dist/mode-handlers/mode-handler.d.ts +12 -12
- package/dist/mode-handlers/mode-handler.d.ts.map +1 -1
- package/dist/mode-handlers/mode-handler.js +6 -7
- package/dist/mode-handlers/mode-handler.js.map +1 -1
- package/dist/mode-handlers/modify-handler.d.ts +2 -2
- package/dist/mode-handlers/modify-handler.d.ts.map +1 -1
- package/dist/mode-handlers/modify-handler.js +1 -4
- package/dist/mode-handlers/modify-handler.js.map +1 -1
- package/dist/mode-handlers/rotate-handler.d.ts +2 -2
- package/dist/mode-handlers/rotate-handler.d.ts.map +1 -1
- package/dist/mode-handlers/rotate-handler.js +2 -7
- package/dist/mode-handlers/rotate-handler.js.map +1 -1
- package/dist/mode-handlers/scale-handler.d.ts +2 -2
- package/dist/mode-handlers/scale-handler.d.ts.map +1 -1
- package/dist/mode-handlers/scale-handler.js +2 -7
- package/dist/mode-handlers/scale-handler.js.map +1 -1
- package/dist/mode-handlers/snappable-handler.d.ts +3 -3
- package/dist/mode-handlers/snappable-handler.d.ts.map +1 -1
- package/dist/mode-handlers/snappable-handler.js.map +1 -1
- package/dist/mode-handlers/split-polygon-handler.d.ts.map +1 -1
- package/dist/mode-handlers/split-polygon-handler.js +4 -5
- package/dist/mode-handlers/split-polygon-handler.js.map +1 -1
- package/dist/mode-handlers/translate-handler.d.ts +2 -2
- package/dist/mode-handlers/translate-handler.d.ts.map +1 -1
- package/dist/mode-handlers/translate-handler.js +1 -4
- package/dist/mode-handlers/translate-handler.js.map +1 -1
- package/dist/utils/geojson-types.d.ts +13 -34
- package/dist/utils/geojson-types.d.ts.map +1 -1
- package/dist/utils/translate-from-center.d.ts +2 -4
- package/dist/utils/translate-from-center.d.ts.map +1 -1
- package/dist/utils/translate-from-center.js.map +1 -1
- package/dist/utils/utils.d.ts +3 -3
- package/dist/utils/utils.d.ts.map +1 -1
- package/dist/utils/utils.js.map +1 -1
- package/package.json +33 -33
- package/src/edit-modes/draw-90degree-polygon-mode.ts +2 -2
- package/src/edit-modes/draw-circle-by-diameter-mode.ts +3 -3
- package/src/edit-modes/draw-circle-from-center-mode.ts +3 -3
- package/src/edit-modes/draw-ellipse-by-bounding-box-mode.ts +4 -4
- package/src/edit-modes/draw-ellipse-using-three-points-mode.ts +3 -4
- package/src/edit-modes/draw-line-string-mode.ts +5 -5
- package/src/edit-modes/draw-point-mode.ts +2 -2
- package/src/edit-modes/draw-polygon-by-dragging-mode.ts +8 -8
- package/src/edit-modes/draw-polygon-mode.ts +304 -100
- package/src/edit-modes/draw-rectangle-from-center-mode.ts +2 -3
- package/src/edit-modes/draw-rectangle-mode.ts +2 -3
- package/src/edit-modes/draw-rectangle-using-three-points-mode.ts +2 -2
- package/src/edit-modes/draw-square-from-center-mode.ts +2 -3
- package/src/edit-modes/draw-square-mode.ts +3 -3
- package/src/edit-modes/duplicate-mode.ts +2 -2
- package/src/edit-modes/extend-line-string-mode.ts +4 -4
- package/src/edit-modes/extrude-mode.ts +7 -7
- package/src/edit-modes/geojson-edit-mode.ts +16 -19
- package/src/edit-modes/immutable-feature-collection.ts +10 -11
- package/src/edit-modes/measure-area-mode.ts +3 -3
- package/src/edit-modes/modify-mode.ts +13 -13
- package/src/edit-modes/resize-circle-mode.ts +6 -8
- package/src/edit-modes/rotate-mode.ts +9 -15
- package/src/edit-modes/scale-mode.ts +11 -15
- package/src/edit-modes/snappable-mode.ts +5 -5
- package/src/edit-modes/split-polygon-mode.ts +12 -16
- package/src/edit-modes/three-click-polygon-mode.ts +3 -3
- package/src/edit-modes/translate-mode.ts +10 -12
- package/src/edit-modes/two-click-polygon-mode.ts +7 -7
- package/src/edit-modes/types.ts +4 -4
- package/src/edit-modes/utils.ts +12 -16
- package/src/editable-layers/editable-geojson-layer.ts +19 -18
- package/src/editable-layers/selection-layer.ts +3 -3
- package/src/index.ts +8 -28
- package/src/mode-handlers/composite-mode-handler.ts +3 -3
- package/src/mode-handlers/draw-90degree-polygon-handler.ts +4 -2
- package/src/mode-handlers/draw-circle-by-bounding-box-handler.ts +0 -1
- package/src/mode-handlers/draw-circle-from-center-handler.ts +0 -1
- package/src/mode-handlers/draw-ellipse-by-bounding-box-handler.ts +1 -2
- package/src/mode-handlers/draw-ellipse-using-three-points-handler.ts +3 -2
- package/src/mode-handlers/draw-point-handler.ts +2 -2
- package/src/mode-handlers/draw-polygon-handler.ts +4 -2
- package/src/mode-handlers/draw-rectangle-handler.ts +0 -1
- package/src/mode-handlers/draw-rectangle-using-three-points-handler.ts +4 -2
- package/src/mode-handlers/mode-handler.ts +20 -21
- package/src/mode-handlers/modify-handler.ts +2 -4
- package/src/mode-handlers/rotate-handler.ts +4 -8
- package/src/mode-handlers/scale-handler.ts +4 -8
- package/src/mode-handlers/snappable-handler.ts +3 -3
- package/src/mode-handlers/split-polygon-handler.ts +6 -7
- package/src/mode-handlers/translate-handler.ts +3 -5
- package/src/utils/geojson-types.ts +15 -54
- package/src/utils/translate-from-center.ts +6 -11
- package/src/utils/utils.ts +4 -4
- package/dist/lib/constants.d.ts +0 -7
- package/dist/lib/constants.d.ts.map +0 -1
- package/dist/lib/constants.js +0 -10
- package/dist/lib/constants.js.map +0 -1
- package/dist/lib/deck-renderer/deck-cache.d.ts +0 -15
- package/dist/lib/deck-renderer/deck-cache.d.ts.map +0 -1
- package/dist/lib/deck-renderer/deck-cache.js +0 -52
- package/dist/lib/deck-renderer/deck-cache.js.map +0 -1
- package/dist/lib/deck-renderer/deck-drawer.d.ts +0 -63
- package/dist/lib/deck-renderer/deck-drawer.d.ts.map +0 -1
- package/dist/lib/deck-renderer/deck-drawer.js +0 -233
- package/dist/lib/deck-renderer/deck-drawer.js.map +0 -1
- package/dist/lib/feature.d.ts +0 -11
- package/dist/lib/feature.d.ts.map +0 -1
- package/dist/lib/feature.js +0 -20
- package/dist/lib/feature.js.map +0 -1
- package/dist/lib/layer-mouse-event.d.ts +0 -12
- package/dist/lib/layer-mouse-event.d.ts.map +0 -1
- package/dist/lib/layer-mouse-event.js +0 -28
- package/dist/lib/layer-mouse-event.js.map +0 -1
- package/dist/lib/layers/junctions-layer.d.ts +0 -9
- package/dist/lib/layers/junctions-layer.d.ts.map +0 -1
- package/dist/lib/layers/junctions-layer.js +0 -37
- package/dist/lib/layers/junctions-layer.js.map +0 -1
- package/dist/lib/layers/segments-layer.d.ts +0 -19
- package/dist/lib/layers/segments-layer.d.ts.map +0 -1
- package/dist/lib/layers/segments-layer.js +0 -98
- package/dist/lib/layers/segments-layer.js.map +0 -1
- package/dist/lib/layers/texts-layer.d.ts +0 -9
- package/dist/lib/layers/texts-layer.d.ts.map +0 -1
- package/dist/lib/layers/texts-layer.js +0 -36
- package/dist/lib/layers/texts-layer.js.map +0 -1
- package/dist/lib/math.d.ts +0 -12
- package/dist/lib/math.d.ts.map +0 -1
- package/dist/lib/math.js +0 -26
- package/dist/lib/math.js.map +0 -1
- package/dist/lib/nebula-core.d.ts +0 -35
- package/dist/lib/nebula-core.d.ts.map +0 -1
- package/dist/lib/nebula-core.js +0 -258
- package/dist/lib/nebula-core.js.map +0 -1
- package/dist/lib/nebula-layer.d.ts +0 -14
- package/dist/lib/nebula-layer.d.ts.map +0 -1
- package/dist/lib/nebula-layer.js +0 -30
- package/dist/lib/nebula-layer.js.map +0 -1
- package/dist/lib/style.d.ts +0 -20
- package/dist/lib/style.d.ts.map +0 -1
- package/dist/lib/style.js +0 -24
- package/dist/lib/style.js.map +0 -1
- package/dist/utils/curve-utils.d.ts +0 -3
- package/dist/utils/curve-utils.d.ts.map +0 -1
- package/dist/utils/curve-utils.js +0 -65
- package/dist/utils/curve-utils.js.map +0 -1
- package/src/lib/constants.ts +0 -10
- package/src/lib/deck-renderer/deck-cache.ts +0 -61
- package/src/lib/deck-renderer/deck-drawer.ts +0 -263
- package/src/lib/feature.ts +0 -31
- package/src/lib/layer-mouse-event.ts +0 -33
- package/src/lib/layers/junctions-layer.ts +0 -44
- package/src/lib/layers/segments-layer.ts +0 -112
- package/src/lib/layers/texts-layer.ts +0 -47
- package/src/lib/math.ts +0 -30
- package/src/lib/nebula-core.ts +0 -327
- package/src/lib/nebula-layer.ts +0 -37
- package/src/lib/style.ts +0 -26
- package/src/utils/curve-utils.ts +0 -81
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,
|
|
@@ -59,29 +58,19 @@ __export(dist_exports, {
|
|
|
59
58
|
ElevationMode: () => ElevationMode,
|
|
60
59
|
ExtendLineStringMode: () => ExtendLineStringMode,
|
|
61
60
|
ExtrudeMode: () => ExtrudeMode,
|
|
62
|
-
Feature: () => Feature,
|
|
63
61
|
GeoJsonEditMode: () => GeoJsonEditMode,
|
|
64
62
|
ImmutableFeatureCollection: () => ImmutableFeatureCollection,
|
|
65
63
|
JunctionScatterplotLayer: () => JunctionScatterplotLayer,
|
|
66
|
-
JunctionsLayer: () => JunctionsLayer,
|
|
67
|
-
LayerMouseEvent: () => LayerMouseEvent,
|
|
68
|
-
MAX_ARROWS: () => MAX_ARROWS,
|
|
69
64
|
MeasureAngleMode: () => MeasureAngleMode,
|
|
70
65
|
MeasureAreaMode: () => MeasureAreaMode,
|
|
71
66
|
MeasureDistanceMode: () => MeasureDistanceMode,
|
|
72
67
|
ModifyMode: () => ModifyMode,
|
|
73
|
-
NebulaCore: () => NebulaCore,
|
|
74
|
-
NebulaLayer: () => NebulaLayer,
|
|
75
|
-
PROJECTED_PIXEL_SIZE_MULTIPLIER: () => PROJECTED_PIXEL_SIZE_MULTIPLIER,
|
|
76
68
|
ResizeCircleMode: () => ResizeCircleMode,
|
|
77
69
|
RotateMode: () => RotateMode,
|
|
78
|
-
SELECTION_TYPE: () => SELECTION_TYPE,
|
|
79
70
|
ScaleMode: () => ScaleMode,
|
|
80
|
-
SegmentsLayer: () => SegmentsLayer,
|
|
81
71
|
SelectionLayer: () => SelectionLayer,
|
|
82
72
|
SnappableMode: () => SnappableMode,
|
|
83
73
|
SplitPolygonMode: () => SplitPolygonMode,
|
|
84
|
-
TextsLayer: () => TextsLayer,
|
|
85
74
|
TransformMode: () => TransformMode,
|
|
86
75
|
TranslateMode: () => TranslateMode,
|
|
87
76
|
ViewMode: () => ViewMode,
|
|
@@ -93,302 +82,6 @@ __export(dist_exports, {
|
|
|
93
82
|
});
|
|
94
83
|
module.exports = __toCommonJS(dist_exports);
|
|
95
84
|
|
|
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
85
|
// dist/utils/utils.js
|
|
393
86
|
var utils_exports = {};
|
|
394
87
|
__export(utils_exports, {
|
|
@@ -403,7 +96,7 @@ __export(utils_exports, {
|
|
|
403
96
|
var import_destination = __toESM(require("@turf/destination"), 1);
|
|
404
97
|
var import_bearing = __toESM(require("@turf/bearing"), 1);
|
|
405
98
|
var import_point_to_line_distance = __toESM(require("@turf/point-to-line-distance"), 1);
|
|
406
|
-
var
|
|
99
|
+
var import_helpers = require("@turf/helpers");
|
|
407
100
|
var import_viewport_mercator_project = require("viewport-mercator-project");
|
|
408
101
|
function toDeckColor(color, defaultColor = [255, 0, 0, 255]) {
|
|
409
102
|
if (!Array.isArray(color)) {
|
|
@@ -428,7 +121,7 @@ function generatePointsParallelToLinePoints(p1, p2, mapCoords2) {
|
|
|
428
121
|
type: "LineString",
|
|
429
122
|
coordinates: [p1, p2]
|
|
430
123
|
};
|
|
431
|
-
const pt = (0,
|
|
124
|
+
const pt = (0, import_helpers.point)(mapCoords2);
|
|
432
125
|
const ddistance = (0, import_point_to_line_distance.default)(pt, lineString3);
|
|
433
126
|
const lineBearing = (0, import_bearing.default)(p1, p2);
|
|
434
127
|
const isPointToLeftOfLine = (mapCoords2[0] - p1[0]) * (p2[1] - p1[1]) - (mapCoords2[1] - p1[1]) * (p2[0] - p1[0]);
|
|
@@ -499,479 +192,13 @@ function insertBefore(base, insertBeforeText, toInsert) {
|
|
|
499
192
|
return base.slice(0, at) + toInsert + base.slice(at);
|
|
500
193
|
}
|
|
501
194
|
|
|
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
195
|
// dist/editable-layers/editable-geojson-layer.js
|
|
970
|
-
var
|
|
196
|
+
var import_layers2 = require("@deck.gl/layers");
|
|
971
197
|
|
|
972
198
|
// dist/edit-modes/geojson-edit-mode.js
|
|
199
|
+
var import_helpers3 = require("@turf/helpers");
|
|
973
200
|
var import_union = __toESM(require("@turf/union"), 1);
|
|
974
|
-
var
|
|
201
|
+
var import_difference = __toESM(require("@turf/difference"), 1);
|
|
975
202
|
var import_intersect = __toESM(require("@turf/intersect"), 1);
|
|
976
203
|
var import_rewind = __toESM(require("@turf/rewind"), 1);
|
|
977
204
|
|
|
@@ -980,7 +207,7 @@ var import_destination2 = __toESM(require("@turf/destination"), 1);
|
|
|
980
207
|
var import_bearing2 = __toESM(require("@turf/bearing"), 1);
|
|
981
208
|
var import_point_to_line_distance2 = __toESM(require("@turf/point-to-line-distance"), 1);
|
|
982
209
|
var import_meta = require("@turf/meta");
|
|
983
|
-
var
|
|
210
|
+
var import_helpers2 = require("@turf/helpers");
|
|
984
211
|
var import_invariant = require("@turf/invariant");
|
|
985
212
|
var import_viewport_mercator_project2 = require("viewport-mercator-project");
|
|
986
213
|
function recursivelyTraverseNestedArrays2(array, prefix, fn) {
|
|
@@ -1000,7 +227,7 @@ function generatePointsParallelToLinePoints2(p1, p2, coords) {
|
|
|
1000
227
|
type: "LineString",
|
|
1001
228
|
coordinates: [p1, p2]
|
|
1002
229
|
};
|
|
1003
|
-
const pt = (0,
|
|
230
|
+
const pt = (0, import_helpers2.point)(coords);
|
|
1004
231
|
const ddistance = (0, import_point_to_line_distance2.default)(pt, lineString3);
|
|
1005
232
|
const lineBearing = (0, import_bearing2.default)(p1, p2);
|
|
1006
233
|
const isPointToLeftOfLine = (coords[0] - p1[0]) * (p2[1] - p1[1]) - (coords[1] - p1[1]) * (p2[0] - p1[0]);
|
|
@@ -1069,7 +296,7 @@ function nearestPointOnLine(lines, inPoint, viewport) {
|
|
|
1069
296
|
if (viewport) {
|
|
1070
297
|
mercator = new import_viewport_mercator_project2.WebMercatorViewport(viewport);
|
|
1071
298
|
}
|
|
1072
|
-
let closestPoint = (0,
|
|
299
|
+
let closestPoint = (0, import_helpers2.point)([Infinity, Infinity], {
|
|
1073
300
|
dist: Infinity
|
|
1074
301
|
});
|
|
1075
302
|
if (!((_a = lines.geometry) == null ? void 0 : _a.coordinates.length) || ((_b = lines.geometry) == null ? void 0 : _b.coordinates.length) < 2) {
|
|
@@ -1143,7 +370,7 @@ function nearestPointOnLine(lines, inPoint, viewport) {
|
|
|
1143
370
|
from
|
|
1144
371
|
};
|
|
1145
372
|
}
|
|
1146
|
-
closestPoint = (0,
|
|
373
|
+
closestPoint = (0, import_helpers2.point)([snapPoint.x, snapPoint.y], {
|
|
1147
374
|
dist: Math.abs(snapPoint.from - snapPoint.to),
|
|
1148
375
|
index: snapPoint.idx
|
|
1149
376
|
});
|
|
@@ -1270,8 +497,8 @@ function shouldCancelPan(event) {
|
|
|
1270
497
|
// dist/edit-modes/immutable-feature-collection.js
|
|
1271
498
|
var ImmutableFeatureCollection = class {
|
|
1272
499
|
featureCollection;
|
|
1273
|
-
constructor(
|
|
1274
|
-
this.featureCollection =
|
|
500
|
+
constructor(featureCollection7) {
|
|
501
|
+
this.featureCollection = featureCollection7;
|
|
1275
502
|
}
|
|
1276
503
|
getObject() {
|
|
1277
504
|
return this.featureCollection;
|
|
@@ -1506,9 +733,9 @@ function pruneGeometryIfNecessary(geometry) {
|
|
|
1506
733
|
}
|
|
1507
734
|
}
|
|
1508
735
|
function prunePolygonIfNecessary(geometry) {
|
|
1509
|
-
const
|
|
1510
|
-
for (let holeIndex = 1; holeIndex <
|
|
1511
|
-
if (removeHoleIfNecessary(
|
|
736
|
+
const polygon2 = geometry.coordinates;
|
|
737
|
+
for (let holeIndex = 1; holeIndex < polygon2.length; holeIndex++) {
|
|
738
|
+
if (removeHoleIfNecessary(polygon2, holeIndex)) {
|
|
1512
739
|
holeIndex--;
|
|
1513
740
|
}
|
|
1514
741
|
}
|
|
@@ -1524,23 +751,23 @@ function pruneMultiLineStringIfNecessary(geometry) {
|
|
|
1524
751
|
}
|
|
1525
752
|
function pruneMultiPolygonIfNecessary(geometry) {
|
|
1526
753
|
for (let polygonIndex = 0; polygonIndex < geometry.coordinates.length; polygonIndex++) {
|
|
1527
|
-
const
|
|
1528
|
-
const outerRing =
|
|
754
|
+
const polygon2 = geometry.coordinates[polygonIndex];
|
|
755
|
+
const outerRing = polygon2[0];
|
|
1529
756
|
if (outerRing.length <= 3) {
|
|
1530
757
|
geometry.coordinates.splice(polygonIndex, 1);
|
|
1531
758
|
polygonIndex--;
|
|
1532
759
|
}
|
|
1533
|
-
for (let holeIndex = 1; holeIndex <
|
|
1534
|
-
if (removeHoleIfNecessary(
|
|
760
|
+
for (let holeIndex = 1; holeIndex < polygon2.length; holeIndex++) {
|
|
761
|
+
if (removeHoleIfNecessary(polygon2, holeIndex)) {
|
|
1535
762
|
holeIndex--;
|
|
1536
763
|
}
|
|
1537
764
|
}
|
|
1538
765
|
}
|
|
1539
766
|
}
|
|
1540
|
-
function removeHoleIfNecessary(
|
|
1541
|
-
const hole =
|
|
767
|
+
function removeHoleIfNecessary(polygon2, holeIndex) {
|
|
768
|
+
const hole = polygon2[holeIndex];
|
|
1542
769
|
if (hole.length <= 3) {
|
|
1543
|
-
|
|
770
|
+
polygon2.splice(holeIndex, 1);
|
|
1544
771
|
return true;
|
|
1545
772
|
}
|
|
1546
773
|
return false;
|
|
@@ -1667,11 +894,11 @@ var GeoJsonEditMode = class {
|
|
|
1667
894
|
};
|
|
1668
895
|
let updatedGeometry;
|
|
1669
896
|
if (modeConfig.booleanOperation === "union") {
|
|
1670
|
-
updatedGeometry = (0, import_union.default)(selectedFeature, feature);
|
|
897
|
+
updatedGeometry = (0, import_union.default)((0, import_helpers3.featureCollection)([selectedFeature, feature]));
|
|
1671
898
|
} else if (modeConfig.booleanOperation === "difference") {
|
|
1672
|
-
updatedGeometry = (0,
|
|
899
|
+
updatedGeometry = (0, import_difference.default)((0, import_helpers3.featureCollection)([selectedFeature, feature]));
|
|
1673
900
|
} else if (modeConfig.booleanOperation === "intersection") {
|
|
1674
|
-
updatedGeometry = (0, import_intersect.default)(selectedFeature, feature);
|
|
901
|
+
updatedGeometry = (0, import_intersect.default)((0, import_helpers3.featureCollection)([selectedFeature, feature]));
|
|
1675
902
|
} else {
|
|
1676
903
|
console.warn(`Invalid booleanOperation ${modeConfig.booleanOperation}`);
|
|
1677
904
|
return null;
|
|
@@ -1744,7 +971,7 @@ var ViewMode = class extends GeoJsonEditMode {
|
|
|
1744
971
|
|
|
1745
972
|
// dist/edit-modes/translate-mode.js
|
|
1746
973
|
var import_bearing3 = __toESM(require("@turf/bearing"), 1);
|
|
1747
|
-
var
|
|
974
|
+
var import_distance = __toESM(require("@turf/distance"), 1);
|
|
1748
975
|
var import_clone = __toESM(require("@turf/clone"), 1);
|
|
1749
976
|
var import_helpers4 = require("@turf/helpers");
|
|
1750
977
|
var import_viewport_mercator_project3 = require("viewport-mercator-project");
|
|
@@ -1847,7 +1074,7 @@ var TranslateMode = class extends GeoJsonEditMode {
|
|
|
1847
1074
|
} else {
|
|
1848
1075
|
const p1 = (0, import_helpers4.point)(startDragPoint);
|
|
1849
1076
|
const p2 = (0, import_helpers4.point)(currentPoint);
|
|
1850
|
-
const distanceMoved = (0,
|
|
1077
|
+
const distanceMoved = (0, import_distance.default)(p1, p2);
|
|
1851
1078
|
const direction = (0, import_bearing3.default)(p1, p2);
|
|
1852
1079
|
const movedFeatures = this._geometryBeforeTranslate.features.map((feature) => translateFromCenter((0, import_clone.default)(feature), distanceMoved, direction));
|
|
1853
1080
|
for (let i = 0; i < selectedIndexes.length; i++) {
|
|
@@ -1894,12 +1121,7 @@ var ModifyMode = class extends GeoJsonEditMode {
|
|
|
1894
1121
|
const referencePoint = (0, import_helpers5.point)(mapCoords2);
|
|
1895
1122
|
recursivelyTraverseNestedArrays2(featureAsPick.object.geometry.coordinates, [], (lineString3, prefix) => {
|
|
1896
1123
|
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
|
-
);
|
|
1124
|
+
const candidateIntermediatePoint = this.getNearestPoint(lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport);
|
|
1903
1125
|
if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) {
|
|
1904
1126
|
intermediatePoint = candidateIntermediatePoint;
|
|
1905
1127
|
positionIndexPrefix = prefix;
|
|
@@ -2035,7 +1257,7 @@ var ModifyMode = class extends GeoJsonEditMode {
|
|
|
2035
1257
|
}
|
|
2036
1258
|
handleStopDragging(event, props) {
|
|
2037
1259
|
const selectedFeatureIndexes = props.selectedIndexes;
|
|
2038
|
-
const editHandle = getPickedEditHandle(event.
|
|
1260
|
+
const editHandle = getPickedEditHandle(event.pointerDownPicks);
|
|
2039
1261
|
if (selectedFeatureIndexes.length && editHandle) {
|
|
2040
1262
|
this._dragEditHandle("finishMovePosition", props, editHandle, event);
|
|
2041
1263
|
}
|
|
@@ -2051,14 +1273,14 @@ var ModifyMode = class extends GeoJsonEditMode {
|
|
|
2051
1273
|
};
|
|
2052
1274
|
|
|
2053
1275
|
// dist/edit-modes/scale-mode.js
|
|
2054
|
-
var
|
|
1276
|
+
var import_bbox = __toESM(require("@turf/bbox"), 1);
|
|
2055
1277
|
var import_centroid = __toESM(require("@turf/centroid"), 1);
|
|
2056
1278
|
var import_bearing4 = __toESM(require("@turf/bearing"), 1);
|
|
2057
|
-
var
|
|
1279
|
+
var import_bbox_polygon = __toESM(require("@turf/bbox-polygon"), 1);
|
|
2058
1280
|
var import_helpers6 = require("@turf/helpers");
|
|
2059
1281
|
var import_polygon_to_line = require("@turf/polygon-to-line");
|
|
2060
1282
|
var import_meta2 = require("@turf/meta");
|
|
2061
|
-
var
|
|
1283
|
+
var import_distance2 = __toESM(require("@turf/distance"), 1);
|
|
2062
1284
|
var import_transform_scale = __toESM(require("@turf/transform-scale"), 1);
|
|
2063
1285
|
var import_invariant2 = require("@turf/invariant");
|
|
2064
1286
|
var ScaleMode = class extends GeoJsonEditMode {
|
|
@@ -2107,12 +1329,7 @@ var ScaleMode = class extends GeoJsonEditMode {
|
|
|
2107
1329
|
const oppositeHandle = this._getOppositeScaleHandle(this._selectedEditHandle);
|
|
2108
1330
|
const origin = (0, import_invariant2.getCoord)(oppositeHandle);
|
|
2109
1331
|
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
|
-
);
|
|
1332
|
+
const scaledFeatures = (0, import_transform_scale.default)(this._geometryBeingScaled, scaleFactor, { origin });
|
|
2116
1333
|
return {
|
|
2117
1334
|
updatedData: this._getUpdatedData(props, scaledFeatures),
|
|
2118
1335
|
editType,
|
|
@@ -2186,7 +1403,7 @@ var ScaleMode = class extends GeoJsonEditMode {
|
|
|
2186
1403
|
if (this._isSinglePointGeometrySelected(selectedGeometry)) {
|
|
2187
1404
|
return { type: "FeatureCollection", features: [] };
|
|
2188
1405
|
}
|
|
2189
|
-
const boundingBox = (0,
|
|
1406
|
+
const boundingBox = (0, import_bbox_polygon.default)((0, import_bbox.default)(selectedGeometry));
|
|
2190
1407
|
boundingBox.properties.mode = "scale";
|
|
2191
1408
|
const cornerGuidePoints = [];
|
|
2192
1409
|
(0, import_meta2.coordEach)(boundingBox, (coord, coordIndex) => {
|
|
@@ -2204,17 +1421,17 @@ var ScaleMode = class extends GeoJsonEditMode {
|
|
|
2204
1421
|
}
|
|
2205
1422
|
};
|
|
2206
1423
|
function getScaleFactor(centroid, startDragPoint, currentPoint) {
|
|
2207
|
-
const startDistance = (0,
|
|
2208
|
-
const endDistance = (0,
|
|
1424
|
+
const startDistance = (0, import_distance2.default)(centroid, startDragPoint);
|
|
1425
|
+
const endDistance = (0, import_distance2.default)(centroid, currentPoint);
|
|
2209
1426
|
return endDistance / startDistance;
|
|
2210
1427
|
}
|
|
2211
1428
|
|
|
2212
1429
|
// dist/edit-modes/rotate-mode.js
|
|
2213
|
-
var
|
|
1430
|
+
var import_bbox2 = __toESM(require("@turf/bbox"), 1);
|
|
2214
1431
|
var import_centroid2 = __toESM(require("@turf/centroid"), 1);
|
|
2215
1432
|
var import_bearing5 = __toESM(require("@turf/bearing"), 1);
|
|
2216
|
-
var
|
|
2217
|
-
var
|
|
1433
|
+
var import_bbox_polygon2 = __toESM(require("@turf/bbox-polygon"), 1);
|
|
1434
|
+
var import_distance3 = __toESM(require("@turf/distance"), 1);
|
|
2218
1435
|
var import_meta3 = require("@turf/meta");
|
|
2219
1436
|
var import_invariant3 = require("@turf/invariant");
|
|
2220
1437
|
var import_helpers7 = require("@turf/helpers");
|
|
@@ -2241,7 +1458,7 @@ var RotateMode = class extends GeoJsonEditMode {
|
|
|
2241
1458
|
if (this._isRotating) {
|
|
2242
1459
|
return (0, import_helpers7.featureCollection)([(0, import_centroid2.default)(selectedGeometry)]);
|
|
2243
1460
|
}
|
|
2244
|
-
const boundingBox = (0,
|
|
1461
|
+
const boundingBox = (0, import_bbox_polygon2.default)((0, import_bbox2.default)(selectedGeometry));
|
|
2245
1462
|
let previousCoord = null;
|
|
2246
1463
|
let topEdgeMidpointCoords = null;
|
|
2247
1464
|
let longestEdgeLength = 0;
|
|
@@ -2251,7 +1468,7 @@ var RotateMode = class extends GeoJsonEditMode {
|
|
|
2251
1468
|
if (!topEdgeMidpointCoords || edgeMidpoint[1] > topEdgeMidpointCoords[1]) {
|
|
2252
1469
|
topEdgeMidpointCoords = edgeMidpoint;
|
|
2253
1470
|
}
|
|
2254
|
-
const edgeDistance = (0,
|
|
1471
|
+
const edgeDistance = (0, import_distance3.default)(coord, previousCoord);
|
|
2255
1472
|
longestEdgeLength = Math.max(longestEdgeLength, edgeDistance);
|
|
2256
1473
|
}
|
|
2257
1474
|
previousCoord = coord;
|
|
@@ -2315,15 +1532,10 @@ var RotateMode = class extends GeoJsonEditMode {
|
|
|
2315
1532
|
return null;
|
|
2316
1533
|
}
|
|
2317
1534
|
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
|
-
);
|
|
1535
|
+
const angle = getRotationAngle(centroid.geometry.coordinates, startDragPoint, currentPoint);
|
|
1536
|
+
const rotatedFeatures = (0, import_transform_rotate.default)(this._geometryBeingRotated, angle, {
|
|
1537
|
+
pivot: centroid
|
|
1538
|
+
});
|
|
2327
1539
|
let updatedData = new ImmutableFeatureCollection(props.data);
|
|
2328
1540
|
const selectedIndexes = props.selectedIndexes;
|
|
2329
1541
|
for (let i = 0; i < selectedIndexes.length; i++) {
|
|
@@ -2365,12 +1577,12 @@ var DuplicateMode = class extends TranslateMode {
|
|
|
2365
1577
|
|
|
2366
1578
|
// dist/edit-modes/split-polygon-mode.js
|
|
2367
1579
|
var import_boolean_point_in_polygon = __toESM(require("@turf/boolean-point-in-polygon"), 1);
|
|
2368
|
-
var
|
|
2369
|
-
var
|
|
1580
|
+
var import_difference2 = __toESM(require("@turf/difference"), 1);
|
|
1581
|
+
var import_buffer = __toESM(require("@turf/buffer"), 1);
|
|
2370
1582
|
var import_line_intersect = __toESM(require("@turf/line-intersect"), 1);
|
|
2371
1583
|
var import_helpers8 = require("@turf/helpers");
|
|
2372
1584
|
var import_bearing6 = __toESM(require("@turf/bearing"), 1);
|
|
2373
|
-
var
|
|
1585
|
+
var import_distance4 = __toESM(require("@turf/distance"), 1);
|
|
2374
1586
|
var import_destination3 = __toESM(require("@turf/destination"), 1);
|
|
2375
1587
|
var import_polygon_to_line3 = __toESM(require("@turf/polygon-to-line"), 1);
|
|
2376
1588
|
var import_nearest_point_on_line = __toESM(require("@turf/nearest-point-on-line"), 1);
|
|
@@ -2389,7 +1601,7 @@ var SplitPolygonMode = class extends GeoJsonEditMode {
|
|
|
2389
1601
|
let closestPoint = null;
|
|
2390
1602
|
lines.forEach((line) => {
|
|
2391
1603
|
const snapPoint = (0, import_nearest_point_on_line.default)(line, firstPoint);
|
|
2392
|
-
const distanceFromOrigin = (0,
|
|
1604
|
+
const distanceFromOrigin = (0, import_distance4.default)(snapPoint, firstPoint);
|
|
2393
1605
|
if (minDistance > distanceFromOrigin) {
|
|
2394
1606
|
minDistance = distanceFromOrigin;
|
|
2395
1607
|
closestPoint = snapPoint;
|
|
@@ -2397,7 +1609,7 @@ var SplitPolygonMode = class extends GeoJsonEditMode {
|
|
|
2397
1609
|
});
|
|
2398
1610
|
if (closestPoint) {
|
|
2399
1611
|
const lastBearing = (0, import_bearing6.default)(firstPoint, closestPoint);
|
|
2400
|
-
const currentDistance = (0,
|
|
1612
|
+
const currentDistance = (0, import_distance4.default)(firstPoint, mapCoords2, { units: "meters" });
|
|
2401
1613
|
return (0, import_destination3.default)(firstPoint, currentDistance, lastBearing, {
|
|
2402
1614
|
units: "meters"
|
|
2403
1615
|
}).geometry.coordinates;
|
|
@@ -2473,8 +1685,8 @@ var SplitPolygonMode = class extends GeoJsonEditMode {
|
|
|
2473
1685
|
gap = 0.1;
|
|
2474
1686
|
units = "centimeters";
|
|
2475
1687
|
}
|
|
2476
|
-
const buffer = (0,
|
|
2477
|
-
const updatedGeometry = (0,
|
|
1688
|
+
const buffer = (0, import_buffer.default)(tentativeFeature, gap, { units });
|
|
1689
|
+
const updatedGeometry = (0, import_difference2.default)((0, import_helpers8.featureCollection)([(0, import_helpers8.feature)(selectedGeometry), buffer]));
|
|
2478
1690
|
if (!updatedGeometry) {
|
|
2479
1691
|
console.warn("Canceling edit. Split Polygon erased");
|
|
2480
1692
|
return null;
|
|
@@ -2749,7 +1961,7 @@ var DrawPointMode = class extends GeoJsonEditMode {
|
|
|
2749
1961
|
};
|
|
2750
1962
|
|
|
2751
1963
|
// dist/edit-modes/draw-line-string-mode.js
|
|
2752
|
-
var
|
|
1964
|
+
var import_distance5 = __toESM(require("@turf/distance"), 1);
|
|
2753
1965
|
|
|
2754
1966
|
// dist/utils/memoize.js
|
|
2755
1967
|
function isEqual(a, b) {
|
|
@@ -2906,7 +2118,7 @@ var DrawLineStringMode = class extends GeoJsonEditMode {
|
|
|
2906
2118
|
calculateInfoDraw(clickSequence) {
|
|
2907
2119
|
if (clickSequence.length > 1) {
|
|
2908
2120
|
this.position = clickSequence[clickSequence.length - 1];
|
|
2909
|
-
this.dist += (0,
|
|
2121
|
+
this.dist += (0, import_distance5.default)(clickSequence[clickSequence.length - 2], clickSequence[clickSequence.length - 1]);
|
|
2910
2122
|
}
|
|
2911
2123
|
}
|
|
2912
2124
|
/**
|
|
@@ -2938,48 +2150,53 @@ var DrawLineStringMode = class extends GeoJsonEditMode {
|
|
|
2938
2150
|
// dist/edit-modes/draw-polygon-mode.js
|
|
2939
2151
|
var import_line_intersect2 = __toESM(require("@turf/line-intersect"), 1);
|
|
2940
2152
|
var import_helpers9 = require("@turf/helpers");
|
|
2153
|
+
var import_boolean_within = __toESM(require("@turf/boolean-within"), 1);
|
|
2941
2154
|
var DrawPolygonMode = class extends GeoJsonEditMode {
|
|
2155
|
+
holeSequence = [];
|
|
2156
|
+
isDrawingHole = false;
|
|
2942
2157
|
createTentativeFeature(props) {
|
|
2943
2158
|
const { lastPointerMoveEvent } = props;
|
|
2944
2159
|
const clickSequence = this.getClickSequence();
|
|
2160
|
+
const holeSequence = this.holeSequence;
|
|
2945
2161
|
const lastCoords = lastPointerMoveEvent ? [lastPointerMoveEvent.mapCoords] : [];
|
|
2946
|
-
let
|
|
2947
|
-
if (
|
|
2948
|
-
|
|
2949
|
-
type: "
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
type: "LineString",
|
|
2955
|
-
coordinates: [...clickSequence, ...lastCoords]
|
|
2956
|
-
}
|
|
2162
|
+
let geometry;
|
|
2163
|
+
if (this.isDrawingHole && holeSequence.length > 1) {
|
|
2164
|
+
geometry = {
|
|
2165
|
+
type: "Polygon",
|
|
2166
|
+
coordinates: [
|
|
2167
|
+
[...clickSequence, clickSequence[0]],
|
|
2168
|
+
[...holeSequence, ...lastCoords, holeSequence[0]]
|
|
2169
|
+
]
|
|
2957
2170
|
};
|
|
2958
2171
|
} else if (clickSequence.length > 2) {
|
|
2959
|
-
|
|
2960
|
-
type: "
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
}
|
|
2172
|
+
geometry = {
|
|
2173
|
+
type: "Polygon",
|
|
2174
|
+
coordinates: [[...clickSequence, ...lastCoords, clickSequence[0]]]
|
|
2175
|
+
};
|
|
2176
|
+
} else {
|
|
2177
|
+
geometry = {
|
|
2178
|
+
type: "LineString",
|
|
2179
|
+
coordinates: [...clickSequence, ...lastCoords]
|
|
2968
2180
|
};
|
|
2969
2181
|
}
|
|
2970
|
-
return
|
|
2182
|
+
return {
|
|
2183
|
+
type: "Feature",
|
|
2184
|
+
properties: {
|
|
2185
|
+
guideType: "tentative"
|
|
2186
|
+
},
|
|
2187
|
+
geometry
|
|
2188
|
+
};
|
|
2971
2189
|
}
|
|
2972
2190
|
getGuides(props) {
|
|
2973
|
-
const clickSequence = this.getClickSequence();
|
|
2974
2191
|
const guides = {
|
|
2975
2192
|
type: "FeatureCollection",
|
|
2976
2193
|
features: []
|
|
2977
2194
|
};
|
|
2978
|
-
const
|
|
2979
|
-
if (
|
|
2980
|
-
guides.features.push(
|
|
2981
|
-
|
|
2982
|
-
const
|
|
2195
|
+
const tentative = this.createTentativeFeature(props);
|
|
2196
|
+
if (tentative)
|
|
2197
|
+
guides.features.push(tentative);
|
|
2198
|
+
const sequence = this.isDrawingHole ? this.holeSequence : this.getClickSequence();
|
|
2199
|
+
const handles = sequence.map((coord, index) => ({
|
|
2983
2200
|
type: "Feature",
|
|
2984
2201
|
properties: {
|
|
2985
2202
|
guideType: "editHandle",
|
|
@@ -2989,51 +2206,55 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
|
|
|
2989
2206
|
},
|
|
2990
2207
|
geometry: {
|
|
2991
2208
|
type: "Point",
|
|
2992
|
-
coordinates:
|
|
2209
|
+
coordinates: coord
|
|
2993
2210
|
}
|
|
2994
2211
|
}));
|
|
2995
|
-
guides.features.push(...
|
|
2212
|
+
guides.features.push(...handles);
|
|
2996
2213
|
return guides;
|
|
2997
2214
|
}
|
|
2998
|
-
|
|
2999
|
-
const clickSequence = this.getClickSequence();
|
|
3000
|
-
if (clickSequence.length > 2) {
|
|
3001
|
-
const polygonToAdd = {
|
|
3002
|
-
type: "Polygon",
|
|
3003
|
-
coordinates: [[...clickSequence, clickSequence[0]]]
|
|
3004
|
-
};
|
|
3005
|
-
this.resetClickSequence();
|
|
3006
|
-
const editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);
|
|
3007
|
-
if (editAction) {
|
|
3008
|
-
props.onEdit(editAction);
|
|
3009
|
-
}
|
|
3010
|
-
}
|
|
3011
|
-
}
|
|
3012
|
-
// eslint-disable-next-line complexity
|
|
2215
|
+
// eslint-disable-next-line complexity, max-statements
|
|
3013
2216
|
handleClick(event, props) {
|
|
3014
2217
|
const { picks } = event;
|
|
3015
2218
|
const clickedEditHandle = getPickedEditHandle(picks);
|
|
3016
2219
|
const clickSequence = this.getClickSequence();
|
|
3017
|
-
|
|
3018
|
-
if (clickSequence.length > 2 &&
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
3023
|
-
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
2220
|
+
const coords = event.mapCoords;
|
|
2221
|
+
if (!this.isDrawingHole && clickSequence.length > 2 && clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[0] === 0 || clickedEditHandle.properties.positionIndexes[0] === clickSequence.length - 1)) {
|
|
2222
|
+
this.finishDrawing(props);
|
|
2223
|
+
return;
|
|
2224
|
+
}
|
|
2225
|
+
if (!this.isDrawingHole && clickSequence.length > 2) {
|
|
2226
|
+
if (isNearFirstPoint(coords, clickSequence[0])) {
|
|
2227
|
+
this.finishDrawing(props);
|
|
2228
|
+
this.resetClickSequence();
|
|
2229
|
+
return;
|
|
2230
|
+
}
|
|
2231
|
+
}
|
|
2232
|
+
if (this.isDrawingHole) {
|
|
2233
|
+
const current = this.holeSequence;
|
|
2234
|
+
current.push(coords);
|
|
2235
|
+
if (current.length > 2) {
|
|
2236
|
+
const poly = {
|
|
2237
|
+
type: "Polygon",
|
|
2238
|
+
coordinates: [
|
|
2239
|
+
[...clickSequence, clickSequence[0]],
|
|
2240
|
+
[...current, current[0]]
|
|
2241
|
+
]
|
|
2242
|
+
};
|
|
2243
|
+
this.resetClickSequence();
|
|
2244
|
+
this.holeSequence = [];
|
|
2245
|
+
this.isDrawingHole = false;
|
|
2246
|
+
const editAction = this.getAddFeatureOrBooleanPolygonAction(poly, props);
|
|
2247
|
+
if (editAction)
|
|
2248
|
+
props.onEdit(editAction);
|
|
3027
2249
|
}
|
|
2250
|
+
return;
|
|
3028
2251
|
}
|
|
3029
2252
|
let positionAdded = false;
|
|
3030
|
-
if (!clickedEditHandle
|
|
2253
|
+
if (!clickedEditHandle) {
|
|
3031
2254
|
this.addClickSequence(event);
|
|
3032
2255
|
positionAdded = true;
|
|
3033
2256
|
}
|
|
3034
|
-
if (
|
|
3035
|
-
this.finishDrawing(props);
|
|
3036
|
-
} else if (positionAdded) {
|
|
2257
|
+
if (positionAdded) {
|
|
3037
2258
|
props.onEdit({
|
|
3038
2259
|
// data is the same
|
|
3039
2260
|
updatedData: props.data,
|
|
@@ -3044,16 +2265,19 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
|
|
|
3044
2265
|
});
|
|
3045
2266
|
}
|
|
3046
2267
|
}
|
|
3047
|
-
handleDoubleClick(
|
|
2268
|
+
handleDoubleClick(_event, props) {
|
|
3048
2269
|
this.finishDrawing(props);
|
|
2270
|
+
this.resetClickSequence();
|
|
3049
2271
|
}
|
|
3050
2272
|
handleKeyUp(event, props) {
|
|
3051
2273
|
if (event.key === "Enter") {
|
|
3052
2274
|
this.finishDrawing(props);
|
|
2275
|
+
this.resetClickSequence();
|
|
3053
2276
|
} else if (event.key === "Escape") {
|
|
3054
2277
|
this.resetClickSequence();
|
|
2278
|
+
this.holeSequence = [];
|
|
2279
|
+
this.isDrawingHole = false;
|
|
3055
2280
|
props.onEdit({
|
|
3056
|
-
// Because the new drawing feature is dropped, so the data will keep as the same.
|
|
3057
2281
|
updatedData: props.data,
|
|
3058
2282
|
editType: "cancelFeature",
|
|
3059
2283
|
editContext: {}
|
|
@@ -3064,10 +2288,122 @@ var DrawPolygonMode = class extends GeoJsonEditMode {
|
|
|
3064
2288
|
props.onUpdateCursor("cell");
|
|
3065
2289
|
super.handlePointerMove(event, props);
|
|
3066
2290
|
}
|
|
2291
|
+
// eslint-disable-next-line max-statements, complexity
|
|
2292
|
+
finishDrawing(props) {
|
|
2293
|
+
const clickSequence = this.getClickSequence();
|
|
2294
|
+
const polygon2 = [...clickSequence, clickSequence[0]];
|
|
2295
|
+
const newPolygon = (0, import_helpers9.polygon)([polygon2]);
|
|
2296
|
+
const canAddHole = canAddHoleToPolygon(props);
|
|
2297
|
+
const canOverlap = canPolygonOverlap(props);
|
|
2298
|
+
if (!canOverlap) {
|
|
2299
|
+
const overlapping = (0, import_line_intersect2.default)(newPolygon, newPolygon).features.filter((intersection) => !newPolygon.geometry.coordinates[0].some((coord) => coord[0] === intersection.geometry.coordinates[0] && coord[1] === intersection.geometry.coordinates[1]));
|
|
2300
|
+
if (overlapping.length > 0) {
|
|
2301
|
+
props.onEdit({
|
|
2302
|
+
updatedData: props.data,
|
|
2303
|
+
editType: "invalidPolygon",
|
|
2304
|
+
editContext: { reason: "overlaps" }
|
|
2305
|
+
});
|
|
2306
|
+
this.resetClickSequence();
|
|
2307
|
+
return;
|
|
2308
|
+
}
|
|
2309
|
+
}
|
|
2310
|
+
if (canAddHole) {
|
|
2311
|
+
const holeResult = this.tryAddHoleToExistingPolygon(newPolygon, polygon2, props);
|
|
2312
|
+
if (holeResult.handled) {
|
|
2313
|
+
this.resetClickSequence();
|
|
2314
|
+
return;
|
|
2315
|
+
}
|
|
2316
|
+
}
|
|
2317
|
+
const editAction = this.getAddFeatureOrBooleanPolygonAction({
|
|
2318
|
+
type: "Polygon",
|
|
2319
|
+
coordinates: [[...this.getClickSequence(), this.getClickSequence()[0]]]
|
|
2320
|
+
}, props);
|
|
2321
|
+
if (editAction)
|
|
2322
|
+
props.onEdit(editAction);
|
|
2323
|
+
this.resetClickSequence();
|
|
2324
|
+
return;
|
|
2325
|
+
}
|
|
2326
|
+
tryAddHoleToExistingPolygon(newPolygon, polygon2, props) {
|
|
2327
|
+
for (const [featureIndex, feature] of props.data.features.entries()) {
|
|
2328
|
+
if (feature.geometry.type === "Polygon") {
|
|
2329
|
+
const result = this.validateAndCreateHole(feature, featureIndex, newPolygon, polygon2, props);
|
|
2330
|
+
if (result.handled) {
|
|
2331
|
+
return result;
|
|
2332
|
+
}
|
|
2333
|
+
}
|
|
2334
|
+
}
|
|
2335
|
+
return { handled: false };
|
|
2336
|
+
}
|
|
2337
|
+
validateAndCreateHole(feature, featureIndex, newPolygon, polygon2, props) {
|
|
2338
|
+
const outer = (0, import_helpers9.polygon)(feature.geometry.coordinates);
|
|
2339
|
+
for (let i = 1; i < feature.geometry.coordinates.length; i++) {
|
|
2340
|
+
const hole = (0, import_helpers9.polygon)([feature.geometry.coordinates[i]]);
|
|
2341
|
+
const intersection = (0, import_line_intersect2.default)(hole, newPolygon);
|
|
2342
|
+
if (intersection.features.length > 0) {
|
|
2343
|
+
props.onEdit({
|
|
2344
|
+
updatedData: props.data,
|
|
2345
|
+
editType: "invalidHole",
|
|
2346
|
+
editContext: { reason: "intersects-existing-hole" }
|
|
2347
|
+
});
|
|
2348
|
+
return { handled: true };
|
|
2349
|
+
}
|
|
2350
|
+
if ((0, import_boolean_within.default)(hole, newPolygon) || (0, import_boolean_within.default)(newPolygon, hole)) {
|
|
2351
|
+
props.onEdit({
|
|
2352
|
+
updatedData: props.data,
|
|
2353
|
+
editType: "invalidHole",
|
|
2354
|
+
editContext: { reason: "contains-or-contained-by-existing-hole" }
|
|
2355
|
+
});
|
|
2356
|
+
return { handled: true };
|
|
2357
|
+
}
|
|
2358
|
+
}
|
|
2359
|
+
const intersectionWithOuter = (0, import_line_intersect2.default)(outer, newPolygon);
|
|
2360
|
+
if (intersectionWithOuter.features.length > 0) {
|
|
2361
|
+
props.onEdit({
|
|
2362
|
+
updatedData: props.data,
|
|
2363
|
+
editType: "invalidPolygon",
|
|
2364
|
+
editContext: { reason: "intersects-existing-polygon" }
|
|
2365
|
+
});
|
|
2366
|
+
return { handled: true };
|
|
2367
|
+
}
|
|
2368
|
+
if ((0, import_boolean_within.default)(outer, newPolygon)) {
|
|
2369
|
+
props.onEdit({
|
|
2370
|
+
updatedData: props.data,
|
|
2371
|
+
editType: "invalidPolygon",
|
|
2372
|
+
editContext: { reason: "contains-existing-polygon" }
|
|
2373
|
+
});
|
|
2374
|
+
return { handled: true };
|
|
2375
|
+
}
|
|
2376
|
+
if ((0, import_boolean_within.default)(newPolygon, outer)) {
|
|
2377
|
+
const updatedData = new ImmutableFeatureCollection(props.data).replaceGeometry(featureIndex, {
|
|
2378
|
+
...feature.geometry,
|
|
2379
|
+
coordinates: [...feature.geometry.coordinates, polygon2]
|
|
2380
|
+
}).getObject();
|
|
2381
|
+
props.onEdit({
|
|
2382
|
+
updatedData,
|
|
2383
|
+
editType: "addHole",
|
|
2384
|
+
editContext: { hole: newPolygon.geometry }
|
|
2385
|
+
});
|
|
2386
|
+
return { handled: true };
|
|
2387
|
+
}
|
|
2388
|
+
return { handled: false };
|
|
2389
|
+
}
|
|
3067
2390
|
};
|
|
2391
|
+
function isNearFirstPoint(click, first, threshold = 1e-4) {
|
|
2392
|
+
const dx = click[0] - first[0];
|
|
2393
|
+
const dy = click[1] - first[1];
|
|
2394
|
+
return dx * dx + dy * dy < threshold * threshold;
|
|
2395
|
+
}
|
|
2396
|
+
function canAddHoleToPolygon(props) {
|
|
2397
|
+
var _a;
|
|
2398
|
+
return ((_a = props.modeConfig) == null ? void 0 : _a.allowHoles) ?? false;
|
|
2399
|
+
}
|
|
2400
|
+
function canPolygonOverlap(props) {
|
|
2401
|
+
var _a;
|
|
2402
|
+
return ((_a = props.modeConfig) == null ? void 0 : _a.allowSelfIntersection) ?? false;
|
|
2403
|
+
}
|
|
3068
2404
|
|
|
3069
2405
|
// dist/edit-modes/draw-rectangle-mode.js
|
|
3070
|
-
var
|
|
2406
|
+
var import_bbox_polygon3 = __toESM(require("@turf/bbox-polygon"), 1);
|
|
3071
2407
|
|
|
3072
2408
|
// dist/edit-modes/two-click-polygon-mode.js
|
|
3073
2409
|
var import_lodash = __toESM(require("lodash.omit"), 1);
|
|
@@ -3124,15 +2460,15 @@ var TwoClickPolygonMode = class extends GeoJsonEditMode {
|
|
|
3124
2460
|
}
|
|
3125
2461
|
const corner1 = clickSequence[0];
|
|
3126
2462
|
const corner2 = lastPointerMoveEvent.mapCoords;
|
|
3127
|
-
const
|
|
3128
|
-
if (
|
|
2463
|
+
const polygon2 = this.getTwoClickPolygon(corner1, corner2, modeConfig);
|
|
2464
|
+
if (polygon2) {
|
|
3129
2465
|
guides.features.push({
|
|
3130
2466
|
type: "Feature",
|
|
3131
2467
|
properties: {
|
|
3132
|
-
...
|
|
2468
|
+
...polygon2.properties,
|
|
3133
2469
|
guideType: "tentative"
|
|
3134
2470
|
},
|
|
3135
|
-
geometry:
|
|
2471
|
+
geometry: polygon2.geometry
|
|
3136
2472
|
});
|
|
3137
2473
|
}
|
|
3138
2474
|
return guides;
|
|
@@ -3159,7 +2495,7 @@ var TwoClickPolygonMode = class extends GeoJsonEditMode {
|
|
|
3159
2495
|
// dist/edit-modes/draw-rectangle-mode.js
|
|
3160
2496
|
var DrawRectangleMode = class extends TwoClickPolygonMode {
|
|
3161
2497
|
getTwoClickPolygon(coord1, coord2, modeConfig) {
|
|
3162
|
-
const rectangle = (0,
|
|
2498
|
+
const rectangle = (0, import_bbox_polygon3.default)([coord1[0], coord1[1], coord2[0], coord2[1]]);
|
|
3163
2499
|
rectangle.properties = rectangle.properties || {};
|
|
3164
2500
|
rectangle.properties.shape = "Rectangle";
|
|
3165
2501
|
return rectangle;
|
|
@@ -3167,22 +2503,22 @@ var DrawRectangleMode = class extends TwoClickPolygonMode {
|
|
|
3167
2503
|
};
|
|
3168
2504
|
|
|
3169
2505
|
// dist/edit-modes/draw-square-mode.js
|
|
3170
|
-
var
|
|
3171
|
-
var
|
|
2506
|
+
var import_bbox_polygon4 = __toESM(require("@turf/bbox-polygon"), 1);
|
|
2507
|
+
var import_distance6 = __toESM(require("@turf/distance"), 1);
|
|
3172
2508
|
var import_along = __toESM(require("@turf/along"), 1);
|
|
3173
2509
|
var import_helpers10 = require("@turf/helpers");
|
|
3174
2510
|
var DrawSquareMode = class extends TwoClickPolygonMode {
|
|
3175
2511
|
getTwoClickPolygon(coord1, coord2, modeConfig) {
|
|
3176
2512
|
const coord3 = [coord2[0], coord1[1]];
|
|
3177
2513
|
const coord4 = [coord1[0], coord2[1]];
|
|
3178
|
-
const distance1 = (0,
|
|
3179
|
-
const distance22 = (0,
|
|
2514
|
+
const distance1 = (0, import_distance6.default)((0, import_helpers10.point)(coord3), (0, import_helpers10.point)(coord1));
|
|
2515
|
+
const distance22 = (0, import_distance6.default)((0, import_helpers10.point)(coord4), (0, import_helpers10.point)(coord1));
|
|
3180
2516
|
const shortestDistance = distance1 <= distance22 ? distance1 : distance22;
|
|
3181
2517
|
const closestPoint = distance1 <= distance22 ? coord3 : coord4;
|
|
3182
2518
|
const line = (0, import_helpers10.lineString)([closestPoint, coord2]);
|
|
3183
2519
|
const newPoint = (0, import_along.default)(line, shortestDistance);
|
|
3184
2520
|
const corner = newPoint.geometry.coordinates;
|
|
3185
|
-
const square = (0,
|
|
2521
|
+
const square = (0, import_bbox_polygon4.default)([coord1[0], coord1[1], corner[0], corner[1]]);
|
|
3186
2522
|
square.properties = square.properties || {};
|
|
3187
2523
|
square.properties.shape = "Square";
|
|
3188
2524
|
return square;
|
|
@@ -3190,12 +2526,12 @@ var DrawSquareMode = class extends TwoClickPolygonMode {
|
|
|
3190
2526
|
};
|
|
3191
2527
|
|
|
3192
2528
|
// dist/edit-modes/draw-rectangle-from-center-mode.js
|
|
3193
|
-
var
|
|
2529
|
+
var import_bbox_polygon5 = __toESM(require("@turf/bbox-polygon"), 1);
|
|
3194
2530
|
var DrawRectangleFromCenterMode = class extends TwoClickPolygonMode {
|
|
3195
2531
|
getTwoClickPolygon(coord1, coord2, modeConfig) {
|
|
3196
2532
|
const longitude = coord1[0] > coord2[0] ? coord1[0] + Math.abs(coord1[0] - coord2[0]) : coord1[0] - Math.abs(coord1[0] - coord2[0]);
|
|
3197
2533
|
const latitude = coord1[1] > coord2[1] ? coord1[1] + Math.abs(coord1[1] - coord2[1]) : coord1[1] - Math.abs(coord1[1] - coord2[1]);
|
|
3198
|
-
const rectangle = (0,
|
|
2534
|
+
const rectangle = (0, import_bbox_polygon5.default)([longitude, latitude, coord2[0], coord2[1]]);
|
|
3199
2535
|
rectangle.properties = rectangle.properties || {};
|
|
3200
2536
|
rectangle.properties.shape = "Rectangle";
|
|
3201
2537
|
return rectangle;
|
|
@@ -3203,16 +2539,16 @@ var DrawRectangleFromCenterMode = class extends TwoClickPolygonMode {
|
|
|
3203
2539
|
};
|
|
3204
2540
|
|
|
3205
2541
|
// dist/edit-modes/draw-square-from-center-mode.js
|
|
3206
|
-
var
|
|
3207
|
-
var
|
|
2542
|
+
var import_bbox_polygon6 = __toESM(require("@turf/bbox-polygon"), 1);
|
|
2543
|
+
var import_distance7 = __toESM(require("@turf/distance"), 1);
|
|
3208
2544
|
var import_along2 = __toESM(require("@turf/along"), 1);
|
|
3209
2545
|
var import_helpers11 = require("@turf/helpers");
|
|
3210
2546
|
var DrawSquareFromCenterMode = class extends TwoClickPolygonMode {
|
|
3211
2547
|
getTwoClickPolygon(coord1, coord2, modeConfig) {
|
|
3212
2548
|
const coord3 = [coord2[0], coord1[1]];
|
|
3213
2549
|
const coord4 = [coord1[0], coord2[1]];
|
|
3214
|
-
const distance1 = (0,
|
|
3215
|
-
const distance22 = (0,
|
|
2550
|
+
const distance1 = (0, import_distance7.default)((0, import_helpers11.point)(coord3), (0, import_helpers11.point)(coord1));
|
|
2551
|
+
const distance22 = (0, import_distance7.default)((0, import_helpers11.point)(coord4), (0, import_helpers11.point)(coord1));
|
|
3216
2552
|
const shortestDistance = distance1 <= distance22 ? distance1 : distance22;
|
|
3217
2553
|
const closestPoint = distance1 <= distance22 ? coord3 : coord4;
|
|
3218
2554
|
const line = (0, import_helpers11.lineString)([closestPoint, coord2]);
|
|
@@ -3220,7 +2556,7 @@ var DrawSquareFromCenterMode = class extends TwoClickPolygonMode {
|
|
|
3220
2556
|
const corner = newPoint.geometry.coordinates;
|
|
3221
2557
|
const longitude = coord1[0] > corner[0] ? coord1[0] + Math.abs(coord1[0] - corner[0]) : coord1[0] - Math.abs(coord1[0] - corner[0]);
|
|
3222
2558
|
const latitude = coord1[1] > corner[1] ? coord1[1] + Math.abs(coord1[1] - corner[1]) : coord1[1] - Math.abs(coord1[1] - corner[1]);
|
|
3223
|
-
const square = (0,
|
|
2559
|
+
const square = (0, import_bbox_polygon6.default)([longitude, latitude, corner[0], corner[1]]);
|
|
3224
2560
|
square.properties = square.properties || {};
|
|
3225
2561
|
square.properties.shape = "Square";
|
|
3226
2562
|
return square;
|
|
@@ -3229,7 +2565,7 @@ var DrawSquareFromCenterMode = class extends TwoClickPolygonMode {
|
|
|
3229
2565
|
|
|
3230
2566
|
// dist/edit-modes/draw-circle-from-center-mode.js
|
|
3231
2567
|
var import_circle = __toESM(require("@turf/circle"), 1);
|
|
3232
|
-
var
|
|
2568
|
+
var import_distance8 = __toESM(require("@turf/distance"), 1);
|
|
3233
2569
|
var import_area = __toESM(require("@turf/area"), 1);
|
|
3234
2570
|
var DrawCircleFromCenterMode = class extends TwoClickPolygonMode {
|
|
3235
2571
|
radius = null;
|
|
@@ -3243,7 +2579,7 @@ var DrawCircleFromCenterMode = class extends TwoClickPolygonMode {
|
|
|
3243
2579
|
console.warn("Minimum steps to draw a circle is 4 ");
|
|
3244
2580
|
options.steps = 4;
|
|
3245
2581
|
}
|
|
3246
|
-
this.radius = Math.max((0,
|
|
2582
|
+
this.radius = Math.max((0, import_distance8.default)(coord1, coord2), 1e-3);
|
|
3247
2583
|
const geometry = (0, import_circle.default)(coord1, this.radius, options);
|
|
3248
2584
|
geometry.properties = geometry.properties || {};
|
|
3249
2585
|
geometry.properties.shape = "Circle";
|
|
@@ -3297,7 +2633,7 @@ var DrawCircleFromCenterMode = class extends TwoClickPolygonMode {
|
|
|
3297
2633
|
|
|
3298
2634
|
// dist/edit-modes/draw-circle-by-diameter-mode.js
|
|
3299
2635
|
var import_circle2 = __toESM(require("@turf/circle"), 1);
|
|
3300
|
-
var
|
|
2636
|
+
var import_distance9 = __toESM(require("@turf/distance"), 1);
|
|
3301
2637
|
var import_area2 = __toESM(require("@turf/area"), 1);
|
|
3302
2638
|
var DrawCircleByDiameterMode = class extends TwoClickPolygonMode {
|
|
3303
2639
|
radius = null;
|
|
@@ -3312,8 +2648,8 @@ var DrawCircleByDiameterMode = class extends TwoClickPolygonMode {
|
|
|
3312
2648
|
options.steps = 4;
|
|
3313
2649
|
}
|
|
3314
2650
|
const centerCoordinates = getIntermediatePosition(coord1, coord2);
|
|
3315
|
-
this.radius = Math.max((0,
|
|
3316
|
-
this.diameter = Math.max((0,
|
|
2651
|
+
this.radius = Math.max((0, import_distance9.default)(coord1, centerCoordinates), 1e-3);
|
|
2652
|
+
this.diameter = Math.max((0, import_distance9.default)(coord1, coord2), 1e-3);
|
|
3317
2653
|
this.position = centerCoordinates;
|
|
3318
2654
|
const geometry = (0, import_circle2.default)(centerCoordinates, this.radius, options);
|
|
3319
2655
|
geometry.properties = geometry.properties || {};
|
|
@@ -3371,8 +2707,8 @@ var DrawCircleByDiameterMode = class extends TwoClickPolygonMode {
|
|
|
3371
2707
|
};
|
|
3372
2708
|
|
|
3373
2709
|
// dist/edit-modes/draw-ellipse-by-bounding-box-mode.js
|
|
3374
|
-
var
|
|
3375
|
-
var
|
|
2710
|
+
var import_bbox_polygon7 = __toESM(require("@turf/bbox-polygon"), 1);
|
|
2711
|
+
var import_distance10 = __toESM(require("@turf/distance"), 1);
|
|
3376
2712
|
var import_ellipse = __toESM(require("@turf/ellipse"), 1);
|
|
3377
2713
|
var import_helpers12 = require("@turf/helpers");
|
|
3378
2714
|
var DrawEllipseByBoundingBoxMode = class extends TwoClickPolygonMode {
|
|
@@ -3381,11 +2717,11 @@ var DrawEllipseByBoundingBoxMode = class extends TwoClickPolygonMode {
|
|
|
3381
2717
|
const minY = Math.min(coord1[1], coord2[1]);
|
|
3382
2718
|
const maxX = Math.max(coord1[0], coord2[0]);
|
|
3383
2719
|
const maxY = Math.max(coord1[1], coord2[1]);
|
|
3384
|
-
const polygonPoints = (0,
|
|
2720
|
+
const polygonPoints = (0, import_bbox_polygon7.default)([minX, minY, maxX, maxY]).geometry.coordinates[0];
|
|
3385
2721
|
const centerCoordinates = getIntermediatePosition(coord1, coord2);
|
|
3386
|
-
const xSemiAxis = Math.max((0,
|
|
3387
|
-
const ySemiAxis = Math.max((0,
|
|
3388
|
-
const geometry = (0, import_ellipse.default)(centerCoordinates, xSemiAxis, ySemiAxis);
|
|
2722
|
+
const xSemiAxis = Math.max((0, import_distance10.default)((0, import_helpers12.point)(polygonPoints[0]), (0, import_helpers12.point)(polygonPoints[1])), 1e-3);
|
|
2723
|
+
const ySemiAxis = Math.max((0, import_distance10.default)((0, import_helpers12.point)(polygonPoints[0]), (0, import_helpers12.point)(polygonPoints[3])), 1e-3);
|
|
2724
|
+
const geometry = (0, import_ellipse.default)(centerCoordinates, xSemiAxis, ySemiAxis, {});
|
|
3389
2725
|
geometry.properties = geometry.properties || {};
|
|
3390
2726
|
geometry.properties.editProperties = geometry.properties.editProperties || {};
|
|
3391
2727
|
geometry.properties.editProperties.shape = "Ellipse";
|
|
@@ -3435,15 +2771,15 @@ var ThreeClickPolygonMode = class extends GeoJsonEditMode {
|
|
|
3435
2771
|
}
|
|
3436
2772
|
});
|
|
3437
2773
|
} else {
|
|
3438
|
-
const
|
|
3439
|
-
if (
|
|
2774
|
+
const polygon2 = this.getThreeClickPolygon(clickSequence[0], clickSequence[1], hoveredCoord, modeConfig);
|
|
2775
|
+
if (polygon2) {
|
|
3440
2776
|
guides.features.push({
|
|
3441
2777
|
type: "Feature",
|
|
3442
2778
|
properties: {
|
|
3443
|
-
...
|
|
2779
|
+
...polygon2.properties,
|
|
3444
2780
|
guideType: "tentative"
|
|
3445
2781
|
},
|
|
3446
|
-
geometry:
|
|
2782
|
+
geometry: polygon2.geometry
|
|
3447
2783
|
});
|
|
3448
2784
|
}
|
|
3449
2785
|
}
|
|
@@ -3497,15 +2833,15 @@ var DrawRectangleUsingThreePointsMode = class extends ThreeClickPolygonMode {
|
|
|
3497
2833
|
};
|
|
3498
2834
|
|
|
3499
2835
|
// dist/edit-modes/draw-ellipse-using-three-points-mode.js
|
|
3500
|
-
var
|
|
2836
|
+
var import_distance11 = __toESM(require("@turf/distance"), 1);
|
|
3501
2837
|
var import_ellipse2 = __toESM(require("@turf/ellipse"), 1);
|
|
3502
2838
|
var import_bearing8 = __toESM(require("@turf/bearing"), 1);
|
|
3503
2839
|
var import_helpers13 = require("@turf/helpers");
|
|
3504
2840
|
var DrawEllipseUsingThreePointsMode = class extends ThreeClickPolygonMode {
|
|
3505
2841
|
getThreeClickPolygon(coord1, coord2, coord3, modeConfig) {
|
|
3506
2842
|
const centerCoordinates = getIntermediatePosition(coord1, coord2);
|
|
3507
|
-
const xSemiAxis = Math.max((0,
|
|
3508
|
-
const ySemiAxis = Math.max((0,
|
|
2843
|
+
const xSemiAxis = Math.max((0, import_distance11.default)(centerCoordinates, (0, import_helpers13.point)(coord3)), 1e-3);
|
|
2844
|
+
const ySemiAxis = Math.max((0, import_distance11.default)(coord1, coord2), 1e-3) / 2;
|
|
3509
2845
|
const options = { angle: (0, import_bearing8.default)(coord1, coord2) };
|
|
3510
2846
|
const geometry = (0, import_ellipse2.default)(centerCoordinates, xSemiAxis, ySemiAxis, options);
|
|
3511
2847
|
geometry.properties = geometry.properties || {};
|
|
@@ -3523,7 +2859,7 @@ var DrawEllipseUsingThreePointsMode = class extends ThreeClickPolygonMode {
|
|
|
3523
2859
|
var import_destination4 = __toESM(require("@turf/destination"), 1);
|
|
3524
2860
|
var import_bearing9 = __toESM(require("@turf/bearing"), 1);
|
|
3525
2861
|
var import_line_intersect3 = __toESM(require("@turf/line-intersect"), 1);
|
|
3526
|
-
var
|
|
2862
|
+
var import_distance12 = __toESM(require("@turf/distance"), 1);
|
|
3527
2863
|
var import_helpers14 = require("@turf/helpers");
|
|
3528
2864
|
var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
|
|
3529
2865
|
createTentativeFeature(props) {
|
|
@@ -3594,13 +2930,13 @@ var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
|
|
|
3594
2930
|
const lineString3 = tentativeFeature.geometry;
|
|
3595
2931
|
clickSequence[clickSequence.length - 1] = lineString3.coordinates[lineString3.coordinates.length - 1];
|
|
3596
2932
|
} else if (clickSequence.length > 3 && tentativeFeature.geometry.type === "Polygon") {
|
|
3597
|
-
const
|
|
3598
|
-
clickSequence[clickSequence.length - 1] =
|
|
2933
|
+
const polygon2 = tentativeFeature.geometry;
|
|
2934
|
+
clickSequence[clickSequence.length - 1] = polygon2.coordinates[0][polygon2.coordinates[0].length - 2];
|
|
3599
2935
|
const clickedEditHandle = getPickedEditHandle(picks);
|
|
3600
|
-
if (clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[1] === 0 || clickedEditHandle.properties.positionIndexes[1] ===
|
|
2936
|
+
if (clickedEditHandle && Array.isArray(clickedEditHandle.properties.positionIndexes) && (clickedEditHandle.properties.positionIndexes[1] === 0 || clickedEditHandle.properties.positionIndexes[1] === polygon2.coordinates[0].length - 3)) {
|
|
3601
2937
|
const polygonToAdd = {
|
|
3602
2938
|
type: "Polygon",
|
|
3603
|
-
coordinates: this.finalizedCoordinates([...
|
|
2939
|
+
coordinates: this.finalizedCoordinates([...polygon2.coordinates[0]])
|
|
3604
2940
|
};
|
|
3605
2941
|
this.resetClickSequence();
|
|
3606
2942
|
const editAction = this.getAddFeatureOrBooleanPolygonAction(polygonToAdd, props);
|
|
@@ -3653,7 +2989,7 @@ var Draw90DegreePolygonMode = class extends GeoJsonEditMode {
|
|
|
3653
2989
|
const newAngle2 = angle2 + factor * 90;
|
|
3654
2990
|
angles.second.push(newAngle2 > 180 ? newAngle2 - 360 : newAngle2);
|
|
3655
2991
|
});
|
|
3656
|
-
const distance7 = (0,
|
|
2992
|
+
const distance7 = (0, import_distance12.default)((0, import_helpers14.point)(p1), (0, import_helpers14.point)(p3));
|
|
3657
2993
|
[0, 1, 2].forEach((indexFirst) => {
|
|
3658
2994
|
const line1 = (0, import_helpers14.lineString)([
|
|
3659
2995
|
p1,
|
|
@@ -3983,12 +3319,12 @@ var DeleteMode = class extends GeoJsonEditMode {
|
|
|
3983
3319
|
};
|
|
3984
3320
|
|
|
3985
3321
|
// dist/constants.js
|
|
3986
|
-
var
|
|
3322
|
+
var PROJECTED_PIXEL_SIZE_MULTIPLIER = 2 / 3;
|
|
3987
3323
|
|
|
3988
3324
|
// dist/editable-layers/editable-layer.js
|
|
3989
|
-
var
|
|
3325
|
+
var import_core = require("@deck.gl/core");
|
|
3990
3326
|
var EVENT_TYPES = ["click", "pointermove", "panstart", "panmove", "panend", "keyup", "dblclick"];
|
|
3991
|
-
var EditableLayer = class extends
|
|
3327
|
+
var EditableLayer = class extends import_core.CompositeLayer {
|
|
3992
3328
|
state = void 0;
|
|
3993
3329
|
// Overridable interaction event handlers
|
|
3994
3330
|
onLayerClick(event) {
|
|
@@ -4181,7 +3517,7 @@ var EditableLayer = class extends import_core3.CompositeLayer {
|
|
|
4181
3517
|
__publicField(EditableLayer, "layerName", "EditableLayer");
|
|
4182
3518
|
|
|
4183
3519
|
// dist/editable-layers/editable-path-layer.js
|
|
4184
|
-
var
|
|
3520
|
+
var import_layers = require("@deck.gl/layers");
|
|
4185
3521
|
var uniformBlock = `uniform pickingLineWidthUniforms {
|
|
4186
3522
|
float extraPixels;
|
|
4187
3523
|
} pickingLineWidth;
|
|
@@ -4195,10 +3531,10 @@ var pickingUniforms = {
|
|
|
4195
3531
|
}
|
|
4196
3532
|
};
|
|
4197
3533
|
var defaultProps = {
|
|
4198
|
-
...
|
|
3534
|
+
...import_layers.PathLayer.defaultProps,
|
|
4199
3535
|
pickingLineWidthExtraPixels: { type: "number", min: 0, value: Number.MAX_SAFE_INTEGER }
|
|
4200
3536
|
};
|
|
4201
|
-
var EditablePathLayer = class extends
|
|
3537
|
+
var EditablePathLayer = class extends import_layers.PathLayer {
|
|
4202
3538
|
getShaders() {
|
|
4203
3539
|
const shaders = super.getShaders();
|
|
4204
3540
|
shaders.vs = insertBefore(shaders.vs, "vec3 width;", `
|
|
@@ -4236,7 +3572,7 @@ var DEFAULT_EDITING_POINT_OUTLINE_COLOR = [255, 255, 255, 255];
|
|
|
4236
3572
|
var DEFAULT_EDITING_EXISTING_POINT_RADIUS = 5;
|
|
4237
3573
|
var DEFAULT_EDITING_INTERMEDIATE_POINT_RADIUS = 3;
|
|
4238
3574
|
var DEFAULT_EDITING_SNAP_POINT_RADIUS = 7;
|
|
4239
|
-
var DEFAULT_TOOLTIP_FONT_SIZE = 32 *
|
|
3575
|
+
var DEFAULT_TOOLTIP_FONT_SIZE = 32 * PROJECTED_PIXEL_SIZE_MULTIPLIER;
|
|
4240
3576
|
var DEFAULT_EDIT_MODE = DrawPolygonMode;
|
|
4241
3577
|
function guideAccessor(accessor) {
|
|
4242
3578
|
if (!accessor || typeof accessor !== "function") {
|
|
@@ -4288,7 +3624,7 @@ var defaultProps2 = {
|
|
|
4288
3624
|
fp64: false,
|
|
4289
3625
|
filled: true,
|
|
4290
3626
|
stroked: true,
|
|
4291
|
-
lineWidthScale:
|
|
3627
|
+
lineWidthScale: PROJECTED_PIXEL_SIZE_MULTIPLIER,
|
|
4292
3628
|
lineWidthMinPixels: 1,
|
|
4293
3629
|
lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,
|
|
4294
3630
|
pickingLineWidthExtraPixels: 0,
|
|
@@ -4403,13 +3739,13 @@ var EditableGeoJsonLayer = class extends EditableLayer {
|
|
|
4403
3739
|
}
|
|
4404
3740
|
},
|
|
4405
3741
|
updateTriggers: {
|
|
4406
|
-
getLineColor: [this.props.selectedFeatureIndexes, this.props.mode],
|
|
4407
|
-
getFillColor: [this.props.selectedFeatureIndexes, this.props.mode],
|
|
4408
|
-
getPointRadius: [this.props.selectedFeatureIndexes, this.props.mode],
|
|
4409
|
-
getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode]
|
|
3742
|
+
getLineColor: [this.props.updateTriggers.getLineColor, this.props.selectedFeatureIndexes, this.props.mode],
|
|
3743
|
+
getFillColor: [this.props.updateTriggers.getFillColor, this.props.selectedFeatureIndexes, this.props.mode],
|
|
3744
|
+
getPointRadius: [this.props.updateTriggers.getPointRadius, this.props.selectedFeatureIndexes, this.props.mode],
|
|
3745
|
+
getLineWidth: [this.props.updateTriggers.getLineWidth, this.props.selectedFeatureIndexes, this.props.mode]
|
|
4410
3746
|
}
|
|
4411
3747
|
});
|
|
4412
|
-
let layers = [new
|
|
3748
|
+
let layers = [new import_layers2.GeoJsonLayer(subLayerProps)];
|
|
4413
3749
|
layers = layers.concat(this.createGuidesLayers(), this.createTooltipsLayers());
|
|
4414
3750
|
return layers;
|
|
4415
3751
|
}
|
|
@@ -4523,7 +3859,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
|
|
|
4523
3859
|
};
|
|
4524
3860
|
if (this.props.editHandleType === "icon") {
|
|
4525
3861
|
subLayerProps["points-icon"] = {
|
|
4526
|
-
type:
|
|
3862
|
+
type: import_layers2.IconLayer,
|
|
4527
3863
|
iconAtlas: this.props.editHandleIconAtlas,
|
|
4528
3864
|
iconMapping: this.props.editHandleIconMapping,
|
|
4529
3865
|
sizeUnits: this.props.editHandleIconSizeUnits,
|
|
@@ -4536,7 +3872,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
|
|
|
4536
3872
|
};
|
|
4537
3873
|
} else {
|
|
4538
3874
|
subLayerProps["points-circle"] = {
|
|
4539
|
-
type:
|
|
3875
|
+
type: import_layers2.ScatterplotLayer,
|
|
4540
3876
|
radiusScale: this.props.editHandlePointRadiusScale,
|
|
4541
3877
|
stroked: this.props.editHandlePointOutline,
|
|
4542
3878
|
getLineWidth: this.props.editHandlePointStrokeWidth,
|
|
@@ -4549,7 +3885,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
|
|
|
4549
3885
|
billboard: this.props.billboard
|
|
4550
3886
|
};
|
|
4551
3887
|
}
|
|
4552
|
-
const layer = new
|
|
3888
|
+
const layer = new import_layers2.GeoJsonLayer(this.getSubLayerProps({
|
|
4553
3889
|
id: "guides",
|
|
4554
3890
|
data: guides,
|
|
4555
3891
|
fp64: this.props.fp64,
|
|
@@ -4572,7 +3908,7 @@ var EditableGeoJsonLayer = class extends EditableLayer {
|
|
|
4572
3908
|
createTooltipsLayers() {
|
|
4573
3909
|
const mode = this.getActiveMode();
|
|
4574
3910
|
const tooltips = mode.getTooltips(this.getModeProps(this.props));
|
|
4575
|
-
const layer = new
|
|
3911
|
+
const layer = new import_layers2.TextLayer({
|
|
4576
3912
|
getSize: DEFAULT_TOOLTIP_FONT_SIZE,
|
|
4577
3913
|
...this.getSubLayerProps({
|
|
4578
3914
|
id: "tooltips",
|
|
@@ -4638,7 +3974,7 @@ var defaultProps3 = {
|
|
|
4638
3974
|
selectedIndexes: [],
|
|
4639
3975
|
filled: false,
|
|
4640
3976
|
stroked: true,
|
|
4641
|
-
lineWidthScale:
|
|
3977
|
+
lineWidthScale: PROJECTED_PIXEL_SIZE_MULTIPLIER,
|
|
4642
3978
|
lineWidthMinPixels: 1,
|
|
4643
3979
|
lineWidthMaxPixels: Number.MAX_SAFE_INTEGER,
|
|
4644
3980
|
lineWidthUnits: "pixels",
|
|
@@ -4772,25 +4108,25 @@ __publicField(EditableH3ClusterLayer, "layerName", "EditableH3ClusterLayer");
|
|
|
4772
4108
|
__publicField(EditableH3ClusterLayer, "defaultProps", defaultProps3);
|
|
4773
4109
|
|
|
4774
4110
|
// dist/editable-layers/selection-layer.js
|
|
4775
|
-
var
|
|
4776
|
-
var
|
|
4111
|
+
var import_core2 = require("@deck.gl/core");
|
|
4112
|
+
var import_layers3 = require("@deck.gl/layers");
|
|
4777
4113
|
var import_helpers16 = require("@turf/helpers");
|
|
4778
|
-
var
|
|
4779
|
-
var
|
|
4780
|
-
var
|
|
4114
|
+
var import_buffer2 = __toESM(require("@turf/buffer"), 1);
|
|
4115
|
+
var import_difference3 = __toESM(require("@turf/difference"), 1);
|
|
4116
|
+
var SELECTION_TYPE = {
|
|
4781
4117
|
NONE: null,
|
|
4782
4118
|
RECTANGLE: "rectangle",
|
|
4783
4119
|
POLYGON: "polygon"
|
|
4784
4120
|
};
|
|
4785
4121
|
var MODE_MAP = {
|
|
4786
|
-
[
|
|
4787
|
-
[
|
|
4122
|
+
[SELECTION_TYPE.RECTANGLE]: DrawRectangleMode,
|
|
4123
|
+
[SELECTION_TYPE.POLYGON]: DrawPolygonMode
|
|
4788
4124
|
};
|
|
4789
4125
|
var MODE_CONFIG_MAP = {
|
|
4790
|
-
[
|
|
4126
|
+
[SELECTION_TYPE.RECTANGLE]: { dragToDraw: true }
|
|
4791
4127
|
};
|
|
4792
4128
|
var defaultProps4 = {
|
|
4793
|
-
selectionType:
|
|
4129
|
+
selectionType: SELECTION_TYPE.RECTANGLE,
|
|
4794
4130
|
layerIds: [],
|
|
4795
4131
|
onSelect: () => {
|
|
4796
4132
|
}
|
|
@@ -4799,7 +4135,7 @@ var EMPTY_DATA = {
|
|
|
4799
4135
|
type: "FeatureCollection",
|
|
4800
4136
|
features: []
|
|
4801
4137
|
};
|
|
4802
|
-
var
|
|
4138
|
+
var EXPANSION_KM = 50;
|
|
4803
4139
|
var LAYER_ID_GEOJSON = "selection-geojson";
|
|
4804
4140
|
var LAYER_ID_BLOCKER = "selection-blocker";
|
|
4805
4141
|
var PASS_THROUGH_PROPS = [
|
|
@@ -4824,7 +4160,7 @@ var PASS_THROUGH_PROPS = [
|
|
|
4824
4160
|
"getTentativeFillColor",
|
|
4825
4161
|
"getTentativeLineWidth"
|
|
4826
4162
|
];
|
|
4827
|
-
var SelectionLayer = class extends
|
|
4163
|
+
var SelectionLayer = class extends import_core2.CompositeLayer {
|
|
4828
4164
|
state = void 0;
|
|
4829
4165
|
_selectRectangleObjects(coordinates) {
|
|
4830
4166
|
const { layerIds, onSelect } = this.props;
|
|
@@ -4849,10 +4185,10 @@ var SelectionLayer = class extends import_core4.CompositeLayer {
|
|
|
4849
4185
|
const maxX = Math.max(...allX);
|
|
4850
4186
|
const maxY = Math.max(...allY);
|
|
4851
4187
|
const landPointsPoly = (0, import_helpers16.polygon)(coordinates);
|
|
4852
|
-
const bigBuffer = (0,
|
|
4188
|
+
const bigBuffer = (0, import_buffer2.default)(landPointsPoly, EXPANSION_KM);
|
|
4853
4189
|
let bigPolygon;
|
|
4854
4190
|
try {
|
|
4855
|
-
bigPolygon = (0,
|
|
4191
|
+
bigPolygon = (0, import_difference3.default)((0, import_helpers16.featureCollection)([bigBuffer, landPointsPoly]));
|
|
4856
4192
|
} catch (e) {
|
|
4857
4193
|
console.log("turfDifference() error", e);
|
|
4858
4194
|
return;
|
|
@@ -4896,9 +4232,9 @@ var SelectionLayer = class extends import_core4.CompositeLayer {
|
|
|
4896
4232
|
onEdit: ({ updatedData, editType }) => {
|
|
4897
4233
|
if (editType === "addFeature") {
|
|
4898
4234
|
const { coordinates } = updatedData.features[0].geometry;
|
|
4899
|
-
if (this.props.selectionType ===
|
|
4235
|
+
if (this.props.selectionType === SELECTION_TYPE.RECTANGLE) {
|
|
4900
4236
|
this._selectRectangleObjects(coordinates);
|
|
4901
|
-
} else if (this.props.selectionType ===
|
|
4237
|
+
} else if (this.props.selectionType === SELECTION_TYPE.POLYGON) {
|
|
4902
4238
|
this._selectPolygonObjects(coordinates);
|
|
4903
4239
|
}
|
|
4904
4240
|
}
|
|
@@ -4908,7 +4244,7 @@ var SelectionLayer = class extends import_core4.CompositeLayer {
|
|
|
4908
4244
|
];
|
|
4909
4245
|
if (pendingPolygonSelection) {
|
|
4910
4246
|
const { bigPolygon } = pendingPolygonSelection;
|
|
4911
|
-
layers.push(new
|
|
4247
|
+
layers.push(new import_layers3.PolygonLayer(this.getSubLayerProps({
|
|
4912
4248
|
id: LAYER_ID_BLOCKER,
|
|
4913
4249
|
pickable: true,
|
|
4914
4250
|
stroked: false,
|
|
@@ -4929,16 +4265,16 @@ __publicField(SelectionLayer, "layerName", "SelectionLayer");
|
|
|
4929
4265
|
__publicField(SelectionLayer, "defaultProps", defaultProps4);
|
|
4930
4266
|
|
|
4931
4267
|
// dist/editable-layers/elevated-edit-handle-layer.js
|
|
4932
|
-
var
|
|
4933
|
-
var
|
|
4268
|
+
var import_core3 = require("@deck.gl/core");
|
|
4269
|
+
var import_layers4 = require("@deck.gl/layers");
|
|
4934
4270
|
var defaultProps5 = {};
|
|
4935
|
-
var ElevatedEditHandleLayer = class extends
|
|
4271
|
+
var ElevatedEditHandleLayer = class extends import_core3.CompositeLayer {
|
|
4936
4272
|
renderLayers() {
|
|
4937
|
-
const handles = new
|
|
4273
|
+
const handles = new import_layers4.ScatterplotLayer(Object.assign({}, this.props, {
|
|
4938
4274
|
id: `${this.props.id}-ScatterplotLayer`,
|
|
4939
4275
|
data: this.props.data
|
|
4940
4276
|
}));
|
|
4941
|
-
const lines = new
|
|
4277
|
+
const lines = new import_layers4.LineLayer(Object.assign({}, this.props, {
|
|
4942
4278
|
id: `${this.props.id}-LineLayer`,
|
|
4943
4279
|
data: this.props.data,
|
|
4944
4280
|
pickable: false,
|
|
@@ -4956,7 +4292,7 @@ __publicField(ElevatedEditHandleLayer, "defaultProps", defaultProps5);
|
|
|
4956
4292
|
// dist/widgets/edit-mode-tray-widget.js
|
|
4957
4293
|
var import_jsx_runtime = require("preact/jsx-runtime");
|
|
4958
4294
|
var import_preact = require("preact");
|
|
4959
|
-
var
|
|
4295
|
+
var import_core4 = require("@deck.gl/core");
|
|
4960
4296
|
var ROOT_STYLE = {
|
|
4961
4297
|
position: "absolute",
|
|
4962
4298
|
display: "flex",
|
|
@@ -5000,7 +4336,7 @@ var BUTTON_LABEL_STYLE = {
|
|
|
5000
4336
|
marginTop: "2px",
|
|
5001
4337
|
lineHeight: "12px"
|
|
5002
4338
|
};
|
|
5003
|
-
var _EditModeTrayWidget = class extends
|
|
4339
|
+
var _EditModeTrayWidget = class extends import_core4.Widget {
|
|
5004
4340
|
placement = "top-left";
|
|
5005
4341
|
className = "deck-widget-edit-mode-tray";
|
|
5006
4342
|
layout = "vertical";
|
|
@@ -5171,11 +4507,54 @@ __publicField(EditModeTrayWidget, "defaultProps", {
|
|
|
5171
4507
|
className: ""
|
|
5172
4508
|
});
|
|
5173
4509
|
|
|
4510
|
+
// dist/editable-layers/junction-scatterplot-layer.js
|
|
4511
|
+
var import_core5 = require("@deck.gl/core");
|
|
4512
|
+
var import_layers5 = require("@deck.gl/layers");
|
|
4513
|
+
var JunctionScatterplotLayer = class extends import_core5.CompositeLayer {
|
|
4514
|
+
renderLayers() {
|
|
4515
|
+
const { id, getFillColor, getStrokeColor, getInnerRadius, updateTriggers } = this.props;
|
|
4516
|
+
return [
|
|
4517
|
+
// the full circles
|
|
4518
|
+
new import_layers5.ScatterplotLayer({
|
|
4519
|
+
...this.props,
|
|
4520
|
+
id: `${id}-full`,
|
|
4521
|
+
data: this.props.data,
|
|
4522
|
+
getLineColor: getStrokeColor,
|
|
4523
|
+
updateTriggers: {
|
|
4524
|
+
...updateTriggers,
|
|
4525
|
+
getStrokeColor: updateTriggers.getStrokeColor
|
|
4526
|
+
}
|
|
4527
|
+
}),
|
|
4528
|
+
// the inner part
|
|
4529
|
+
new import_layers5.ScatterplotLayer({
|
|
4530
|
+
...this.props,
|
|
4531
|
+
id: `${id}-inner`,
|
|
4532
|
+
data: this.props.data,
|
|
4533
|
+
getFillColor,
|
|
4534
|
+
getRadius: getInnerRadius,
|
|
4535
|
+
pickable: false,
|
|
4536
|
+
updateTriggers: {
|
|
4537
|
+
...updateTriggers,
|
|
4538
|
+
getFillColor: updateTriggers.getFillColor,
|
|
4539
|
+
getRadius: updateTriggers.getInnerRadius
|
|
4540
|
+
}
|
|
4541
|
+
})
|
|
4542
|
+
];
|
|
4543
|
+
}
|
|
4544
|
+
};
|
|
4545
|
+
__publicField(JunctionScatterplotLayer, "layerName", "JunctionScatterplotLayer");
|
|
4546
|
+
__publicField(JunctionScatterplotLayer, "defaultProps", {
|
|
4547
|
+
...import_layers5.ScatterplotLayer.defaultProps,
|
|
4548
|
+
getFillColor: (d) => [0, 0, 0, 255],
|
|
4549
|
+
getStrokeColor: (d) => [255, 255, 255, 255],
|
|
4550
|
+
getInnerRadius: (d) => 1
|
|
4551
|
+
});
|
|
4552
|
+
|
|
5174
4553
|
// dist/edit-modes/resize-circle-mode.js
|
|
5175
4554
|
var import_nearest_point_on_line2 = __toESM(require("@turf/nearest-point-on-line"), 1);
|
|
5176
4555
|
var import_helpers17 = require("@turf/helpers");
|
|
5177
4556
|
var import_circle3 = __toESM(require("@turf/circle"), 1);
|
|
5178
|
-
var
|
|
4557
|
+
var import_distance13 = __toESM(require("@turf/distance"), 1);
|
|
5179
4558
|
var import_center2 = __toESM(require("@turf/center"), 1);
|
|
5180
4559
|
var ResizeCircleMode = class extends GeoJsonEditMode {
|
|
5181
4560
|
_selectedEditHandle;
|
|
@@ -5195,12 +4574,7 @@ var ResizeCircleMode = class extends GeoJsonEditMode {
|
|
|
5195
4574
|
const referencePoint = (0, import_helpers17.point)(mapCoords2);
|
|
5196
4575
|
recursivelyTraverseNestedArrays2(featureAsPick.object.geometry.coordinates, [], (lineString3, prefix) => {
|
|
5197
4576
|
const lineStringFeature = (0, import_helpers17.lineString)(lineString3);
|
|
5198
|
-
const candidateIntermediatePoint = this.getNearestPoint(
|
|
5199
|
-
// @ts-expect-error turf types too wide
|
|
5200
|
-
lineStringFeature,
|
|
5201
|
-
referencePoint,
|
|
5202
|
-
props.modeConfig && props.modeConfig.viewport
|
|
5203
|
-
);
|
|
4577
|
+
const candidateIntermediatePoint = this.getNearestPoint(lineStringFeature, referencePoint, props.modeConfig && props.modeConfig.viewport);
|
|
5204
4578
|
if (!intermediatePoint || candidateIntermediatePoint.properties.dist < intermediatePoint.properties.dist) {
|
|
5205
4579
|
intermediatePoint = candidateIntermediatePoint;
|
|
5206
4580
|
positionIndexPrefix = prefix;
|
|
@@ -5248,7 +4622,7 @@ var ResizeCircleMode = class extends GeoJsonEditMode {
|
|
|
5248
4622
|
const feature = this.getSelectedFeature(props);
|
|
5249
4623
|
const center = (0, import_center2.default)(feature).geometry.coordinates;
|
|
5250
4624
|
const numberOfSteps = Object.entries(feature.geometry.coordinates[0]).length - 1;
|
|
5251
|
-
const radius = Math.max((0,
|
|
4625
|
+
const radius = Math.max((0, import_distance13.default)(center, event.mapCoords), 1e-3);
|
|
5252
4626
|
const { steps = numberOfSteps } = {};
|
|
5253
4627
|
const options = { steps };
|
|
5254
4628
|
const updatedFeature = (0, import_circle3.default)(center, radius, options);
|
|
@@ -5364,7 +4738,7 @@ var ExtendLineStringMode = class extends GeoJsonEditMode {
|
|
|
5364
4738
|
};
|
|
5365
4739
|
|
|
5366
4740
|
// dist/edit-modes/measure-distance-mode.js
|
|
5367
|
-
var
|
|
4741
|
+
var import_distance14 = __toESM(require("@turf/distance"), 1);
|
|
5368
4742
|
var import_midpoint = __toESM(require("@turf/midpoint"), 1);
|
|
5369
4743
|
var MeasureDistanceMode = class extends GeoJsonEditMode {
|
|
5370
4744
|
_isMeasuringSessionFinished = false;
|
|
@@ -5372,7 +4746,7 @@ var MeasureDistanceMode = class extends GeoJsonEditMode {
|
|
|
5372
4746
|
_currentDistance = 0;
|
|
5373
4747
|
_calculateDistanceForTooltip = ({ positionA, positionB, modeConfig }) => {
|
|
5374
4748
|
const { turfOptions, measurementCallback } = modeConfig || {};
|
|
5375
|
-
const distance7 = (0,
|
|
4749
|
+
const distance7 = (0, import_distance14.default)(positionA, positionB, turfOptions);
|
|
5376
4750
|
if (measurementCallback) {
|
|
5377
4751
|
measurementCallback(distance7);
|
|
5378
4752
|
}
|