@deck.gl-community/editable-layers 9.0.3 → 9.1.0-beta.2

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.
Files changed (99) hide show
  1. package/dist/edit-modes/delete-mode.d.ts +7 -0
  2. package/dist/edit-modes/delete-mode.d.ts.map +1 -0
  3. package/dist/edit-modes/delete-mode.js +22 -0
  4. package/dist/edit-modes/draw-circle-by-diameter-mode.d.ts.map +1 -1
  5. package/dist/edit-modes/draw-circle-by-diameter-mode.js +4 -0
  6. package/dist/edit-modes/draw-circle-from-center-mode.d.ts.map +1 -1
  7. package/dist/edit-modes/draw-circle-from-center-mode.js +4 -0
  8. package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.d.ts.map +1 -1
  9. package/dist/edit-modes/draw-ellipse-by-bounding-box-mode.js +9 -1
  10. package/dist/edit-modes/draw-ellipse-using-three-points-mode.d.ts.map +1 -1
  11. package/dist/edit-modes/draw-ellipse-using-three-points-mode.js +10 -1
  12. package/dist/edit-modes/extend-line-string-mode.d.ts.map +1 -1
  13. package/dist/edit-modes/extend-line-string-mode.js +3 -0
  14. package/dist/edit-modes/extrude-mode.d.ts.map +1 -1
  15. package/dist/edit-modes/extrude-mode.js +4 -1
  16. package/dist/edit-modes/geojson-edit-mode.d.ts +2 -2
  17. package/dist/edit-modes/geojson-edit-mode.d.ts.map +1 -1
  18. package/dist/edit-modes/geojson-edit-mode.js +7 -4
  19. package/dist/edit-modes/measure-distance-mode.d.ts.map +1 -1
  20. package/dist/edit-modes/modify-mode.d.ts.map +1 -1
  21. package/dist/edit-modes/modify-mode.js +4 -1
  22. package/dist/edit-modes/resize-circle-mode.d.ts.map +1 -1
  23. package/dist/edit-modes/resize-circle-mode.js +1 -0
  24. package/dist/edit-modes/rotate-mode.d.ts.map +1 -1
  25. package/dist/edit-modes/rotate-mode.js +2 -1
  26. package/dist/edit-modes/scale-mode.d.ts.map +1 -1
  27. package/dist/edit-modes/scale-mode.js +2 -1
  28. package/dist/edit-modes/split-polygon-mode.d.ts.map +1 -1
  29. package/dist/edit-modes/three-click-polygon-mode.d.ts.map +1 -1
  30. package/dist/edit-modes/three-click-polygon-mode.js +3 -1
  31. package/dist/edit-modes/transform-mode.d.ts.map +1 -1
  32. package/dist/edit-modes/transform-mode.js +3 -0
  33. package/dist/edit-modes/translate-mode.d.ts.map +1 -1
  34. package/dist/edit-modes/translate-mode.js +2 -1
  35. package/dist/edit-modes/two-click-polygon-mode.d.ts.map +1 -1
  36. package/dist/edit-modes/two-click-polygon-mode.js +3 -4
  37. package/dist/edit-modes/types.d.ts +1 -0
  38. package/dist/edit-modes/types.d.ts.map +1 -1
  39. package/dist/edit-modes/utils.d.ts +3 -2
  40. package/dist/edit-modes/utils.d.ts.map +1 -1
  41. package/dist/edit-modes/utils.js +4 -1
  42. package/dist/editable-layers/editable-geojson-layer.d.ts +4 -4
  43. package/dist/editable-layers/editable-geojson-layer.d.ts.map +1 -1
  44. package/dist/editable-layers/editable-geojson-layer.js +2 -0
  45. package/dist/editable-layers/editable-h3-cluster-layer.d.ts +1 -1
  46. package/dist/editable-layers/editable-h3-cluster-layer.d.ts.map +1 -1
  47. package/dist/editable-layers/editable-h3-cluster-layer.js +0 -1
  48. package/dist/editable-layers/editable-layer.d.ts +4 -2
  49. package/dist/editable-layers/editable-layer.d.ts.map +1 -1
  50. package/dist/editable-layers/editable-layer.js +8 -4
  51. package/dist/editable-layers/editable-path-layer.d.ts +13 -1
  52. package/dist/editable-layers/editable-path-layer.d.ts.map +1 -1
  53. package/dist/editable-layers/editable-path-layer.js +20 -12
  54. package/dist/editable-layers/junction-scatterplot-layer.d.ts +4 -2
  55. package/dist/editable-layers/junction-scatterplot-layer.d.ts.map +1 -1
  56. package/dist/editable-layers/selection-layer.d.ts +2 -1
  57. package/dist/editable-layers/selection-layer.d.ts.map +1 -1
  58. package/dist/editable-layers/selection-layer.js +0 -1
  59. package/dist/index.cjs +122 -40
  60. package/dist/index.cjs.map +4 -4
  61. package/dist/index.d.ts +1 -0
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/mode-handlers/split-polygon-handler.d.ts.map +1 -1
  64. package/dist/shaderlib/color/color.d.ts +12 -2
  65. package/dist/shaderlib/color/color.d.ts.map +1 -1
  66. package/dist/shaderlib/color/color.js +25 -18
  67. package/dist/utils/utils.js +1 -1
  68. package/package.json +11 -11
  69. package/src/edit-modes/delete-mode.ts +28 -0
  70. package/src/edit-modes/draw-circle-by-diameter-mode.ts +4 -0
  71. package/src/edit-modes/draw-circle-from-center-mode.ts +4 -0
  72. package/src/edit-modes/draw-ellipse-by-bounding-box-mode.ts +10 -1
  73. package/src/edit-modes/draw-ellipse-using-three-points-mode.ts +11 -1
  74. package/src/edit-modes/extend-line-string-mode.ts +4 -0
  75. package/src/edit-modes/extrude-mode.ts +6 -1
  76. package/src/edit-modes/geojson-edit-mode.ts +9 -4
  77. package/src/edit-modes/measure-distance-mode.ts +1 -1
  78. package/src/edit-modes/modify-mode.ts +6 -1
  79. package/src/edit-modes/resize-circle-mode.ts +1 -0
  80. package/src/edit-modes/rotate-mode.ts +2 -1
  81. package/src/edit-modes/scale-mode.ts +2 -1
  82. package/src/edit-modes/split-polygon-mode.ts +4 -2
  83. package/src/edit-modes/three-click-polygon-mode.ts +7 -1
  84. package/src/edit-modes/transform-mode.ts +4 -0
  85. package/src/edit-modes/translate-mode.ts +4 -2
  86. package/src/edit-modes/two-click-polygon-mode.ts +3 -4
  87. package/src/edit-modes/types.ts +1 -0
  88. package/src/edit-modes/utils.ts +8 -3
  89. package/src/editable-layers/editable-geojson-layer.ts +6 -4
  90. package/src/editable-layers/editable-h3-cluster-layer.ts +1 -1
  91. package/src/editable-layers/editable-layer.ts +12 -4
  92. package/src/editable-layers/editable-path-layer.ts +29 -15
  93. package/src/editable-layers/junction-scatterplot-layer.ts +4 -2
  94. package/src/editable-layers/selection-layer.ts +2 -1
  95. package/src/index.ts +2 -0
  96. package/src/mode-handlers/split-polygon-handler.ts +2 -1
  97. package/src/shaderlib/color/color.ts +34 -20
  98. package/src/utils/translate-from-center.ts +1 -1
  99. package/src/utils/utils.ts +1 -1
