terra-draw 1.0.0 → 1.2.0

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 (37) hide show
  1. package/README.md +33 -4
  2. package/dist/common.d.ts +1 -0
  3. package/dist/geometry/boolean/right-hand-rule.d.ts +7 -0
  4. package/dist/geometry/boolean/right-hand-rule.spec.d.ts +1 -0
  5. package/dist/geometry/ensure-right-hand-rule.d.ts +2 -0
  6. package/dist/geometry/ensure-right-hand-rule.spec.d.ts +1 -0
  7. package/dist/geometry/point-on-line.d.ts +1 -0
  8. package/dist/geometry/web-mercator-point-on-line.d.ts +1 -0
  9. package/dist/modes/angled-rectangle/angled-rectangle.mode.d.ts +2 -1
  10. package/dist/modes/base.mode.d.ts +10 -9
  11. package/dist/modes/circle/circle.mode.d.ts +2 -1
  12. package/dist/modes/coordinate-snapping.behavior.d.ts +7 -2
  13. package/dist/modes/freehand/freehand.mode.d.ts +2 -1
  14. package/dist/modes/line-snapping.behavior.d.ts +7 -2
  15. package/dist/modes/linestring/linestring.mode.d.ts +19 -4
  16. package/dist/modes/point/point.mode.d.ts +21 -5
  17. package/dist/modes/polygon/polygon.mode.d.ts +23 -7
  18. package/dist/modes/rectangle/rectangle.mode.d.ts +2 -1
  19. package/dist/modes/render/render.mode.d.ts +2 -1
  20. package/dist/modes/sector/sector.mode.d.ts +2 -1
  21. package/dist/modes/select/select.mode.d.ts +4 -3
  22. package/dist/modes/sensor/sensor.mode.d.ts +2 -1
  23. package/dist/modes/static/static.mode.d.ts +1 -1
  24. package/dist/store/store.d.ts +1 -0
  25. package/dist/terra-draw.cjs +1 -1
  26. package/dist/terra-draw.cjs.map +1 -1
  27. package/dist/terra-draw.d.ts +25 -40
  28. package/dist/terra-draw.modern.js +1 -1
  29. package/dist/terra-draw.modern.js.map +1 -1
  30. package/dist/terra-draw.module.js +1 -1
  31. package/dist/terra-draw.module.js.map +1 -1
  32. package/dist/terra-draw.umd.js +1 -1
  33. package/dist/terra-draw.umd.js.map +1 -1
  34. package/package.json +3 -3
  35. package/dist/test/jest.matchers.d.ts +0 -1
  36. package/dist/test/mock-callbacks.d.ts +0 -2
  37. package/dist/test/mock-pointer-event.d.ts +0 -1
package/README.md CHANGED
@@ -1,7 +1,36 @@
1
- # Terra Draw
1
+ <picture>
2
+ <source media="(prefers-color-scheme: dark)" srcset="./assets/logo-dark-mode.png">
3
+ <source media="(prefers-color-scheme: light)" srcset="./assets/logo.png">
4
+ <img alt="Terra Draw logo" src="./assets/logo.png" width="400px">
5
+ </picture>
2
6
 
3
- This package is the core package for Terra Draw. You can read more context about what Terra Draw is in [the root level README](../../README.md) and more information on how to get started in the [GUIDES section of the Terra Draw monorepo](../../guides/1.GETTING_STARTED.md).
7
+ <p></p>
4
8
 
