@deck.gl-community/editable-layers 9.0.3 → 9.1.0-beta.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/dist/edit-modes/delete-mode.d.ts +7 -0
- package/dist/edit-modes/delete-mode.d.ts.map +1 -0
- package/dist/edit-modes/delete-mode.js +22 -0
- package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-circle-by-diameter-mode.js +4 -0
- package/dist/edit-modes/draw-circle-from-center-mode.d.ts.map +1 -1
- package/dist/edit-modes/draw-circle-from-center-mode.js +4 -0
- 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 +9 -1
- 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 +10 -1
- package/dist/edit-modes/extend-line-string-mode.d.ts.map +1 -1
- package/dist/edit-modes/extend-line-string-mode.js +3 -0
- package/dist/edit-modes/extrude-mode.d.ts.map +1 -1
- package/dist/edit-modes/extrude-mode.js +4 -1
- package/dist/edit-modes/geojson-edit-mode.d.ts +2 -2
- package/dist/edit-modes/geojson-edit-mode.d.ts.map +1 -1
- package/dist/edit-modes/geojson-edit-mode.js +7 -4
- package/dist/edit-modes/measure-distance-mode.d.ts.map +1 -1
- package/dist/edit-modes/modify-mode.d.ts.map +1 -1
- package/dist/edit-modes/modify-mode.js +4 -1
- package/dist/edit-modes/resize-circle-mode.d.ts.map +1 -1
- package/dist/edit-modes/resize-circle-mode.js +1 -0
- package/dist/edit-modes/rotate-mode.d.ts.map +1 -1
- package/dist/edit-modes/rotate-mode.js +2 -1
- package/dist/edit-modes/scale-mode.d.ts.map +1 -1
- package/dist/edit-modes/scale-mode.js +2 -1
- package/dist/edit-modes/split-polygon-mode.d.ts.map +1 -1
- package/dist/edit-modes/three-click-polygon-mode.d.ts.map +1 -1
- package/dist/edit-modes/three-click-polygon-mode.js +3 -1
- package/dist/edit-modes/transform-mode.d.ts.map +1 -1
- package/dist/edit-modes/transform-mode.js +3 -0
- package/dist/edit-modes/translate-mode.d.ts.map +1 -1
- package/dist/edit-modes/translate-mode.js +2 -1
- package/dist/edit-modes/two-click-polygon-mode.d.ts.map +1 -1
- package/dist/edit-modes/two-click-polygon-mode.js +3 -4
- package/dist/edit-modes/types.d.ts +1 -0
- package/dist/edit-modes/types.d.ts.map +1 -1
- package/dist/edit-modes/utils.d.ts +3 -2
- package/dist/edit-modes/utils.d.ts.map +1 -1
- package/dist/edit-modes/utils.js +4 -1
- package/dist/editable-layers/editable-geojson-layer.d.ts +4 -4
- package/dist/editable-layers/editable-geojson-layer.d.ts.map +1 -1
- package/dist/editable-layers/editable-geojson-layer.js +2 -0
- package/dist/editable-layers/editable-h3-cluster-layer.d.ts +1 -1
- package/dist/editable-layers/editable-h3-cluster-layer.d.ts.map +1 -1
- package/dist/editable-layers/editable-h3-cluster-layer.js +0 -1
- package/dist/editable-layers/editable-layer.d.ts +4 -2
- package/dist/editable-layers/editable-layer.d.ts.map +1 -1
- package/dist/editable-layers/editable-layer.js +8 -4
- package/dist/editable-layers/editable-path-layer.d.ts +13 -1
- package/dist/editable-layers/editable-path-layer.d.ts.map +1 -1
- package/dist/editable-layers/editable-path-layer.js +20 -12
- package/dist/editable-layers/junction-scatterplot-layer.d.ts +4 -2
- package/dist/editable-layers/junction-scatterplot-layer.d.ts.map +1 -1
- package/dist/editable-layers/selection-layer.d.ts +2 -1
- package/dist/editable-layers/selection-layer.d.ts.map +1 -1
- package/dist/editable-layers/selection-layer.js +0 -1
- package/dist/index.cjs +122 -40
- package/dist/index.cjs.map +4 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/mode-handlers/split-polygon-handler.d.ts.map +1 -1
- package/dist/shaderlib/color/color.d.ts +12 -2
- package/dist/shaderlib/color/color.d.ts.map +1 -1
- package/dist/shaderlib/color/color.js +25 -18
- package/dist/utils/utils.js +1 -1
- package/package.json +11 -11
- package/src/edit-modes/delete-mode.ts +28 -0
- package/src/edit-modes/draw-circle-by-diameter-mode.ts +4 -0
- package/src/edit-modes/draw-circle-from-center-mode.ts +4 -0
- package/src/edit-modes/draw-ellipse-by-bounding-box-mode.ts +10 -1
- package/src/edit-modes/draw-ellipse-using-three-points-mode.ts +11 -1
- package/src/edit-modes/extend-line-string-mode.ts +4 -0
- package/src/edit-modes/extrude-mode.ts +6 -1
- package/src/edit-modes/geojson-edit-mode.ts +9 -4
- package/src/edit-modes/measure-distance-mode.ts +1 -1
- package/src/edit-modes/modify-mode.ts +6 -1
- package/src/edit-modes/resize-circle-mode.ts +1 -0
- package/src/edit-modes/rotate-mode.ts +2 -1
- package/src/edit-modes/scale-mode.ts +2 -1
- package/src/edit-modes/split-polygon-mode.ts +4 -2
- package/src/edit-modes/three-click-polygon-mode.ts +7 -1
- package/src/edit-modes/transform-mode.ts +4 -0
- package/src/edit-modes/translate-mode.ts +4 -2
- package/src/edit-modes/two-click-polygon-mode.ts +3 -4
- package/src/edit-modes/types.ts +1 -0
- package/src/edit-modes/utils.ts +8 -3
- package/src/editable-layers/editable-geojson-layer.ts +6 -4
- package/src/editable-layers/editable-h3-cluster-layer.ts +1 -1
- package/src/editable-layers/editable-layer.ts +12 -4
- package/src/editable-layers/editable-path-layer.ts +29 -15
- package/src/editable-layers/junction-scatterplot-layer.ts +4 -2
- package/src/editable-layers/selection-layer.ts +2 -1
- package/src/index.ts +2 -0
- package/src/mode-handlers/split-polygon-handler.ts +2 -1
- package/src/shaderlib/color/color.ts +34 -20
- package/src/utils/translate-from-center.ts +1 -1
- package/src/utils/utils.ts +1 -1
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
/* eslint-env browser */
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import type {CompositeLayerProps} from '@deck.gl/core';
|
|
8
|
+
import {CompositeLayer} from '@deck.gl/core';
|
|
8
9
|
import {
|
|
9
10
|
DraggingEvent,
|
|
10
11
|
ClickEvent,
|
|
@@ -14,12 +15,13 @@ import {
|
|
|
14
15
|
} from '../edit-modes/types';
|
|
15
16
|
import {Position} from '../utils/geojson-types';
|
|
16
17
|
|
|
17
|
-
const EVENT_TYPES = ['
|
|
18
|
+
const EVENT_TYPES = ['click', 'pointermove', 'panstart', 'panmove', 'panend', 'keyup'];
|
|
18
19
|
|
|
19
20
|
// TODO(v9): remove generic layer
|
|
20
21
|
export type EditableLayerProps<DataType = any> = CompositeLayerProps & {
|
|
21
22
|
pickingRadius?: number;
|
|
22
23
|
pickingDepth?: number;
|
|
24
|
+
onCancelPan?: () => void;
|
|
23
25
|
};
|
|
24
26
|
|
|
25
27
|
export abstract class EditableLayer<
|
|
@@ -116,7 +118,7 @@ export abstract class EditableLayer<
|
|
|
116
118
|
func(event);
|
|
117
119
|
}
|
|
118
120
|
|
|
119
|
-
|
|
121
|
+
_onclick({srcEvent}: any) {
|
|
120
122
|
const screenCoords = this.getScreenCoords(srcEvent) as [number, number];
|
|
121
123
|
const mapCoords = this.getMapCoords(screenCoords);
|
|
122
124
|
|
|
@@ -154,7 +156,13 @@ export abstract class EditableLayer<
|
|
|
154
156
|
mapCoords,
|
|
155
157
|
pointerDownScreenCoords: screenCoords,
|
|
156
158
|
pointerDownMapCoords: mapCoords,
|
|
157
|
-
cancelPan:
|
|
159
|
+
cancelPan: () => {
|
|
160
|
+
if (this.props.onCancelPan) {
|
|
161
|
+
this.props.onCancelPan();
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
event.stopImmediatePropagation();
|
|
165
|
+
},
|
|
158
166
|
sourceEvent: event.srcEvent
|
|
159
167
|
});
|
|
160
168
|
}
|
|
@@ -2,10 +2,31 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import type {PathLayerProps} from '@deck.gl/layers';
|
|
6
|
+
import {PathLayer} from '@deck.gl/layers';
|
|
7
|
+
import type {ShaderModule} from '@luma.gl/shadertools';
|
|
6
8
|
|
|
7
9
|
import {insertBefore} from '../utils/utils';
|
|
8
10
|
|
|
11
|
+
const uniformBlock = `\
|
|
12
|
+
uniform pickingLineWidthUniforms {
|
|
13
|
+
float extraPixels;
|
|
14
|
+
} pickingLineWidth;
|
|
15
|
+
`;
|
|
16
|
+
|
|
17
|
+
export type PickingLineWidthProps = {
|
|
18
|
+
extraPixels: number;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const pickingUniforms = {
|
|
22
|
+
name: 'pickingLineWidth',
|
|
23
|
+
vs: uniformBlock,
|
|
24
|
+
fs: uniformBlock,
|
|
25
|
+
uniformTypes: {
|
|
26
|
+
extraPixels: 'f32'
|
|
27
|
+
}
|
|
28
|
+
} as const satisfies ShaderModule<PickingLineWidthProps>;
|
|
29
|
+
|
|
9
30
|
interface EditablePathLayerProps extends PathLayerProps<any> {
|
|
10
31
|
pickingLineWidthExtraPixels?: number;
|
|
11
32
|
}
|
|
@@ -24,30 +45,23 @@ export class EditablePathLayer extends PathLayer<any, EditablePathLayerProps> {
|
|
|
24
45
|
'vec3 width;',
|
|
25
46
|
`
|
|
26
47
|
if(bool(picking.isActive)){
|
|
27
|
-
widthPixels.xy +=
|
|
48
|
+
widthPixels.xy += pickingLineWidth.extraPixels;
|
|
28
49
|
}
|
|
29
50
|
`
|
|
30
51
|
);
|
|
31
52
|
|
|
32
53
|
return {
|
|
33
54
|
...shaders,
|
|
34
|
-
|
|
35
|
-
...(shaders.inject || {}),
|
|
36
|
-
'vs:#decl': (shaders.inject?.['vs:#decl'] || '').concat(
|
|
37
|
-
'uniform float pickingLineWidthExtraPixels;'
|
|
38
|
-
)
|
|
39
|
-
}
|
|
55
|
+
modules: [...shaders.modules, pickingUniforms]
|
|
40
56
|
};
|
|
41
57
|
}
|
|
42
58
|
|
|
43
59
|
draw(props) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
});
|
|
60
|
+
const {pickingLineWidthExtraPixels} = this.props;
|
|
61
|
+
const pickingProps: PickingLineWidthProps = {extraPixels: pickingLineWidthExtraPixels};
|
|
62
|
+
const model = this.state.model;
|
|
63
|
+
model.shaderInputs.setProps({pickingLineWidth: pickingProps});
|
|
64
|
+
super.draw(props);
|
|
51
65
|
}
|
|
52
66
|
}
|
|
53
67
|
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import type {CompositeLayerProps, DefaultProps} from '@deck.gl/core';
|
|
6
|
+
import {CompositeLayer} from '@deck.gl/core';
|
|
7
|
+
import type {ScatterplotLayerProps} from '@deck.gl/layers';
|
|
8
|
+
import {ScatterplotLayer} from '@deck.gl/layers';
|
|
7
9
|
|
|
8
10
|
import {Color} from '../utils/types';
|
|
9
11
|
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
/* eslint-env browser */
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import type {CompositeLayerProps, DefaultProps} from '@deck.gl/core';
|
|
8
|
+
import {CompositeLayer} from '@deck.gl/core';
|
|
8
9
|
import {PolygonLayer} from '@deck.gl/layers';
|
|
9
10
|
import {polygon} from '@turf/helpers';
|
|
10
11
|
import turfBuffer from '@turf/buffer';
|
package/src/index.ts
CHANGED
|
@@ -44,6 +44,8 @@ export type {EditMode} from './edit-modes/edit-mode';
|
|
|
44
44
|
export type {GeoJsonEditModeType} from './edit-modes/geojson-edit-mode';
|
|
45
45
|
export type {GeoJsonEditModeConstructor} from './edit-modes/geojson-edit-mode';
|
|
46
46
|
|
|
47
|
+
export type {EditableGeoJsonLayerProps} from './editable-layers/editable-geojson-layer';
|
|
48
|
+
|
|
47
49
|
export {GeoJsonEditMode} from './edit-modes/geojson-edit-mode';
|
|
48
50
|
|
|
49
51
|
// Alter modes
|
|
@@ -11,7 +11,8 @@ import turfBearing from '@turf/bearing';
|
|
|
11
11
|
import turfDistance from '@turf/distance';
|
|
12
12
|
import turfDestination from '@turf/destination';
|
|
13
13
|
import turfPolygonToLine from '@turf/polygon-to-line';
|
|
14
|
-
import
|
|
14
|
+
import type {NearestPointOnLine} from '@turf/nearest-point-on-line';
|
|
15
|
+
import nearestPointOnLine from '@turf/nearest-point-on-line';
|
|
15
16
|
import {generatePointsParallelToLinePoints} from '../utils/utils';
|
|
16
17
|
import {EditAction, ModeHandler} from './mode-handler';
|
|
17
18
|
import {ClickEvent, PointerMoveEvent} from '../edit-modes/types';
|
|
@@ -4,19 +4,28 @@
|
|
|
4
4
|
|
|
5
5
|
import type {ShaderModule} from '@luma.gl/shadertools';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
const uniformBlock = `\
|
|
8
|
+
uniform colorUniforms {
|
|
9
|
+
float opacity;
|
|
10
|
+
float desaturate;
|
|
11
|
+
float brightness;
|
|
12
|
+
} color;
|
|
13
|
+
`;
|
|
14
|
+
|
|
15
|
+
export type ColorProps = {
|
|
16
|
+
opacity: number;
|
|
17
|
+
desaturate: number;
|
|
18
|
+
brightness: number;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const INITIAL_STATE: ColorProps = {
|
|
22
|
+
opacity: 1.0,
|
|
23
|
+
desaturate: 0.0,
|
|
24
|
+
brightness: 1.0
|
|
12
25
|
};
|
|
13
26
|
|
|
14
27
|
function getUniforms(opts = INITIAL_STATE) {
|
|
15
|
-
|
|
16
|
-
if (opts.opacity) {
|
|
17
|
-
uniforms.color_uOpacity = opts.opacity;
|
|
18
|
-
}
|
|
19
|
-
return uniforms;
|
|
28
|
+
return opts;
|
|
20
29
|
}
|
|
21
30
|
|
|
22
31
|
const vs = `\
|
|
@@ -28,9 +37,7 @@ color_setColor(vec4 color) {
|
|
|
28
37
|
`;
|
|
29
38
|
|
|
30
39
|
const fs = `\
|
|
31
|
-
|
|
32
|
-
uniform float color_uDesaturate;
|
|
33
|
-
uniform float color_uBrightness;
|
|
40
|
+
${uniformBlock}
|
|
34
41
|
|
|
35
42
|
in vec4 color_vColor;
|
|
36
43
|
|
|
@@ -40,14 +47,16 @@ vec4 color_getColor() {
|
|
|
40
47
|
return color_vColor;
|
|
41
48
|
}
|
|
42
49
|
|
|
43
|
-
vec4 color_filterColor(vec4
|
|
50
|
+
vec4 color_filterColor(vec4 inputColor) {
|
|
51
|
+
vec4 color = inputColor;
|
|
44
52
|
// apply desaturation and brightness
|
|
45
|
-
if (
|
|
46
|
-
float luminance = (color.r + color.g + color.b) * 0.333333333 +
|
|
47
|
-
color = vec4(mix(color.rgb, vec3(luminance),
|
|
53
|
+
if (color.desaturate > 0.01) {
|
|
54
|
+
float luminance = (color.r + color.g + color.b) * 0.333333333 + color.brightness;
|
|
55
|
+
color = vec4(mix(color.rgb, vec3(luminance), color.desaturate), color.a);
|
|
56
|
+
}
|
|
48
57
|
|
|
49
58
|
// Apply opacity
|
|
50
|
-
color = vec4(color.rgb, color.a *
|
|
59
|
+
color = vec4(color.rgb, color.a * color.opacity);
|
|
51
60
|
return color;
|
|
52
61
|
}
|
|
53
62
|
`;
|
|
@@ -57,5 +66,10 @@ export const color = {
|
|
|
57
66
|
name: 'color',
|
|
58
67
|
vs,
|
|
59
68
|
fs,
|
|
60
|
-
getUniforms
|
|
61
|
-
|
|
69
|
+
getUniforms,
|
|
70
|
+
uniformTypes: {
|
|
71
|
+
opacity: 'f32',
|
|
72
|
+
desaturate: 'f32',
|
|
73
|
+
brightness: 'f32'
|
|
74
|
+
}
|
|
75
|
+
} as const satisfies ShaderModule<ColorProps>;
|
|
@@ -12,7 +12,7 @@ import type {
|
|
|
12
12
|
Geometry as TurfGeometry
|
|
13
13
|
} from '@turf/helpers';
|
|
14
14
|
import {mapCoords} from '../edit-modes/utils';
|
|
15
|
-
import type {AnyCoordinates, Position} from './geojson-types';
|
|
15
|
+
import type {AnyCoordinates /* , Position */} from './geojson-types';
|
|
16
16
|
|
|
17
17
|
// This function takes feature's center, moves it,
|
|
18
18
|
// and builds new feature around it keeping the proportions
|
package/src/utils/utils.ts
CHANGED
|
@@ -6,7 +6,7 @@ import destination from '@turf/destination';
|
|
|
6
6
|
import bearing from '@turf/bearing';
|
|
7
7
|
import pointToLineDistance from '@turf/point-to-line-distance';
|
|
8
8
|
import {point} from '@turf/helpers';
|
|
9
|
-
import WebMercatorViewport from 'viewport-mercator-project';
|
|
9
|
+
import {WebMercatorViewport} from 'viewport-mercator-project';
|
|
10
10
|
import {FeatureOf, FeatureWithProps, LineString, Point, Position} from './geojson-types';
|
|
11
11
|
import {Viewport} from './types';
|
|
12
12
|
|