@@ -4,7 +4,8 @@
4
4
 
5
5
  /* eslint-env browser */
6
6
 
7
- import {CompositeLayer, CompositeLayerProps} from '@deck.gl/core';
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 = ['anyclick', 'pointermove', 'panstart', 'panmove', 'panend', 'keyup'];
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
- _onanyclick({srcEvent}: any) {
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: event.stopImmediatePropagation,
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 {PathLayer, PathLayerProps} from '@deck.gl/layers';
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 += pickingLineWidthExtraPixels;
48
+ widthPixels.xy += pickingLineWidth.extraPixels;
28
49
  }
29
50
  `
30
51
  );
31
52
 
32
53
  return {
33
54
  ...shaders,
34
- inject: {
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
- super.draw({
45
- ...props,
46
- uniforms: {
47
- ...props.uniforms,
48
- pickingLineWidthExtraPixels: this.props.pickingLineWidthExtraPixels
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 {CompositeLayer, CompositeLayerProps, DefaultProps} from '@deck.gl/core';
6
- import {ScatterplotLayer, ScatterplotLayerProps} from '@deck.gl/layers';
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 {CompositeLayer, CompositeLayerProps, DefaultProps} from '@deck.gl/core';
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 nearestPointOnLine, {NearestPointOnLine} from '@turf/nearest-point-on-line';
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
- /* eslint-disable camelcase */
8
- const INITIAL_STATE: Record<string, number> = {
9
- color_uOpacity: 1.0,
10
- color_uDesaturate: 0.0,
11
- color_uBrightness: 1.0
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
- const uniforms: Record<string, number> = {};
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
- uniform float color_uOpacity;
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 color) {
50
+ vec4 color_filterColor(vec4 inputColor) {
51
+ vec4 color = inputColor;
44
52
  // apply desaturation and brightness
45
- if (color_uDesaturate > 0.01) {
46
- float luminance = (color.r + color.g + color.b) * 0.333333333 + color_uBrightness;
47
- color = vec4(mix(color.rgb, vec3(luminance), color_uDesaturate), color.a);
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 * color_uOpacity);
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
- } as const satisfies ShaderModule;
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
@@ -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