5
- ## License
9
+ ![Terra Draw CI Badge](https://github.com/JamesLMilner/terra-draw/actions/workflows/ci.yml/badge.svg)
10
+ [![npm version](https://badge.fury.io/js/terra-draw.svg)](https://badge.fury.io/js/terra-draw)
6
11
 
7
- [MIT](../../LICENSE)
12
+ Frictionless map drawing across mapping libraries.
13
+
14
+ Terra Draw centralizes map drawing logic and provides a host of out-of-the-box drawing modes that work across different JavaScript mapping libraries. It also allows you to bring your own modes!
15
+
16
+ ### Supported Mapping Libraries
17
+
18
+ Terra Draw works with your mapping library of choice via adapters. Please pick the adapter for the mapping library you are working with:
19
+
20
+ * [terra-draw-maplibre-gl-js-adapter](https://www.npmjs.com/package/terra-draw-maplibre-gl-js-adapter)
21
+ * [terra-draw-leaflet-adapter](https://www.npmjs.com/package/terra-draw-leaflet-adapter)
22
+ * [terra-draw-google-maps-adapter](https://www.npmjs.com/package/terra-draw-googl-emaps-adapter)
23
+ * [terra-draw-mapbox-gl-js-adapter](https://www.npmjs.com/package/terra-draw-mapbox-gl-js-adapter)
24
+ * [terra-draw-google-maps-adapter](https://www.npmjs.com/package/terra-draw-google-maps-adapter)
25
+ * [terra-draw-arcgis-adapter](https://www.npmjs.com/package/terra-draw-arcgis-adapter)
26
+
27
+ ### Getting Started
28
+
29
+ * [Getting started guide](https://github.com/JamesLMilner/terra-draw/blob/main/guides/1.GETTING_STARTED.md)
30
+ * [API Docs](https://terradraw.io/#/api)
31
+ * [Repository](https://www.github.com/JamesLMilner/terra-draw)
32
+ * [Website](https://www.terradraw.io)
33
+
34
+ ### License
35
+
36
+ MIT
package/dist/common.d.ts CHANGED
@@ -114,6 +114,7 @@ export declare const SELECT_PROPERTIES: {
114
114
  readonly SELECTION_POINT: "selectionPoint";
115
115
  };
116
116
  export declare const COMMON_PROPERTIES: {
117
+ EDITED: string;
117
118
  CLOSING_POINT: string;
118
119
  SNAPPING_POINT: string;
119
120
  };
@@ -0,0 +1,7 @@
1
+ import { Polygon } from "geojson";
2
+ /**
3
+ * Checks if a GeoJSON Polygon follows the right-hand rule.
4
+ * @param polygon - The GeoJSON Polygon to check.
5
+ * @returns {boolean} - True if the polygon follows the right-hand rule (counterclockwise outer ring), otherwise false.
6
+ */
7
+ export declare function followsRightHandRule(polygon: Polygon): boolean;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ import { Polygon } from "geojson";
2
+ export declare function ensureRightHandRule(polygon: Polygon): undefined | Polygon;
@@ -0,0 +1 @@
1
+ export {};
@@ -2,4 +2,5 @@ import { Position } from "geojson";
2
2
  export declare function nearestPointOnLine(inputCoordinate: Position, lines: [Position, Position][]): {
3
3
  coordinate: Position;
4
4
  distance: number;
5
+ lineIndex: number;
5
6
  } | undefined;
@@ -7,5 +7,6 @@ import { Position } from "geojson";
7
7
  */
8
8
  export declare function webMercatorNearestPointOnLine(inputCoordinate: Position, lines: [Position, Position][]): {
9
9
  coordinate: Position;
10
+ lineIndex: number;
10
11
  distance: number;
11
12
  } | undefined;
@@ -21,13 +21,14 @@ interface TerraDrawPolygonModeOptions<T extends CustomStyling> extends BaseModeO
21
21
  cursors?: Cursors;
22
22
  }
23
23
  export declare class TerraDrawAngledRectangleMode extends TerraDrawBaseDrawMode<PolygonStyling> {
24
- mode: string;
24
+ mode: "angled-rectangle";
25
25
  private currentCoordinate;
26
26
  private currentId;
27
27
  private keyEvents;
28
28
  private cursors;
29
29
  private mouseMove;
30
30
  constructor(options?: TerraDrawPolygonModeOptions<PolygonStyling>);
31
+ updateOptions(options?: TerraDrawPolygonModeOptions<PolygonStyling>): void;
31
32
  private close;
32
33
  /** @internal */
33
34
  start(): void;
@@ -8,32 +8,33 @@ export declare enum ModeTypes {
8
8
  Static = "static",
9
9
  Render = "render"
10
10
  }
11
- export type BaseModeOptions<T extends CustomStyling> = {
12
- styles?: Partial<T>;
11
+ export type BaseModeOptions<Styling extends CustomStyling> = {
12
+ styles?: Partial<Styling>;
13
13
  pointerDistance?: number;
14
14
  validation?: Validation;
15
15
  projection?: Projection;
16
16
  };
17
- export declare abstract class TerraDrawBaseDrawMode<T extends CustomStyling> {
17
+ export declare abstract class TerraDrawBaseDrawMode<Styling extends CustomStyling> {
18
18
  protected _state: TerraDrawModeState;
19
19
  get state(): TerraDrawModeState;
20
20
  set state(_: TerraDrawModeState);
21
- protected _styles: Partial<T>;
22
- get styles(): Partial<T>;
23
- set styles(styling: Partial<T>);
21
+ protected _styles: Partial<Styling>;
22
+ get styles(): Partial<Styling>;
23
+ set styles(styling: Partial<Styling>);
24
24
  protected behaviors: TerraDrawModeBehavior[];
25
25
  protected validate: Validation | undefined;
26
26
  protected pointerDistance: number;
27
27
  protected coordinatePrecision: number;
28
28
  protected onStyleChange: StoreChangeHandler;
29
29
  protected store: GeoJSONStore;
30
+ protected projection: Projection;
30
31
  protected setDoubleClickToZoom: TerraDrawModeRegisterConfig["setDoubleClickToZoom"];
31
32
  protected unproject: TerraDrawModeRegisterConfig["unproject"];
32
33
  protected project: TerraDrawModeRegisterConfig["project"];
33
34
  protected setCursor: TerraDrawModeRegisterConfig["setCursor"];
34
35
  protected registerBehaviors(behaviorConfig: BehaviorConfig): void;
35
- protected projection: Projection;
36
- constructor(options?: BaseModeOptions<T>);
36
+ constructor(options?: BaseModeOptions<Styling>, willCallUpdateOptionsInParentClass?: boolean);
37
+ updateOptions(options?: BaseModeOptions<Styling>): void;
37
38
  type: ModeTypes;
38
39
  mode: string;
39
40
  protected setDrawing(): void;
@@ -61,7 +62,7 @@ export declare abstract class TerraDrawBaseDrawMode<T extends CustomStyling> {
61
62
  protected getNumericStylingValue(value: number | ((feature: GeoJSONStoreFeatures) => number) | undefined, defaultValue: number, feature: GeoJSONStoreFeatures): number;
62
63
  private getStylingValue;
63
64
  }
64
- export declare abstract class TerraDrawBaseSelectMode<T extends CustomStyling> extends TerraDrawBaseDrawMode<T> {
65
+ export declare abstract class TerraDrawBaseSelectMode<Styling extends CustomStyling> extends TerraDrawBaseDrawMode<Styling> {
65
66
  type: ModeTypes;
66
67
  abstract selectFeature(featureId: FeatureId): void;
67
68
  abstract deselectFeature(featureId: FeatureId): void;
@@ -21,7 +21,7 @@ interface TerraDrawCircleModeOptions<T extends CustomStyling> extends BaseModeOp
21
21
  projection?: Projection;
22
22
  }
23
23
  export declare class TerraDrawCircleMode extends TerraDrawBaseDrawMode<CirclePolygonStyling> {
24
- mode: string;
24
+ mode: "circle";
25
25
  private center;
26
26
  private clickCount;
27
27
  private currentCircleId;
@@ -38,6 +38,7 @@ export declare class TerraDrawCircleMode extends TerraDrawBaseDrawMode<CirclePol
38
38
  * @param options.pointerDistance - Distance in pixels to consider a pointer close to a vertex
39
39
  */
40
40
  constructor(options?: TerraDrawCircleModeOptions<CirclePolygonStyling>);
41
+ updateOptions(options?: TerraDrawCircleModeOptions<CirclePolygonStyling>): void;
41
42
  private close;
42
43
  /** @internal */
43
44
  start(): void;
@@ -1,6 +1,6 @@
1
1
  import { BehaviorConfig, TerraDrawModeBehavior } from "./base.behavior";
2
2
  import { TerraDrawMouseEvent } from "../common";
3
- import { Position } from "geojson";
3
+ import { Feature, Position } from "geojson";
4
4
  import { ClickBoundingBoxBehavior } from "./click-bounding-box.behavior";
5
5
  import { FeatureId } from "../store/store";
6
6
  import { PixelDistanceBehavior } from "./pixel-distance.behavior";
@@ -12,5 +12,10 @@ export declare class CoordinateSnappingBehavior extends TerraDrawModeBehavior {
12
12
  /** Returns the nearest snappable coordinate - on first click there is no currentId so no need to provide */
13
13
  getSnappableCoordinateFirstClick: (event: TerraDrawMouseEvent) => Position | undefined;
14
14
  getSnappableCoordinate: (event: TerraDrawMouseEvent, currentFeatureId: FeatureId) => Position | undefined;
15
- private getSnappable;
15
+ getSnappable(event: TerraDrawMouseEvent, filter?: (feature: Feature) => boolean): {
16
+ coordinate: undefined | Position;
17
+ minDist: number;
18
+ featureId: undefined | FeatureId;
19
+ featureCoordinateIndex: undefined | number;
20
+ };
16
21
  }
@@ -28,7 +28,7 @@ interface TerraDrawFreehandModeOptions<T extends CustomStyling> extends BaseMode
28
28
  cursors?: Cursors;
29
29
  }
30
30
  export declare class TerraDrawFreehandMode extends TerraDrawBaseDrawMode<FreehandPolygonStyling> {
31
- mode: string;
31
+ mode: "freehand";
32
32
  private startingClick;
33
33
  private currentId;
34
34
  private closingPointId;
@@ -41,6 +41,7 @@ export declare class TerraDrawFreehandMode extends TerraDrawBaseDrawMode<Freehan
41
41
  private hasLeftStartingPoint;
42
42
  private preventNewFeature;
43
43
  constructor(options?: TerraDrawFreehandModeOptions<FreehandPolygonStyling>);
44
+ updateOptions(options?: TerraDrawFreehandModeOptions<FreehandPolygonStyling> | undefined): void;
44
45
  private close;
45
46
  /** @internal */
46
47
  start(): void;
@@ -1,6 +1,6 @@
1
1
  import { BehaviorConfig, TerraDrawModeBehavior } from "./base.behavior";
2
2
  import { TerraDrawMouseEvent } from "../common";
3
- import { Position } from "geojson";
3
+ import { Feature, Position } from "geojson";
4
4
  import { ClickBoundingBoxBehavior } from "./click-bounding-box.behavior";
5
5
  import { FeatureId } from "../store/store";
6
6
  import { PixelDistanceBehavior } from "./pixel-distance.behavior";
@@ -12,5 +12,10 @@ export declare class LineSnappingBehavior extends TerraDrawModeBehavior {
12
12
  /** Returns the nearest snappable coordinate - on first click there is no currentId so no need to provide */
13
13
  getSnappableCoordinateFirstClick: (event: TerraDrawMouseEvent) => Position | undefined;
14
14
  getSnappableCoordinate: (event: TerraDrawMouseEvent, currentFeatureId: FeatureId) => Position | undefined;
15
- private getSnappable;
15
+ getSnappable(event: TerraDrawMouseEvent, filter?: (feature: Feature) => boolean): {
16
+ coordinate: undefined | Position;
17
+ minDistance: number;
18
+ featureId: undefined | FeatureId;
19
+ featureCoordinateIndex: undefined | number;
20
+ };
16
21
  }
@@ -22,6 +22,8 @@ type LineStringStyling = {
22
22
  interface Cursors {
23
23
  start?: Cursor;
24
24
  close?: Cursor;
25
+ dragStart?: Cursor;
26
+ dragEnd?: Cursor;
25
27
  }
26
28
  interface InertCoordinates {
27
29
  strategy: "amount";
@@ -37,9 +39,10 @@ interface TerraDrawLineStringModeOptions<T extends CustomStyling> extends BaseMo
37
39
  keyEvents?: TerraDrawLineStringModeKeyEvents | null;
38
40
  cursors?: Cursors;
39
41
  insertCoordinates?: InertCoordinates;
42
+ editable?: boolean;
40
43
  }
41
44
  export declare class TerraDrawLineStringMode extends TerraDrawBaseDrawMode<LineStringStyling> {
42
- mode: string;
45
+ mode: "linestring";
43
46
  private currentCoordinate;
44
47
  private currentId;
45
48
  private closingPointId;
@@ -50,9 +53,19 @@ export declare class TerraDrawLineStringMode extends TerraDrawBaseDrawMode<LineS
50
53
  private insertCoordinates;
51
54
  private lastCommitedCoordinates;
52
55
  private snappedPointId;
56
+ private editable;
57
+ private editedFeatureId;
58
+ private editedFeatureCoordinateIndex;
59
+ private editedSnapType;
60
+ private editedInsertIndex;
61
+ private editedPointId;
53
62
  private coordinateSnapping;
54
63
  private insertPoint;
64
+ private lineSnapping;
65
+ private pixelDistance;
66
+ private clickBoundingBox;
55
67
  constructor(options?: TerraDrawLineStringModeOptions<LineStringStyling>);
68
+ updateOptions(options?: TerraDrawLineStringModeOptions<LineStringStyling> | undefined): void;
56
69
  private close;
57
70
  private updateGeometries;
58
71
  private generateInsertCoordinates;
@@ -67,6 +80,8 @@ export declare class TerraDrawLineStringMode extends TerraDrawBaseDrawMode<LineS
67
80
  stop(): void;
68
81
  /** @internal */
69
82
  onMouseMove(event: TerraDrawMouseEvent): void;
83
+ private onRightClick;
84
+ private onLeftClick;
70
85
  /** @internal */
71
86
  onClick(event: TerraDrawMouseEvent): void;
72
87
  /** @internal */
@@ -74,11 +89,11 @@ export declare class TerraDrawLineStringMode extends TerraDrawBaseDrawMode<LineS
74
89
  /** @internal */
75
90
  onKeyUp(event: TerraDrawKeyboardEvent): void;
76
91
  /** @internal */
77
- onDragStart(): void;
92
+ onDragStart(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
78
93
  /** @internal */
79
- onDrag(): void;
94
+ onDrag(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
80
95
  /** @internal */
81
- onDragEnd(): void;
96
+ onDragEnd(_: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
82
97
  /** @internal */
83
98
  cleanUp(): void;
84
99
  /** @internal */
@@ -1,22 +1,35 @@
1
1
  import { TerraDrawMouseEvent, TerraDrawAdapterStyling, NumericStyling, HexColorStyling, Cursor } from "../../common";
2
2
  import { GeoJSONStoreFeatures, StoreValidation } from "../../store/store";
3
3
  import { BaseModeOptions, CustomStyling, TerraDrawBaseDrawMode } from "../base.mode";
4
+ import { BehaviorConfig } from "../base.behavior";
4
5
  type PointModeStyling = {
5
6
  pointWidth: NumericStyling;
6
7
  pointColor: HexColorStyling;
7
8
  pointOutlineColor: HexColorStyling;
8
9
  pointOutlineWidth: NumericStyling;
10
+ editedPointColor: HexColorStyling;
11
+ editedPointWidth: NumericStyling;
12
+ editedPointOutlineColor: HexColorStyling;
13
+ editedPointOutlineWidth: NumericStyling;
9
14
  };
10
15
  interface Cursors {
11
16
  create?: Cursor;
17
+ dragStart?: Cursor;
18
+ dragEnd?: Cursor;
12
19
  }
13
20
  interface TerraDrawPointModeOptions<T extends CustomStyling> extends BaseModeOptions<T> {
14
21
  cursors?: Cursors;
22
+ editable?: boolean;
15
23
  }
16
24
  export declare class TerraDrawPointMode extends TerraDrawBaseDrawMode<PointModeStyling> {
17
- mode: string;
25
+ mode: "point";
18
26
  private cursors;
27
+ private editable;
28
+ private editedFeatureId;
29
+ private pixelDistance;
30
+ private clickBoundingBox;
19
31
  constructor(options?: TerraDrawPointModeOptions<PointModeStyling>);
32
+ updateOptions(options?: TerraDrawPointModeOptions<PointModeStyling> | undefined): void;
20
33
  /** @internal */
21
34
  start(): void;
22
35
  /** @internal */
@@ -31,14 +44,17 @@ export declare class TerraDrawPointMode extends TerraDrawBaseDrawMode<PointModeS
31
44
  onKeyUp(): void;
32
45
  /** @internal */
33
46
  cleanUp(): void;
47
+ onDragStart(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
34
48
  /** @internal */
35
- onDragStart(): void;
49
+ onDrag(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
36
50
  /** @internal */
37
- onDrag(): void;
38
- /** @internal */
39
- onDragEnd(): void;
51
+ onDragEnd(_: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
52
+ registerBehaviors(config: BehaviorConfig): void;
40
53
  /** @internal */
41
54
  styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling;
42
55
  validateFeature(feature: unknown): StoreValidation;
56
+ private onLeftClick;
57
+ private onRightClick;
58
+ private getNearestPointFeature;
43
59
  }
44
60
  export {};
@@ -20,10 +20,16 @@ type PolygonStyling = {
20
20
  snappingPointColor: HexColorStyling;
21
21
  snappingPointOutlineWidth: NumericStyling;
22
22
  snappingPointOutlineColor: HexColorStyling;
23
+ editedPointWidth: NumericStyling;
24
+ editedPointColor: HexColorStyling;
25
+ editedPointOutlineWidth: NumericStyling;
26
+ editedPointOutlineColor: HexColorStyling;
23
27
  };
24
28
  interface Cursors {
25
29
  start?: Cursor;
26
30
  close?: Cursor;
31
+ dragStart?: Cursor;
32
+ dragEnd?: Cursor;
27
33
  }
28
34
  interface Snapping {
29
35
  toLine?: boolean;
@@ -35,21 +41,30 @@ interface TerraDrawPolygonModeOptions<T extends CustomStyling> extends BaseModeO
35
41
  pointerDistance?: number;
36
42
  keyEvents?: TerraDrawPolygonModeKeyEvents | null;
37
43
  cursors?: Cursors;
44
+ editable?: boolean;
38
45
  }
39
46
  export declare class TerraDrawPolygonMode extends TerraDrawBaseDrawMode<PolygonStyling> {
40
- mode: string;
47
+ mode: "polygon";
41
48
  private currentCoordinate;
42
49
  private currentId;
43
50
  private keyEvents;
51
+ private cursors;
52
+ private mouseMove;
44
53
  private snapping;
45
54
  private snappedPointId;
55
+ private editable;
56
+ private editedFeatureId;
57
+ private editedFeatureCoordinateIndex;
58
+ private editedSnapType;
59
+ private editedInsertIndex;
60
+ private editedPointId;
46
61
  private lineSnapping;
47
62
  private coordinateSnapping;
48
63
  private pixelDistance;
49
64
  private closingPoints;
50
- private cursors;
51
- private mouseMove;
65
+ private clickBoundingBox;
52
66
  constructor(options?: TerraDrawPolygonModeOptions<PolygonStyling>);
67
+ updateOptions(options?: TerraDrawPolygonModeOptions<PolygonStyling>): void;
53
68
  private close;
54
69
  /** @internal */
55
70
  registerBehaviors(config: BehaviorConfig): void;
@@ -61,18 +76,19 @@ export declare class TerraDrawPolygonMode extends TerraDrawBaseDrawMode<PolygonS
61
76
  onMouseMove(event: TerraDrawMouseEvent): void;
62
77
  private updatePolygonGeometry;
63
78
  private snapCoordinate;
79
+ private onRightClick;
80
+ private onLeftClick;
64
81
  /** @internal */
65
82
  onClick(event: TerraDrawMouseEvent): void;
66
83
  /** @internal */
67
84
  onKeyUp(event: TerraDrawKeyboardEvent): void;
68
85
  /** @internal */
69
86
  onKeyDown(): void;
87
+ onDragStart(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
70
88
  /** @internal */
71
- onDragStart(): void;
72
- /** @internal */
73
- onDrag(): void;
89
+ onDrag(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
74
90
  /** @internal */
75
- onDragEnd(): void;
91
+ onDragEnd(_: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
76
92
  /** @internal */
77
93
  cleanUp(): void;
78
94
  /** @internal */
@@ -19,13 +19,14 @@ interface TerraDrawRectangleModeOptions<T extends CustomStyling> extends BaseMod
19
19
  cursors?: Cursors;
20
20
  }
21
21
  export declare class TerraDrawRectangleMode extends TerraDrawBaseDrawMode<RectanglePolygonStyling> {
22
- mode: string;
22
+ mode: "rectangle";
23
23
  private center;
24
24
  private clickCount;
25
25
  private currentRectangleId;
26
26
  private keyEvents;
27
27
  private cursors;
28
28
  constructor(options?: TerraDrawRectangleModeOptions<RectanglePolygonStyling>);
29
+ updateOptions(options?: TerraDrawRectangleModeOptions<RectanglePolygonStyling>): void;
29
30
  private updateRectangle;
30
31
  private close;
31
32
  /** @internal */
@@ -17,13 +17,14 @@ type RenderModeStyling = {
17
17
  zIndex: NumericStyling;
18
18
  };
19
19
  interface TerraDrawRenderModeOptions<T extends CustomStyling> extends BaseModeOptions<T> {
20
- modeName: string;
20
+ modeName?: string;
21
21
  styles: Partial<T>;
22
22
  }
23
23
  export declare class TerraDrawRenderMode extends TerraDrawBaseDrawMode<RenderModeStyling> {
24
24
  type: ModeTypes;
25
25
  mode: string;
26
26
  constructor(options: TerraDrawRenderModeOptions<RenderModeStyling>);
27
+ updateOptions(options?: TerraDrawRenderModeOptions<RenderModeStyling> | undefined): void;
27
28
  /** @internal */
28
29
  registerBehaviors(behaviorConfig: BehaviorConfig): void;
29
30
  /** @internal */
@@ -22,7 +22,7 @@ interface TerraDrawSectorModeOptions<T extends CustomStyling> extends BaseModeOp
22
22
  cursors?: Cursors;
23
23
  }
24
24
  export declare class TerraDrawSectorMode extends TerraDrawBaseDrawMode<SectorPolygonStyling> {
25
- mode: string;
25
+ mode: "sector";
26
26
  private currentCoordinate;
27
27
  private currentId;
28
28
  private keyEvents;
@@ -31,6 +31,7 @@ export declare class TerraDrawSectorMode extends TerraDrawBaseDrawMode<SectorPol
31
31
  private cursors;
32
32
  private mouseMove;
33
33
  constructor(options?: TerraDrawSectorModeOptions<SectorPolygonStyling>);
34
+ updateOptions(options?: TerraDrawSectorModeOptions<SectorPolygonStyling>): void;
34
35
  private close;
35
36
  /** @internal */
36
37
  start(): void;
@@ -61,13 +61,15 @@ interface TerraDrawSelectModeOptions<T extends CustomStyling> extends BaseModeOp
61
61
  allowManualDeselection?: boolean;
62
62
  }
63
63
  export declare class TerraDrawSelectMode extends TerraDrawBaseSelectMode<SelectionStyling> {
64
- mode: string;
64
+ mode: "select";
65
65
  private allowManualDeselection;
66
66
  private dragEventThrottle;
67
67
  private dragEventCount;
68
68
  private selected;
69
69
  private flags;
70
70
  private keyEvents;
71
+ private cursors;
72
+ private validations;
71
73
  private selectionPoints;
72
74
  private midPoints;
73
75
  private featuresAtMouseEvent;
@@ -78,9 +80,8 @@ export declare class TerraDrawSelectMode extends TerraDrawBaseSelectMode<Selecti
78
80
  private rotateFeature;
79
81
  private scaleFeature;
80
82
  private dragCoordinateResizeFeature;
81
- private cursors;
82
- private validations;
83
83
  constructor(options?: TerraDrawSelectModeOptions<SelectionStyling>);
84
+ updateOptions(options?: TerraDrawSelectModeOptions<SelectionStyling>): void;
84
85
  selectFeature(featureId: FeatureId): void;
85
86
  setSelecting(): void;
86
87
  registerBehaviors(config: BehaviorConfig): void;
@@ -26,7 +26,7 @@ interface TerraDrawSensorModeOptions<T extends CustomStyling> extends BaseModeOp
26
26
  cursors?: Cursors;
27
27
  }
28
28
  export declare class TerraDrawSensorMode extends TerraDrawBaseDrawMode<SensorPolygonStyling> {
29
- mode: string;
29
+ mode: "sensor";
30
30
  private currentCoordinate;
31
31
  private currentId;
32
32
  private currentInitialArcId;
@@ -37,6 +37,7 @@ export declare class TerraDrawSensorMode extends TerraDrawBaseDrawMode<SensorPol
37
37
  private cursors;
38
38
  private mouseMove;
39
39
  constructor(options?: TerraDrawSensorModeOptions<SensorPolygonStyling>);
40
+ updateOptions(options?: TerraDrawSensorModeOptions<SensorPolygonStyling>): void;
40
41
  private close;
41
42
  /** @internal */
42
43
  start(): void;
@@ -4,7 +4,7 @@ type StaticModeStylingExt<T extends TerraDrawAdapterStyling> = {};
4
4
  type StaticModeStyling = StaticModeStylingExt<TerraDrawAdapterStyling>;
5
5
  export declare class TerraDrawStaticMode extends TerraDrawBaseDrawMode<StaticModeStyling> {
6
6
  type: ModeTypes;
7
- mode: string;
7
+ mode: "static";
8
8
  start(): void;
9
9
  stop(): void;
10
10
  onKeyUp(): void;
@@ -56,6 +56,7 @@ export declare class GeoJSONStore<Id extends FeatureId = FeatureId> {
56
56
  properties?: JSONObject;
57
57
  }[]): Id[];
58
58
  delete(ids: FeatureId[]): void;
59
+ copy(id: FeatureId): GeoJSONStoreFeatures;
59
60
  copyAll(): GeoJSONStoreFeatures[];
60
61
  clear(): void;
61
62
  size(): number;