@deck.gl-community/editable-layers 9.0.0-alpha.1 → 9.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +19 -0
- package/README.md +2 -81
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +4 -1
- package/dist/edit-modes/composite-mode.d.ts +4 -3
- package/dist/edit-modes/composite-mode.d.ts.map +1 -0
- package/dist/edit-modes/composite-mode.js +5 -2
- package/dist/edit-modes/draw-90degree-polygon-mode.d.ts +4 -3
- package/dist/edit-modes/draw-90degree-polygon-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-90degree-polygon-mode.js +30 -25
- package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts +4 -3
- package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-circle-by-diameter-mode.js +9 -6
- package/dist/edit-modes/draw-circle-from-center-mode.d.ts +4 -3
- package/dist/edit-modes/draw-circle-from-center-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-circle-from-center-mode.js +8 -5
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts +3 -2
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.js +5 -2
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts +3 -2
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-ellipse-using-three-points-mode.js +5 -2
- package/dist/edit-modes/draw-line-string-mode.d.ts +4 -3
- package/dist/edit-modes/draw-line-string-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-line-string-mode.js +21 -18
- package/dist/edit-modes/draw-point-mode.d.ts +4 -3
- package/dist/edit-modes/draw-point-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-point-mode.js +8 -5
- package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts +4 -3
- package/dist/edit-modes/draw-polygon-by-dragging-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-polygon-by-dragging-mode.js +12 -7
- package/dist/edit-modes/draw-polygon-mode.d.ts +4 -3
- package/dist/edit-modes/draw-polygon-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-polygon-mode.js +22 -18
- package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts +3 -2
- package/dist/edit-modes/draw-rectangle-from-center-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-rectangle-from-center-mode.js +4 -1
- package/dist/edit-modes/draw-rectangle-mode.d.ts +3 -2
- package/dist/edit-modes/draw-rectangle-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-rectangle-mode.js +4 -1
- package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts +3 -2
- package/dist/edit-modes/draw-rectangle-using-three-points-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-rectangle-using-three-points-mode.js +10 -7
- package/dist/edit-modes/draw-square-from-center-mode.d.ts +3 -2
- package/dist/edit-modes/draw-square-from-center-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-square-from-center-mode.js +4 -1
- package/dist/edit-modes/draw-square-mode.d.ts +3 -2
- package/dist/edit-modes/draw-square-mode.d.ts.map +1 -0
- package/dist/edit-modes/draw-square-mode.js +4 -1
- package/dist/edit-modes/duplicate-mode.d.ts +4 -3
- package/dist/edit-modes/duplicate-mode.d.ts.map +1 -0
- package/dist/edit-modes/duplicate-mode.js +4 -1
- package/dist/edit-modes/edit-mode.d.ts +2 -1
- package/dist/edit-modes/edit-mode.d.ts.map +1 -0
- package/dist/edit-modes/edit-mode.js +3 -1
- package/dist/edit-modes/elevation-mode.d.ts +5 -4
- package/dist/edit-modes/elevation-mode.d.ts.map +1 -0
- package/dist/edit-modes/elevation-mode.js +10 -7
- package/dist/edit-modes/extend-line-string-mode.d.ts +4 -3
- package/dist/edit-modes/extend-line-string-mode.d.ts.map +1 -0
- package/dist/edit-modes/extend-line-string-mode.js +11 -8
- package/dist/edit-modes/extrude-mode.d.ts +4 -3
- package/dist/edit-modes/extrude-mode.d.ts.map +1 -0
- package/dist/edit-modes/extrude-mode.js +12 -9
- package/dist/edit-modes/geojson-edit-mode.d.ts +4 -3
- package/dist/edit-modes/geojson-edit-mode.d.ts.map +1 -0
- package/dist/edit-modes/geojson-edit-mode.js +20 -17
- package/dist/edit-modes/immutable-feature-collection.d.ts +3 -1
- package/dist/edit-modes/immutable-feature-collection.d.ts.map +1 -0
- package/dist/edit-modes/immutable-feature-collection.js +25 -20
- package/dist/edit-modes/measure-angle-mode.d.ts +4 -3
- package/dist/edit-modes/measure-angle-mode.d.ts.map +1 -0
- package/dist/edit-modes/measure-angle-mode.js +9 -9
- package/dist/edit-modes/measure-area-mode.d.ts +4 -3
- package/dist/edit-modes/measure-area-mode.d.ts.map +1 -0
- package/dist/edit-modes/measure-area-mode.js +8 -6
- package/dist/edit-modes/measure-distance-mode.d.ts +4 -3
- package/dist/edit-modes/measure-distance-mode.d.ts.map +1 -0
- package/dist/edit-modes/measure-distance-mode.js +19 -16
- package/dist/edit-modes/modify-mode.d.ts +5 -4
- package/dist/edit-modes/modify-mode.d.ts.map +1 -0
- package/dist/edit-modes/modify-mode.js +19 -16
- package/dist/edit-modes/resize-circle-mode.d.ts +6 -5
- package/dist/edit-modes/resize-circle-mode.d.ts.map +1 -0
- package/dist/edit-modes/resize-circle-mode.js +6 -4
- package/dist/edit-modes/rotate-mode.d.ts +4 -3
- package/dist/edit-modes/rotate-mode.d.ts.map +1 -0
- package/dist/edit-modes/rotate-mode.js +11 -8
- package/dist/edit-modes/scale-mode.d.ts +4 -3
- package/dist/edit-modes/scale-mode.d.ts.map +1 -0
- package/dist/edit-modes/scale-mode.js +11 -8
- package/dist/edit-modes/snappable-mode.d.ts +4 -3
- package/dist/edit-modes/snappable-mode.d.ts.map +1 -0
- package/dist/edit-modes/snappable-mode.js +9 -6
- package/dist/edit-modes/split-polygon-mode.d.ts +4 -3
- package/dist/edit-modes/split-polygon-mode.d.ts.map +1 -0
- package/dist/edit-modes/split-polygon-mode.js +15 -12
- package/dist/edit-modes/three-click-polygon-mode.d.ts +4 -3
- package/dist/edit-modes/three-click-polygon-mode.d.ts.map +1 -0
- package/dist/edit-modes/three-click-polygon-mode.js +10 -7
- package/dist/edit-modes/transform-mode.d.ts +4 -3
- package/dist/edit-modes/transform-mode.d.ts.map +1 -0
- package/dist/edit-modes/transform-mode.js +8 -5
- package/dist/edit-modes/translate-mode.d.ts +4 -3
- package/dist/edit-modes/translate-mode.d.ts.map +1 -0
- package/dist/edit-modes/translate-mode.js +10 -7
- package/dist/edit-modes/two-click-polygon-mode.d.ts +4 -3
- package/dist/edit-modes/two-click-polygon-mode.d.ts.map +1 -0
- package/dist/edit-modes/two-click-polygon-mode.js +10 -7
- package/dist/edit-modes/types.d.ts +2 -1
- package/dist/edit-modes/types.d.ts.map +1 -0
- package/dist/edit-modes/types.js +3 -0
- package/dist/edit-modes/utils.d.ts +3 -2
- package/dist/edit-modes/utils.d.ts.map +1 -0
- package/dist/edit-modes/utils.js +22 -19
- package/dist/edit-modes/view-mode.d.ts +2 -1
- package/dist/edit-modes/view-mode.d.ts.map +1 -0
- package/dist/edit-modes/view-mode.js +4 -1
- package/dist/editable-layers/editable-geojson-layer.d.ts +7 -6
- package/dist/editable-layers/editable-geojson-layer.d.ts.map +1 -0
- package/dist/editable-layers/editable-geojson-layer.js +53 -52
- package/dist/editable-layers/editable-h3-cluster-layer.d.ts +3 -2
- package/dist/editable-layers/editable-h3-cluster-layer.d.ts.map +1 -0
- package/dist/editable-layers/editable-h3-cluster-layer.js +8 -5
- package/dist/editable-layers/editable-layer.d.ts +7 -6
- package/dist/editable-layers/editable-layer.d.ts.map +1 -0
- package/dist/editable-layers/editable-layer.js +18 -15
- package/dist/editable-layers/editable-path-layer.d.ts +2 -1
- package/dist/editable-layers/editable-path-layer.d.ts.map +1 -0
- package/dist/editable-layers/editable-path-layer.js +10 -7
- package/dist/editable-layers/elevated-edit-handle-layer.d.ts +2 -1
- package/dist/editable-layers/elevated-edit-handle-layer.d.ts.map +1 -0
- package/dist/editable-layers/elevated-edit-handle-layer.js +6 -3
- package/dist/editable-layers/junction-scatterplot-layer.d.ts +3 -2
- package/dist/editable-layers/junction-scatterplot-layer.d.ts.map +1 -0
- package/dist/editable-layers/junction-scatterplot-layer.js +10 -7
- package/dist/editable-layers/selection-layer.d.ts +2 -1
- package/dist/editable-layers/selection-layer.d.ts.map +1 -0
- package/dist/editable-layers/selection-layer.js +8 -5
- package/dist/index.cjs +70 -542
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +59 -59
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +56 -54
- package/dist/lib/constants.d.ts +1 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +3 -0
- package/dist/lib/deck-renderer/deck-cache.d.ts +2 -1
- package/dist/lib/deck-renderer/deck-cache.d.ts.map +1 -0
- package/dist/lib/deck-renderer/deck-cache.js +1 -1
- package/dist/lib/deck-renderer/deck-drawer.d.ts +3 -3
- package/dist/lib/deck-renderer/deck-drawer.d.ts.map +1 -0
- package/dist/lib/deck-renderer/deck-drawer.js +12 -12
- package/dist/lib/feature.d.ts +5 -4
- package/dist/lib/feature.d.ts.map +1 -0
- package/dist/lib/feature.js +4 -1
- package/dist/lib/layer-mouse-event.d.ts +3 -2
- package/dist/lib/layer-mouse-event.d.ts.map +1 -0
- package/dist/lib/layer-mouse-event.js +4 -1
- package/dist/lib/layers/junctions-layer.d.ts +5 -4
- package/dist/lib/layers/junctions-layer.d.ts.map +1 -0
- package/dist/lib/layers/junctions-layer.js +10 -7
- package/dist/lib/layers/segments-layer.d.ts +5 -4
- package/dist/lib/layers/segments-layer.d.ts.map +1 -0
- package/dist/lib/layers/segments-layer.js +12 -9
- package/dist/lib/layers/texts-layer.d.ts +4 -3
- package/dist/lib/layers/texts-layer.d.ts.map +1 -0
- package/dist/lib/layers/texts-layer.js +9 -6
- package/dist/lib/math.d.ts +2 -1
- package/dist/lib/math.d.ts.map +1 -0
- package/dist/lib/math.js +3 -0
- package/dist/lib/{nebula.d.ts → nebula-core.d.ts} +3 -2
- package/dist/lib/nebula-core.d.ts.map +1 -0
- package/dist/lib/{nebula.js → nebula-core.js} +7 -4
- package/dist/lib/nebula-layer.d.ts +3 -2
- package/dist/lib/nebula-layer.d.ts.map +1 -0
- package/dist/lib/nebula-layer.js +4 -1
- package/dist/lib/style.d.ts +1 -0
- package/dist/lib/style.d.ts.map +1 -0
- package/dist/lib/style.js +5 -2
- package/dist/mode-handlers/composite-mode-handler.d.ts +4 -3
- package/dist/mode-handlers/composite-mode-handler.d.ts.map +1 -0
- package/dist/mode-handlers/composite-mode-handler.js +1 -1
- package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-90degree-polygon-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-90degree-polygon-handler.js +13 -10
- package/dist/mode-handlers/draw-circle-by-bounding-box-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-circle-by-bounding-box-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-circle-by-bounding-box-handler.js +5 -2
- package/dist/mode-handlers/draw-circle-from-center-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-circle-from-center-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-circle-from-center-handler.js +4 -1
- package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-ellipse-by-bounding-box-handler.js +5 -2
- package/dist/mode-handlers/draw-ellipse-using-three-points-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-ellipse-using-three-points-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-ellipse-using-three-points-handler.js +7 -4
- package/dist/mode-handlers/draw-line-string-handler.d.ts +3 -2
- package/dist/mode-handlers/draw-line-string-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-line-string-handler.js +8 -5
- package/dist/mode-handlers/draw-point-handler.d.ts +3 -2
- package/dist/mode-handlers/draw-point-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-point-handler.js +5 -2
- package/dist/mode-handlers/draw-polygon-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-polygon-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-polygon-handler.js +10 -7
- package/dist/mode-handlers/draw-rectangle-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-rectangle-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-rectangle-handler.js +4 -1
- package/dist/mode-handlers/draw-rectangle-using-three-points-handler.d.ts +4 -3
- package/dist/mode-handlers/draw-rectangle-using-three-points-handler.d.ts.map +1 -0
- package/dist/mode-handlers/draw-rectangle-using-three-points-handler.js +12 -9
- package/dist/mode-handlers/duplicate-handler.d.ts +4 -3
- package/dist/mode-handlers/duplicate-handler.d.ts.map +1 -0
- package/dist/mode-handlers/duplicate-handler.js +4 -1
- package/dist/mode-handlers/elevation-handler.d.ts +6 -5
- package/dist/mode-handlers/elevation-handler.d.ts.map +1 -0
- package/dist/mode-handlers/elevation-handler.js +10 -7
- package/dist/mode-handlers/extrude-handler.d.ts +4 -3
- package/dist/mode-handlers/extrude-handler.d.ts.map +1 -0
- package/dist/mode-handlers/extrude-handler.js +12 -9
- package/dist/mode-handlers/mode-handler.d.ts +4 -3
- package/dist/mode-handlers/mode-handler.d.ts.map +1 -0
- package/dist/mode-handlers/mode-handler.js +18 -15
- package/dist/mode-handlers/modify-handler.d.ts +5 -4
- package/dist/mode-handlers/modify-handler.d.ts.map +1 -0
- package/dist/mode-handlers/modify-handler.js +18 -15
- package/dist/mode-handlers/rotate-handler.d.ts +4 -3
- package/dist/mode-handlers/rotate-handler.d.ts.map +1 -0
- package/dist/mode-handlers/rotate-handler.js +5 -2
- package/dist/mode-handlers/scale-handler.d.ts +4 -3
- package/dist/mode-handlers/scale-handler.d.ts.map +1 -0
- package/dist/mode-handlers/scale-handler.js +6 -3
- package/dist/mode-handlers/snappable-handler.d.ts +4 -3
- package/dist/mode-handlers/snappable-handler.d.ts.map +1 -0
- package/dist/mode-handlers/snappable-handler.js +6 -3
- package/dist/mode-handlers/split-polygon-handler.d.ts +3 -2
- package/dist/mode-handlers/split-polygon-handler.d.ts.map +1 -0
- package/dist/mode-handlers/split-polygon-handler.js +12 -9
- package/dist/mode-handlers/three-click-polygon-handler.d.ts +3 -2
- package/dist/mode-handlers/three-click-polygon-handler.d.ts.map +1 -0
- package/dist/mode-handlers/three-click-polygon-handler.js +4 -1
- package/dist/mode-handlers/translate-handler.d.ts +4 -3
- package/dist/mode-handlers/translate-handler.d.ts.map +1 -0
- package/dist/mode-handlers/translate-handler.js +5 -2
- package/dist/mode-handlers/two-click-polygon-handler.d.ts +3 -2
- package/dist/mode-handlers/two-click-polygon-handler.d.ts.map +1 -0
- package/dist/mode-handlers/two-click-polygon-handler.js +4 -1
- package/dist/mode-handlers/view-handler.d.ts +3 -2
- package/dist/mode-handlers/view-handler.d.ts.map +1 -0
- package/dist/mode-handlers/view-handler.js +4 -1
- package/dist/shaderlib/color/color.d.ts +8 -6
- package/dist/shaderlib/color/color.d.ts.map +1 -0
- package/dist/shaderlib/color/color.js +7 -4
- package/dist/shaderlib/utils/utils.d.ts +3 -2
- package/dist/shaderlib/utils/utils.d.ts.map +1 -0
- package/dist/shaderlib/utils/utils.js +5 -2
- package/dist/{curve-utils.d.ts → utils/curve-utils.d.ts} +1 -0
- package/dist/utils/curve-utils.d.ts.map +1 -0
- package/dist/{curve-utils.js → utils/curve-utils.js} +7 -4
- package/dist/{geojson-types.d.ts → utils/geojson-types.d.ts} +3 -25
- package/dist/utils/geojson-types.d.ts.map +1 -0
- package/dist/utils/geojson-types.js +4 -0
- package/dist/{memoize.d.ts → utils/memoize.d.ts} +2 -1
- package/dist/utils/memoize.d.ts.map +1 -0
- package/dist/{memoize.js → utils/memoize.js} +4 -1
- package/dist/{translateFromCenter.d.ts → utils/translate-from-center.d.ts} +1 -0
- package/dist/utils/translate-from-center.d.ts.map +1 -0
- package/dist/{translateFromCenter.js → utils/translate-from-center.js} +7 -4
- package/dist/{types.d.ts → utils/types.d.ts} +1 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +4 -0
- package/dist/{utils.d.ts → utils/utils.d.ts} +5 -4
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/{utils.js → utils/utils.js} +11 -9
- package/package.json +11 -10
- package/src/constants.ts +5 -1
- package/src/edit-modes/composite-mode.ts +9 -5
- package/src/edit-modes/draw-90degree-polygon-mode.ts +38 -34
- package/src/edit-modes/draw-circle-by-diameter-mode.ts +16 -12
- package/src/edit-modes/draw-circle-from-center-mode.ts +15 -11
- package/src/edit-modes/draw-ellipse-by-bounding-box-mode.ts +8 -4
- package/src/edit-modes/draw-ellipse-using-three-points-mode.ts +9 -5
- package/src/edit-modes/draw-line-string-mode.ts +29 -25
- package/src/edit-modes/draw-point-mode.ts +13 -9
- package/src/edit-modes/draw-polygon-by-dragging-mode.ts +16 -16
- package/src/edit-modes/draw-polygon-mode.ts +28 -23
- package/src/edit-modes/draw-rectangle-from-center-mode.ts +6 -2
- package/src/edit-modes/draw-rectangle-mode.ts +6 -2
- package/src/edit-modes/draw-rectangle-using-three-points-mode.ts +12 -8
- package/src/edit-modes/draw-square-from-center-mode.ts +7 -3
- package/src/edit-modes/draw-square-mode.ts +7 -3
- package/src/edit-modes/duplicate-mode.ts +7 -3
- package/src/edit-modes/edit-mode.ts +5 -1
- package/src/edit-modes/elevation-mode.ts +13 -9
- package/src/edit-modes/extend-line-string-mode.ts +16 -12
- package/src/edit-modes/extrude-mode.ts +22 -18
- package/src/edit-modes/geojson-edit-mode.ts +37 -33
- package/src/edit-modes/immutable-feature-collection.ts +28 -22
- package/src/edit-modes/measure-angle-mode.ts +66 -59
- package/src/edit-modes/measure-area-mode.ts +13 -10
- package/src/edit-modes/measure-distance-mode.ts +37 -33
- package/src/edit-modes/modify-mode.ts +36 -32
- package/src/edit-modes/resize-circle-mode.ts +8 -5
- package/src/edit-modes/rotate-mode.ts +22 -18
- package/src/edit-modes/scale-mode.ts +29 -23
- package/src/edit-modes/snappable-mode.ts +19 -15
- package/src/edit-modes/split-polygon-mode.ts +25 -21
- package/src/edit-modes/three-click-polygon-mode.ts +15 -11
- package/src/edit-modes/transform-mode.ts +15 -11
- package/src/edit-modes/translate-mode.ts +15 -11
- package/src/edit-modes/two-click-polygon-mode.ts +15 -11
- package/src/edit-modes/types.ts +5 -1
- package/src/edit-modes/utils.ts +35 -30
- package/src/edit-modes/view-mode.ts +5 -1
- package/src/editable-layers/editable-geojson-layer.ts +44 -41
- package/src/editable-layers/editable-h3-cluster-layer.ts +17 -14
- package/src/editable-layers/editable-layer.ts +42 -32
- package/src/editable-layers/editable-path-layer.ts +12 -8
- package/src/editable-layers/elevated-edit-handle-layer.ts +11 -7
- package/src/editable-layers/junction-scatterplot-layer.ts +15 -11
- package/src/editable-layers/selection-layer.ts +11 -7
- package/src/index.ts +68 -65
- package/src/lib/constants.ts +4 -0
- package/src/lib/deck-renderer/deck-cache.ts +1 -1
- package/src/lib/deck-renderer/deck-drawer.ts +28 -28
- package/src/lib/feature.ts +7 -3
- package/src/lib/layer-mouse-event.ts +7 -6
- package/src/lib/layers/junctions-layer.ts +14 -10
- package/src/lib/layers/segments-layer.ts +24 -20
- package/src/lib/layers/texts-layer.ts +18 -14
- package/src/lib/math.ts +5 -1
- package/src/lib/{nebula.ts → nebula-core.ts} +8 -4
- package/src/lib/nebula-layer.ts +9 -5
- package/src/lib/style.ts +6 -2
- package/src/mode-handlers/composite-mode-handler.ts +6 -6
- package/src/mode-handlers/draw-90degree-polygon-handler.ts +22 -18
- package/src/mode-handlers/draw-circle-by-bounding-box-handler.ts +10 -6
- package/src/mode-handlers/draw-circle-from-center-handler.ts +10 -6
- package/src/mode-handlers/draw-ellipse-by-bounding-box-handler.ts +9 -5
- package/src/mode-handlers/draw-ellipse-using-three-points-handler.ts +12 -8
- package/src/mode-handlers/draw-line-string-handler.ts +12 -8
- package/src/mode-handlers/draw-point-handler.ts +9 -5
- package/src/mode-handlers/draw-polygon-handler.ts +16 -12
- package/src/mode-handlers/draw-rectangle-handler.ts +8 -4
- package/src/mode-handlers/draw-rectangle-using-three-points-handler.ts +17 -13
- package/src/mode-handlers/duplicate-handler.ts +8 -4
- package/src/mode-handlers/elevation-handler.ts +14 -10
- package/src/mode-handlers/extrude-handler.ts +15 -11
- package/src/mode-handlers/mode-handler.ts +26 -28
- package/src/mode-handlers/modify-handler.ts +29 -25
- package/src/mode-handlers/rotate-handler.ts +13 -17
- package/src/mode-handlers/scale-handler.ts +13 -13
- package/src/mode-handlers/snappable-handler.ts +28 -24
- package/src/mode-handlers/split-polygon-handler.ts +22 -18
- package/src/mode-handlers/three-click-polygon-handler.ts +6 -2
- package/src/mode-handlers/translate-handler.ts +12 -8
- package/src/mode-handlers/two-click-polygon-handler.ts +6 -2
- package/src/mode-handlers/view-handler.ts +7 -3
- package/src/shaderlib/color/color.ts +10 -5
- package/src/shaderlib/utils/utils.ts +6 -2
- package/src/{curve-utils.ts → utils/curve-utils.ts} +11 -7
- package/src/{geojson-types.ts → utils/geojson-types.ts} +16 -31
- package/src/{memoize.ts → utils/memoize.ts} +5 -1
- package/src/{translateFromCenter.ts → utils/translate-from-center.ts} +12 -8
- package/src/{types.ts → utils/types.ts} +4 -0
- package/src/{utils.ts → utils/utils.ts} +17 -14
- package/dist/editable-layers/path-marker-layer/arrow-2d-geometry.d.ts +0 -4
- package/dist/editable-layers/path-marker-layer/arrow-2d-geometry.js +0 -55
- package/dist/editable-layers/path-marker-layer/create-path-markers.d.ts +0 -16
- package/dist/editable-layers/path-marker-layer/create-path-markers.js +0 -75
- package/dist/editable-layers/path-marker-layer/path-marker-layer.d.ts +0 -40
- package/dist/editable-layers/path-marker-layer/path-marker-layer.js +0 -121
- package/dist/editable-layers/path-marker-layer/polyline.d.ts +0 -18
- package/dist/editable-layers/path-marker-layer/polyline.js +0 -37
- package/dist/editable-layers/path-outline-layer/path-outline-layer.d.ts +0 -26
- package/dist/editable-layers/path-outline-layer/path-outline-layer.js +0 -106
- package/dist/geojson-types.js +0 -2
- package/dist/shaderlib/outline/outline.d.ts +0 -8
- package/dist/shaderlib/outline/outline.js +0 -97
- package/dist/types.js +0 -1
- package/src/editable-layers/path-marker-layer/arrow-2d-geometry.ts +0 -61
- package/src/editable-layers/path-marker-layer/create-path-markers.ts +0 -107
- package/src/editable-layers/path-marker-layer/path-marker-layer.ts +0 -179
- package/src/editable-layers/path-marker-layer/polyline.ts +0 -40
- package/src/editable-layers/path-outline-layer/path-outline-layer.ts +0 -147
- package/src/shaderlib/outline/outline.ts +0 -101
|
@@ -1,14 +1,18 @@
|
|
|
1
|
+
// deck.gl-community
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
1
5
|
/* eslint-env browser */
|
|
2
6
|
|
|
3
|
-
import type {
|
|
4
|
-
import {
|
|
7
|
+
import type {UpdateParameters, DefaultProps} from '@deck.gl/core';
|
|
8
|
+
import {GeoJsonLayer, ScatterplotLayer, IconLayer, TextLayer} from '@deck.gl/layers';
|
|
5
9
|
import {
|
|
6
10
|
EditAction,
|
|
7
11
|
ClickEvent,
|
|
8
12
|
StartDraggingEvent,
|
|
9
13
|
StopDraggingEvent,
|
|
10
14
|
DraggingEvent,
|
|
11
|
-
PointerMoveEvent
|
|
15
|
+
PointerMoveEvent
|
|
12
16
|
} from '../edit-modes/types';
|
|
13
17
|
|
|
14
18
|
import {ViewMode} from '../edit-modes/view-mode';
|
|
@@ -38,12 +42,12 @@ import {SnappableMode} from '../edit-modes/snappable-mode';
|
|
|
38
42
|
import {TransformMode} from '../edit-modes/transform-mode';
|
|
39
43
|
import {GeoJsonEditModeType} from '../edit-modes/geojson-edit-mode';
|
|
40
44
|
|
|
41
|
-
import {
|
|
42
|
-
import {
|
|
45
|
+
import {Color} from '../utils/types';
|
|
46
|
+
import {PROJECTED_PIXEL_SIZE_MULTIPLIER} from '../constants';
|
|
43
47
|
|
|
44
|
-
import EditableLayer,
|
|
45
|
-
import EditablePathLayer from './editable-path-layer';
|
|
46
|
-
import {
|
|
48
|
+
import {EditableLayer, EditableLayerProps} from './editable-layer';
|
|
49
|
+
import {EditablePathLayer} from './editable-path-layer';
|
|
50
|
+
import {Feature, FeatureCollection} from '../utils/geojson-types';
|
|
47
51
|
|
|
48
52
|
const DEFAULT_LINE_COLOR: Color = [0x0, 0x0, 0x0, 0x99];
|
|
49
53
|
const DEFAULT_FILL_COLOR: Color = [0x0, 0x0, 0x0, 0x90];
|
|
@@ -228,7 +232,7 @@ const defaultProps: DefaultProps<EditableGeojsonLayerProps<any>> = {
|
|
|
228
232
|
getEditHandleIconAngle: 0,
|
|
229
233
|
|
|
230
234
|
// misc
|
|
231
|
-
billboard: true
|
|
235
|
+
billboard: true
|
|
232
236
|
};
|
|
233
237
|
|
|
234
238
|
// Mapping of mode name to mode class (for legacy purposes)
|
|
@@ -261,10 +265,10 @@ const modeNameMapping = {
|
|
|
261
265
|
drawRectangleUsing3Points: DrawRectangleUsingThreePointsMode,
|
|
262
266
|
drawEllipseUsing3Points: DrawEllipseUsingThreePointsMode,
|
|
263
267
|
draw90DegreePolygon: Draw90DegreePolygonMode,
|
|
264
|
-
drawPolygonByDragging: DrawPolygonByDraggingMode
|
|
268
|
+
drawPolygonByDragging: DrawPolygonByDraggingMode
|
|
265
269
|
};
|
|
266
270
|
|
|
267
|
-
export
|
|
271
|
+
export class EditableGeoJsonLayer extends EditableLayer<
|
|
268
272
|
FeatureCollection,
|
|
269
273
|
EditableGeojsonLayerProps<FeatureCollection>
|
|
270
274
|
> {
|
|
@@ -310,8 +314,8 @@ export default class EditableGeoJsonLayer extends EditableLayer<
|
|
|
310
314
|
billboard: this.props.billboard,
|
|
311
315
|
updateTriggers: {
|
|
312
316
|
// required to update dashed array attribute
|
|
313
|
-
all: [this.props.selectedFeatureIndexes, this.props.mode]
|
|
314
|
-
}
|
|
317
|
+
all: [this.props.selectedFeatureIndexes, this.props.mode]
|
|
318
|
+
}
|
|
315
319
|
},
|
|
316
320
|
'polygons-stroke': {
|
|
317
321
|
billboard: this.props.billboard,
|
|
@@ -319,17 +323,17 @@ export default class EditableGeoJsonLayer extends EditableLayer<
|
|
|
319
323
|
type: EditablePathLayer,
|
|
320
324
|
updateTriggers: {
|
|
321
325
|
// required to update dashed array attribute
|
|
322
|
-
all: [this.props.selectedFeatureIndexes, this.props.mode]
|
|
323
|
-
}
|
|
324
|
-
}
|
|
326
|
+
all: [this.props.selectedFeatureIndexes, this.props.mode]
|
|
327
|
+
}
|
|
328
|
+
}
|
|
325
329
|
},
|
|
326
330
|
|
|
327
331
|
updateTriggers: {
|
|
328
332
|
getLineColor: [this.props.selectedFeatureIndexes, this.props.mode],
|
|
329
333
|
getFillColor: [this.props.selectedFeatureIndexes, this.props.mode],
|
|
330
334
|
getPointRadius: [this.props.selectedFeatureIndexes, this.props.mode],
|
|
331
|
-
getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode]
|
|
332
|
-
}
|
|
335
|
+
getLineWidth: [this.props.selectedFeatureIndexes, this.props.mode]
|
|
336
|
+
}
|
|
333
337
|
});
|
|
334
338
|
|
|
335
339
|
let layers: any = [new GeoJsonLayer(subLayerProps)];
|
|
@@ -344,7 +348,7 @@ export default class EditableGeoJsonLayer extends EditableLayer<
|
|
|
344
348
|
|
|
345
349
|
this.setState({
|
|
346
350
|
selectedFeatures: [],
|
|
347
|
-
editHandles: []
|
|
351
|
+
editHandles: []
|
|
348
352
|
});
|
|
349
353
|
}
|
|
350
354
|
|
|
@@ -358,8 +362,8 @@ export default class EditableGeoJsonLayer extends EditableLayer<
|
|
|
358
362
|
return super.shouldUpdateState(opts) || opts.changeFlags.stateChanged;
|
|
359
363
|
}
|
|
360
364
|
|
|
361
|
-
updateState({
|
|
362
|
-
super.updateState({
|
|
365
|
+
updateState({props, oldProps, changeFlags, context}: UpdateParameters<this>) {
|
|
366
|
+
super.updateState({oldProps, props, changeFlags, context});
|
|
363
367
|
|
|
364
368
|
if (changeFlags.propsOrDataChanged) {
|
|
365
369
|
const modePropChanged = Object.keys(oldProps).length === 0 || props.mode !== oldProps.mode;
|
|
@@ -374,7 +378,7 @@ export default class EditableGeoJsonLayer extends EditableLayer<
|
|
|
374
378
|
mode = modeNameMapping[props.mode];
|
|
375
379
|
// eslint-disable-next-line no-console
|
|
376
380
|
console.warn(
|
|
377
|
-
|
|
381
|
+
"Deprecated use of passing `mode` as a string. Pass the mode's class constructor instead."
|
|
378
382
|
);
|
|
379
383
|
} else {
|
|
380
384
|
// Should be an instance of EditMode in this case
|
|
@@ -388,7 +392,7 @@ export default class EditableGeoJsonLayer extends EditableLayer<
|
|
|
388
392
|
}
|
|
389
393
|
|
|
390
394
|
if (mode !== this.state.mode) {
|
|
391
|
-
this.setState({
|
|
395
|
+
this.setState({mode, cursor: null});
|
|
392
396
|
}
|
|
393
397
|
}
|
|
394
398
|
}
|
|
@@ -401,11 +405,10 @@ export default class EditableGeoJsonLayer extends EditableLayer<
|
|
|
401
405
|
) {
|
|
402
406
|
// TODO: needs improved testing, i.e. checking for duplicates, NaNs, out of range numbers, ...
|
|
403
407
|
const propsData = props.data;
|
|
404
|
-
// @ts-ignore error TS2339: Property 'features' does not exist on type 'never'
|
|
405
408
|
selectedFeatures = props.selectedFeatureIndexes.map((elem) => propsData.features[elem]);
|
|
406
409
|
}
|
|
407
410
|
|
|
408
|
-
this.setState({
|
|
411
|
+
this.setState({selectedFeatures});
|
|
409
412
|
}
|
|
410
413
|
|
|
411
414
|
getModeProps(props: EditableGeojsonLayerProps<any>) {
|
|
@@ -420,11 +423,11 @@ export default class EditableGeoJsonLayer extends EditableLayer<
|
|
|
420
423
|
// This supports double-click where we need to ensure that there's a re-render between the two clicks
|
|
421
424
|
// even though the data wasn't changed, just the internal tentative feature.
|
|
422
425
|
this.setNeedsUpdate();
|
|
423
|
-
props.onEdit
|
|
426
|
+
props.onEdit(editAction);
|
|
424
427
|
},
|
|
425
428
|
onUpdateCursor: (cursor: string | null | undefined) => {
|
|
426
|
-
this.setState({
|
|
427
|
-
}
|
|
429
|
+
this.setState({cursor});
|
|
430
|
+
}
|
|
428
431
|
};
|
|
429
432
|
}
|
|
430
433
|
|
|
@@ -447,7 +450,7 @@ export default class EditableGeoJsonLayer extends EditableLayer<
|
|
|
447
450
|
return this.state.selectedFeatures.includes(feature);
|
|
448
451
|
}
|
|
449
452
|
|
|
450
|
-
getPickingInfo({
|
|
453
|
+
getPickingInfo({info, sourceLayer}: Record<string, any>) {
|
|
451
454
|
if (sourceLayer.id.endsWith('guides')) {
|
|
452
455
|
// If user is picking an editing handle, add additional data to the info
|
|
453
456
|
info.isGuide = true;
|
|
@@ -480,14 +483,14 @@ export default class EditableGeoJsonLayer extends EditableLayer<
|
|
|
480
483
|
const subLayerProps = {
|
|
481
484
|
linestrings: {
|
|
482
485
|
billboard: this.props.billboard,
|
|
483
|
-
autoHighlight: false
|
|
486
|
+
autoHighlight: false
|
|
484
487
|
},
|
|
485
488
|
'polygons-fill': {
|
|
486
|
-
autoHighlight: false
|
|
489
|
+
autoHighlight: false
|
|
487
490
|
},
|
|
488
491
|
'polygons-stroke': {
|
|
489
|
-
billboard: this.props.billboard
|
|
490
|
-
}
|
|
492
|
+
billboard: this.props.billboard
|
|
493
|
+
}
|
|
491
494
|
};
|
|
492
495
|
|
|
493
496
|
if (this.props.editHandleType === 'icon') {
|
|
@@ -501,7 +504,7 @@ export default class EditableGeoJsonLayer extends EditableLayer<
|
|
|
501
504
|
getSize: guideAccessor(this.props.getEditHandleIconSize),
|
|
502
505
|
getColor: guideAccessor(this.props.getEditHandleIconColor),
|
|
503
506
|
getAngle: guideAccessor(this.props.getEditHandleIconAngle),
|
|
504
|
-
billboard: this.props.billboard
|
|
507
|
+
billboard: this.props.billboard
|
|
505
508
|
};
|
|
506
509
|
} else {
|
|
507
510
|
subLayerProps['points-circle'] = {
|
|
@@ -515,7 +518,7 @@ export default class EditableGeoJsonLayer extends EditableLayer<
|
|
|
515
518
|
getRadius: guideAccessor(this.props.getEditHandlePointRadius),
|
|
516
519
|
getFillColor: guideAccessor(this.props.getEditHandlePointColor),
|
|
517
520
|
getLineColor: guideAccessor(this.props.getEditHandlePointOutlineColor),
|
|
518
|
-
billboard: this.props.billboard
|
|
521
|
+
billboard: this.props.billboard
|
|
519
522
|
};
|
|
520
523
|
}
|
|
521
524
|
|
|
@@ -536,7 +539,7 @@ export default class EditableGeoJsonLayer extends EditableLayer<
|
|
|
536
539
|
getLineWidth: guideAccessor(this.props.getTentativeLineWidth),
|
|
537
540
|
getFillColor: guideAccessor(this.props.getTentativeFillColor),
|
|
538
541
|
pointType: this.props.editHandleType === 'icon' ? 'icon' : 'circle',
|
|
539
|
-
iconAtlas: this.props.editHandleIconAtlas
|
|
542
|
+
iconAtlas: this.props.editHandleIconAtlas
|
|
540
543
|
})
|
|
541
544
|
);
|
|
542
545
|
|
|
@@ -551,8 +554,8 @@ export default class EditableGeoJsonLayer extends EditableLayer<
|
|
|
551
554
|
getSize: DEFAULT_TOOLTIP_FONT_SIZE,
|
|
552
555
|
...this.getSubLayerProps({
|
|
553
556
|
id: 'tooltips',
|
|
554
|
-
data: tooltips
|
|
555
|
-
})
|
|
557
|
+
data: tooltips
|
|
558
|
+
})
|
|
556
559
|
});
|
|
557
560
|
|
|
558
561
|
return [layer];
|
|
@@ -579,17 +582,17 @@ export default class EditableGeoJsonLayer extends EditableLayer<
|
|
|
579
582
|
}
|
|
580
583
|
|
|
581
584
|
onPointerMove(event: PointerMoveEvent): void {
|
|
582
|
-
this.setState({
|
|
585
|
+
this.setState({lastPointerMoveEvent: event});
|
|
583
586
|
this.getActiveMode().handlePointerMove(event, this.getModeProps(this.props) as any);
|
|
584
587
|
}
|
|
585
588
|
|
|
586
|
-
getCursor({
|
|
589
|
+
getCursor({isDragging}: {isDragging: boolean}): null | 'grabbing' | 'grab' {
|
|
587
590
|
if (this.state === null || this.state === undefined) {
|
|
588
591
|
// Layer in 'Awaiting state'
|
|
589
592
|
return null;
|
|
590
593
|
}
|
|
591
594
|
|
|
592
|
-
let {
|
|
595
|
+
let {cursor} = this.state;
|
|
593
596
|
if (!cursor) {
|
|
594
597
|
// default cursor
|
|
595
598
|
cursor = isDragging ? 'grabbing' : 'grab';
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
// deck.gl-community
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
1
5
|
/* eslint-env browser */
|
|
2
6
|
|
|
3
7
|
import {H3ClusterLayer} from '@deck.gl/geo-layers';
|
|
@@ -5,8 +9,8 @@ import {DefaultProps} from '@deck.gl/core';
|
|
|
5
9
|
// TODO: Fix H3 support.
|
|
6
10
|
// import { polyfill, geoToH3 } from 'h3-js';
|
|
7
11
|
import {PROJECTED_PIXEL_SIZE_MULTIPLIER} from '../constants';
|
|
8
|
-
import EditableGeoJsonLayer from './editable-geojson-layer';
|
|
9
|
-
import EditableLayer,
|
|
12
|
+
import {EditableGeoJsonLayer} from './editable-geojson-layer';
|
|
13
|
+
import {EditableLayer, EditableLayerProps} from './editable-layer';
|
|
10
14
|
import {ViewMode} from '../edit-modes/view-mode';
|
|
11
15
|
|
|
12
16
|
const DEFAULT_EDIT_MODE = ViewMode;
|
|
@@ -62,10 +66,7 @@ const defaultProps: DefaultProps<EditableH3ClusterLayerProps<any>> = {
|
|
|
62
66
|
resolution: DEFAULT_H3_RESOLUTION
|
|
63
67
|
};
|
|
64
68
|
|
|
65
|
-
export
|
|
66
|
-
any,
|
|
67
|
-
EditableH3ClusterLayerProps<any>
|
|
68
|
-
> {
|
|
69
|
+
export class EditableH3ClusterLayer extends EditableLayer<any, EditableH3ClusterLayerProps<any>> {
|
|
69
70
|
static layerName = 'EditableH3ClusterLayer';
|
|
70
71
|
static defaultProps = defaultProps;
|
|
71
72
|
|
|
@@ -129,16 +130,18 @@ export default class EditableH3ClusterLayer extends EditableLayer<
|
|
|
129
130
|
if (!modeConfig || !modeConfig.booleanOperation) {
|
|
130
131
|
// add new h3 cluster
|
|
131
132
|
updatedData.push(
|
|
132
|
-
this.props.getEditedCluster
|
|
133
|
+
this.props.getEditedCluster(this.state.tentativeHexagonIDs, null)
|
|
133
134
|
);
|
|
134
|
-
} else if (this.props.selectedIndexes
|
|
135
|
+
} else if (this.props.selectedIndexes.length !== 1) {
|
|
135
136
|
// eslint-disable-next-line no-console,no-undef
|
|
136
137
|
console.warn('booleanOperation only supported for single cluster selection');
|
|
137
138
|
} else {
|
|
138
139
|
// they're affecting a selected cluster
|
|
139
140
|
let finalHexagonIDs: (string | number)[];
|
|
140
141
|
const committedHexagonIDs = new Set<string | number>(this.getSelectedHexIDs());
|
|
141
|
-
const tentativeHexagonIDs = new Set<string | number>(
|
|
142
|
+
const tentativeHexagonIDs = new Set<string | number>(
|
|
143
|
+
this.state.tentativeHexagonIDs
|
|
144
|
+
);
|
|
142
145
|
|
|
143
146
|
switch (modeConfig.booleanOperation) {
|
|
144
147
|
case 'union':
|
|
@@ -159,9 +162,9 @@ export default class EditableH3ClusterLayer extends EditableLayer<
|
|
|
159
162
|
break;
|
|
160
163
|
}
|
|
161
164
|
|
|
162
|
-
const selectedIndex = this.props.selectedIndexes
|
|
165
|
+
const selectedIndex = this.props.selectedIndexes[0];
|
|
163
166
|
const existingCluster = this.props.data[selectedIndex];
|
|
164
|
-
updatedData[selectedIndex] = this.props.getEditedCluster
|
|
167
|
+
updatedData[selectedIndex] = this.props.getEditedCluster(
|
|
165
168
|
finalHexagonIDs,
|
|
166
169
|
existingCluster
|
|
167
170
|
);
|
|
@@ -171,7 +174,7 @@ export default class EditableH3ClusterLayer extends EditableLayer<
|
|
|
171
174
|
tentativeHexagonIDs: []
|
|
172
175
|
});
|
|
173
176
|
|
|
174
|
-
this.props.onEdit
|
|
177
|
+
this.props.onEdit({updatedData});
|
|
175
178
|
|
|
176
179
|
break;
|
|
177
180
|
default:
|
|
@@ -207,9 +210,9 @@ export default class EditableH3ClusterLayer extends EditableLayer<
|
|
|
207
210
|
// using props.getHexagons to support multiple data types
|
|
208
211
|
getSelectedHexIDs() {
|
|
209
212
|
let cumulativeHexIDs: number[] = [];
|
|
210
|
-
this.props.selectedIndexes
|
|
213
|
+
this.props.selectedIndexes.forEach((index) => {
|
|
211
214
|
const selectedCluster = this.props.data[index];
|
|
212
|
-
const hexIDs = this.props.getHexagons
|
|
215
|
+
const hexIDs = this.props.getHexagons(selectedCluster);
|
|
213
216
|
cumulativeHexIDs = cumulativeHexIDs.concat(hexIDs);
|
|
214
217
|
});
|
|
215
218
|
return cumulativeHexIDs;
|
|
@@ -1,8 +1,18 @@
|
|
|
1
|
+
// deck.gl-community
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
1
5
|
/* eslint-env browser */
|
|
2
6
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
7
|
+
import {CompositeLayer, CompositeLayerProps} from '@deck.gl/core';
|
|
8
|
+
import {
|
|
9
|
+
DraggingEvent,
|
|
10
|
+
ClickEvent,
|
|
11
|
+
StartDraggingEvent,
|
|
12
|
+
StopDraggingEvent,
|
|
13
|
+
PointerMoveEvent
|
|
14
|
+
} from '../edit-modes/types';
|
|
15
|
+
import {Position} from '../utils/geojson-types';
|
|
6
16
|
|
|
7
17
|
const EVENT_TYPES = ['anyclick', 'pointermove', 'panstart', 'panmove', 'panend', 'keyup'];
|
|
8
18
|
|
|
@@ -12,7 +22,7 @@ export type EditableLayerProps<DataType = any> = CompositeLayerProps & {
|
|
|
12
22
|
pickingDepth?: number;
|
|
13
23
|
};
|
|
14
24
|
|
|
15
|
-
export
|
|
25
|
+
export abstract class EditableLayer<
|
|
16
26
|
DataT = any,
|
|
17
27
|
ExtraPropsT = Record<string, unknown>
|
|
18
28
|
> extends CompositeLayer<ExtraPropsT & Required<EditableLayerProps<DataT>>> {
|
|
@@ -57,8 +67,8 @@ export default abstract class EditableLayer<
|
|
|
57
67
|
pointerDownMapCoords: null,
|
|
58
68
|
|
|
59
69
|
// Keep track of the mjolnir.js event handler so it can be deregistered
|
|
60
|
-
eventHandler: this._forwardEventToCurrentLayer.bind(this)
|
|
61
|
-
}
|
|
70
|
+
eventHandler: this._forwardEventToCurrentLayer.bind(this)
|
|
71
|
+
}
|
|
62
72
|
});
|
|
63
73
|
|
|
64
74
|
this._addEventHandlers();
|
|
@@ -70,21 +80,21 @@ export default abstract class EditableLayer<
|
|
|
70
80
|
|
|
71
81
|
_addEventHandlers() {
|
|
72
82
|
// @ts-expect-error accessing protected props
|
|
73
|
-
const {
|
|
74
|
-
const {
|
|
83
|
+
const {eventManager} = this.context.deck;
|
|
84
|
+
const {eventHandler} = this.state._editableLayerState;
|
|
75
85
|
|
|
76
86
|
for (const eventType of EVENT_TYPES) {
|
|
77
87
|
eventManager.on(eventType as any, eventHandler, {
|
|
78
88
|
// give nebula a higher priority so that it can stop propagation to deck.gl's map panning handlers
|
|
79
|
-
priority: 100
|
|
89
|
+
priority: 100
|
|
80
90
|
});
|
|
81
91
|
}
|
|
82
92
|
}
|
|
83
93
|
|
|
84
94
|
_removeEventHandlers() {
|
|
85
95
|
// @ts-expect-error accessing protected props
|
|
86
|
-
const {
|
|
87
|
-
const {
|
|
96
|
+
const {eventManager} = this.context.deck;
|
|
97
|
+
const {eventHandler} = this.state._editableLayerState;
|
|
88
98
|
|
|
89
99
|
for (const eventType of EVENT_TYPES) {
|
|
90
100
|
eventManager.off(eventType as any, eventHandler);
|
|
@@ -95,7 +105,7 @@ export default abstract class EditableLayer<
|
|
|
95
105
|
// This means that the first layer instance will stick around to be the event listener, but will forward the event
|
|
96
106
|
// to the latest layer instance.
|
|
97
107
|
_forwardEventToCurrentLayer(event: any) {
|
|
98
|
-
const currentLayer = this.getCurrentLayer()
|
|
108
|
+
const currentLayer = this.getCurrentLayer();
|
|
99
109
|
|
|
100
110
|
// Use a naming convention to find the event handling function for this event type
|
|
101
111
|
const func = currentLayer[`_on${event.type}`].bind(currentLayer);
|
|
@@ -106,7 +116,7 @@ export default abstract class EditableLayer<
|
|
|
106
116
|
func(event);
|
|
107
117
|
}
|
|
108
118
|
|
|
109
|
-
_onanyclick({
|
|
119
|
+
_onanyclick({srcEvent}: any) {
|
|
110
120
|
const screenCoords = this.getScreenCoords(srcEvent) as [number, number];
|
|
111
121
|
const mapCoords = this.getMapCoords(screenCoords);
|
|
112
122
|
|
|
@@ -116,11 +126,11 @@ export default abstract class EditableLayer<
|
|
|
116
126
|
mapCoords,
|
|
117
127
|
screenCoords,
|
|
118
128
|
picks,
|
|
119
|
-
sourceEvent: srcEvent
|
|
129
|
+
sourceEvent: srcEvent
|
|
120
130
|
});
|
|
121
131
|
}
|
|
122
132
|
|
|
123
|
-
_onkeyup({
|
|
133
|
+
_onkeyup({srcEvent}: {srcEvent: KeyboardEvent}) {
|
|
124
134
|
this.onLayerKeyUp(srcEvent);
|
|
125
135
|
}
|
|
126
136
|
|
|
@@ -134,8 +144,8 @@ export default abstract class EditableLayer<
|
|
|
134
144
|
...this.state._editableLayerState,
|
|
135
145
|
pointerDownScreenCoords: screenCoords,
|
|
136
146
|
pointerDownMapCoords: mapCoords,
|
|
137
|
-
pointerDownPicks: picks
|
|
138
|
-
}
|
|
147
|
+
pointerDownPicks: picks
|
|
148
|
+
}
|
|
139
149
|
});
|
|
140
150
|
|
|
141
151
|
this.onStartDragging({
|
|
@@ -145,16 +155,16 @@ export default abstract class EditableLayer<
|
|
|
145
155
|
pointerDownScreenCoords: screenCoords,
|
|
146
156
|
pointerDownMapCoords: mapCoords,
|
|
147
157
|
cancelPan: event.stopImmediatePropagation,
|
|
148
|
-
sourceEvent: event.srcEvent
|
|
158
|
+
sourceEvent: event.srcEvent
|
|
149
159
|
});
|
|
150
160
|
}
|
|
151
161
|
|
|
152
162
|
_onpanmove(event: any) {
|
|
153
|
-
const {
|
|
163
|
+
const {srcEvent} = event;
|
|
154
164
|
const screenCoords = this.getScreenCoords(srcEvent) as [number, number];
|
|
155
165
|
const mapCoords = this.getMapCoords(screenCoords);
|
|
156
166
|
|
|
157
|
-
const {
|
|
167
|
+
const {pointerDownPicks, pointerDownScreenCoords, pointerDownMapCoords} =
|
|
158
168
|
this.state._editableLayerState;
|
|
159
169
|
|
|
160
170
|
const picks = this.getPicks(screenCoords);
|
|
@@ -167,7 +177,7 @@ export default abstract class EditableLayer<
|
|
|
167
177
|
pointerDownScreenCoords,
|
|
168
178
|
pointerDownMapCoords,
|
|
169
179
|
sourceEvent: srcEvent,
|
|
170
|
-
cancelPan: event.stopImmediatePropagation
|
|
180
|
+
cancelPan: event.stopImmediatePropagation
|
|
171
181
|
// another (hacky) approach for cancelling map panning
|
|
172
182
|
// const controller = this.context.deck.viewManager.controllers[
|
|
173
183
|
// Object.keys(this.context.deck.viewManager.controllers)[0]
|
|
@@ -176,11 +186,11 @@ export default abstract class EditableLayer<
|
|
|
176
186
|
});
|
|
177
187
|
}
|
|
178
188
|
|
|
179
|
-
_onpanend({
|
|
189
|
+
_onpanend({srcEvent}: any) {
|
|
180
190
|
const screenCoords = this.getScreenCoords(srcEvent) as [number, number];
|
|
181
191
|
const mapCoords = this.getMapCoords(screenCoords);
|
|
182
192
|
|
|
183
|
-
const {
|
|
193
|
+
const {pointerDownPicks, pointerDownScreenCoords, pointerDownMapCoords} =
|
|
184
194
|
this.state._editableLayerState;
|
|
185
195
|
|
|
186
196
|
const picks = this.getPicks(screenCoords);
|
|
@@ -192,7 +202,7 @@ export default abstract class EditableLayer<
|
|
|
192
202
|
pointerDownPicks,
|
|
193
203
|
pointerDownScreenCoords,
|
|
194
204
|
pointerDownMapCoords,
|
|
195
|
-
sourceEvent: srcEvent
|
|
205
|
+
sourceEvent: srcEvent
|
|
196
206
|
});
|
|
197
207
|
|
|
198
208
|
this.setState({
|
|
@@ -200,17 +210,17 @@ export default abstract class EditableLayer<
|
|
|
200
210
|
...this.state._editableLayerState,
|
|
201
211
|
pointerDownScreenCoords: null,
|
|
202
212
|
pointerDownMapCoords: null,
|
|
203
|
-
pointerDownPicks: null
|
|
204
|
-
}
|
|
213
|
+
pointerDownPicks: null
|
|
214
|
+
}
|
|
205
215
|
});
|
|
206
216
|
}
|
|
207
217
|
|
|
208
218
|
_onpointermove(event: any) {
|
|
209
|
-
const {
|
|
219
|
+
const {srcEvent} = event;
|
|
210
220
|
const screenCoords = this.getScreenCoords(srcEvent) as [number, number];
|
|
211
221
|
const mapCoords = this.getMapCoords(screenCoords);
|
|
212
222
|
|
|
213
|
-
const {
|
|
223
|
+
const {pointerDownPicks, pointerDownScreenCoords, pointerDownMapCoords} =
|
|
214
224
|
this.state._editableLayerState;
|
|
215
225
|
|
|
216
226
|
const picks = this.getPicks(screenCoords);
|
|
@@ -223,17 +233,17 @@ export default abstract class EditableLayer<
|
|
|
223
233
|
pointerDownScreenCoords,
|
|
224
234
|
pointerDownMapCoords,
|
|
225
235
|
sourceEvent: srcEvent,
|
|
226
|
-
cancelPan: event.stopImmediatePropagation
|
|
236
|
+
cancelPan: event.stopImmediatePropagation
|
|
227
237
|
});
|
|
228
238
|
}
|
|
229
239
|
|
|
230
240
|
getPicks(screenCoords: [number, number]) {
|
|
231
|
-
return this.context.deck
|
|
241
|
+
return this.context.deck.pickMultipleObjects({
|
|
232
242
|
x: screenCoords[0],
|
|
233
243
|
y: screenCoords[1],
|
|
234
244
|
layerIds: [this.props.id],
|
|
235
245
|
radius: this.props.pickingRadius,
|
|
236
|
-
depth: this.props.pickingDepth
|
|
246
|
+
depth: this.props.pickingDepth
|
|
237
247
|
});
|
|
238
248
|
}
|
|
239
249
|
|
|
@@ -242,7 +252,7 @@ export default abstract class EditableLayer<
|
|
|
242
252
|
pointerEvent.clientX -
|
|
243
253
|
(this.context.gl.canvas as HTMLCanvasElement).getBoundingClientRect().left,
|
|
244
254
|
pointerEvent.clientY -
|
|
245
|
-
(this.context.gl.canvas as HTMLCanvasElement).getBoundingClientRect().top
|
|
255
|
+
(this.context.gl.canvas as HTMLCanvasElement).getBoundingClientRect().top
|
|
246
256
|
];
|
|
247
257
|
}
|
|
248
258
|
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
// deck.gl-community
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
2
4
|
|
|
3
|
-
import {
|
|
5
|
+
import {PathLayer, PathLayerProps} from '@deck.gl/layers';
|
|
6
|
+
|
|
7
|
+
import {insertBefore} from '../utils/utils';
|
|
4
8
|
|
|
5
9
|
interface EditablePathLayerProps extends PathLayerProps<any> {
|
|
6
10
|
pickingLineWidthExtraPixels?: number;
|
|
@@ -8,10 +12,10 @@ interface EditablePathLayerProps extends PathLayerProps<any> {
|
|
|
8
12
|
|
|
9
13
|
const defaultProps = {
|
|
10
14
|
...PathLayer.defaultProps,
|
|
11
|
-
pickingLineWidthExtraPixels: {
|
|
15
|
+
pickingLineWidthExtraPixels: {type: 'number', min: 0, value: Number.MAX_SAFE_INTEGER}
|
|
12
16
|
};
|
|
13
17
|
|
|
14
|
-
export
|
|
18
|
+
export class EditablePathLayer extends PathLayer<any, EditablePathLayerProps> {
|
|
15
19
|
getShaders() {
|
|
16
20
|
const shaders = super.getShaders();
|
|
17
21
|
|
|
@@ -31,8 +35,8 @@ export default class EditablePathLayer extends PathLayer<any, EditablePathLayerP
|
|
|
31
35
|
...(shaders.inject || {}),
|
|
32
36
|
'vs:#decl': (shaders.inject?.['vs:#decl'] || '').concat(
|
|
33
37
|
'uniform float pickingLineWidthExtraPixels;'
|
|
34
|
-
)
|
|
35
|
-
}
|
|
38
|
+
)
|
|
39
|
+
}
|
|
36
40
|
};
|
|
37
41
|
}
|
|
38
42
|
|
|
@@ -41,8 +45,8 @@ export default class EditablePathLayer extends PathLayer<any, EditablePathLayerP
|
|
|
41
45
|
...props,
|
|
42
46
|
uniforms: {
|
|
43
47
|
...props.uniforms,
|
|
44
|
-
pickingLineWidthExtraPixels: this.props.pickingLineWidthExtraPixels
|
|
45
|
-
}
|
|
48
|
+
pickingLineWidthExtraPixels: this.props.pickingLineWidthExtraPixels
|
|
49
|
+
}
|
|
46
50
|
});
|
|
47
51
|
}
|
|
48
52
|
}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
+
// deck.gl-community
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
1
5
|
/* eslint-env browser */
|
|
2
6
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
7
|
+
import {CompositeLayer} from '@deck.gl/core';
|
|
8
|
+
import {ScatterplotLayer, LineLayer} from '@deck.gl/layers';
|
|
5
9
|
|
|
6
10
|
const defaultProps = {};
|
|
7
11
|
|
|
8
|
-
export
|
|
12
|
+
export class ElevatedEditHandleLayer extends CompositeLayer<any> {
|
|
9
13
|
static layerName = 'ElevatedEditHandleLayer';
|
|
10
14
|
static defaultProps = defaultProps;
|
|
11
15
|
renderLayers() {
|
|
12
16
|
const handles = new ScatterplotLayer(
|
|
13
17
|
Object.assign({}, this.props, {
|
|
14
18
|
id: `${this.props.id}-ScatterplotLayer`,
|
|
15
|
-
data: this.props.data
|
|
19
|
+
data: this.props.data
|
|
16
20
|
})
|
|
17
21
|
);
|
|
18
22
|
|
|
@@ -21,10 +25,10 @@ export default class ElevatedEditHandleLayer extends CompositeLayer<any> {
|
|
|
21
25
|
id: `${this.props.id}-LineLayer`,
|
|
22
26
|
data: this.props.data,
|
|
23
27
|
pickable: false,
|
|
24
|
-
getSourcePosition: ({
|
|
25
|
-
getTargetPosition: ({
|
|
28
|
+
getSourcePosition: ({position}) => [position[0], position[1], 0],
|
|
29
|
+
getTargetPosition: ({position}) => [position[0], position[1], position[2] || 0],
|
|
26
30
|
getColor: [150, 150, 150, 200],
|
|
27
|
-
getStrokeWidth: 3
|
|
31
|
+
getStrokeWidth: 3
|
|
28
32
|
})
|
|
29
33
|
);
|
|
30
34
|
|