terra-draw 0.0.1-alpha.2 → 0.0.1-alpha.20

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 (44) hide show
  1. package/CHANGELOG.md +186 -0
  2. package/README.md +27 -2
  3. package/dist/adapters/common/adapter-listener.d.ts +14 -0
  4. package/dist/adapters/google-maps.adapter.d.ts +7 -14
  5. package/dist/adapters/leaflet.adapter.d.ts +7 -12
  6. package/dist/adapters/mapbox-gl.adapter.d.ts +7 -9
  7. package/dist/adapters/maplibre-gl.adapter.d.ts +20 -0
  8. package/dist/adapters/openlayers.adapter.d.ts +55 -0
  9. package/dist/common.d.ts +23 -22
  10. package/dist/geometry/get-midpoints.d.ts +3 -2
  11. package/dist/geometry/midpoint-coordinate.d.ts +2 -1
  12. package/dist/geometry/shape/create-circle.d.ts +1 -0
  13. package/dist/geometry/shape/great-circle-line.d.ts +12 -0
  14. package/dist/modes/base.behavior.d.ts +1 -1
  15. package/dist/modes/base.mode.d.ts +12 -8
  16. package/dist/modes/circle/circle.mode.d.ts +27 -6
  17. package/dist/modes/freehand/freehand.mode.d.ts +34 -9
  18. package/dist/modes/great-circle-snapping.behavior.d.ts +13 -0
  19. package/dist/modes/greatcircle/great-circle.mode.d.ts +57 -0
  20. package/dist/modes/linestring/linestring.mode.d.ts +32 -6
  21. package/dist/modes/point/point.mode.d.ts +23 -3
  22. package/dist/modes/polygon/behaviors/closing-points.behavior.d.ts +19 -0
  23. package/dist/modes/polygon/polygon.mode.d.ts +34 -8
  24. package/dist/modes/rectangle/rectangle.mode.d.ts +48 -0
  25. package/dist/modes/render/render.mode.d.ts +34 -0
  26. package/dist/modes/select/select.mode.d.ts +36 -9
  27. package/dist/modes/static/static.mode.d.ts +18 -1
  28. package/dist/store/spatial-index/quickselect.d.ts +1 -1
  29. package/dist/store/spatial-index/rbush.d.ts +1 -1
  30. package/dist/store/store.d.ts +11 -9
  31. package/dist/terra-draw.cjs +1 -1
  32. package/dist/terra-draw.cjs.map +1 -1
  33. package/dist/terra-draw.d.ts +90 -8
  34. package/dist/terra-draw.modern.js +1 -1
  35. package/dist/terra-draw.modern.js.map +1 -1
  36. package/dist/terra-draw.module.js +1 -1
  37. package/dist/terra-draw.module.js.map +1 -1
  38. package/dist/terra-draw.umd.js +1 -1
  39. package/dist/terra-draw.umd.js.map +1 -1
  40. package/jest.config.ts +22 -22
  41. package/logo.png +0 -0
  42. package/package.json +151 -86
  43. package/scratch/release.sh +5 -0
  44. package/tsconfig.json +21 -12
@@ -1,27 +1,48 @@
1
- import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent } from "../../common";
1
+ import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, HexColor } from "../../common";
2
+ import { GeoJSONStoreFeatures } from "../../store/store";
2
3
  import { TerraDrawBaseDrawMode } from "../base.mode";
3
- declare type TerraDrawCircleModeKeyEvents = {
4
- cancel: KeyboardEvent["key"];
4
+ type TerraDrawCircleModeKeyEvents = {
5
+ cancel: KeyboardEvent["key"] | null;
6
+ finish: KeyboardEvent["key"] | null;
5
7
  };
6
- export declare class TerraDrawCircleMode extends TerraDrawBaseDrawMode {
8
+ type FreehandPolygonStyling = {
9
+ fillColor: HexColor;
10
+ outlineColor: HexColor;
11
+ outlineWidth: number;
12
+ fillOpacity: number;
13
+ };
14
+ export declare class TerraDrawCircleMode extends TerraDrawBaseDrawMode<FreehandPolygonStyling> {
7
15
  mode: string;
8
16
  private center;
9
17
  private clickCount;
10
18
  private currentCircleId;
11
19
  private keyEvents;
12
20
  constructor(options?: {
13
- styling?: Partial<TerraDrawAdapterStyling>;
14
- keyEvents?: TerraDrawCircleModeKeyEvents;
21
+ styles?: Partial<FreehandPolygonStyling>;
22
+ keyEvents?: TerraDrawCircleModeKeyEvents | null;
15
23
  });
24
+ private close;
25
+ /** @internal */
16
26
  start(): void;
27
+ /** @internal */
17
28
  stop(): void;
29
+ /** @internal */
18
30
  onClick(event: TerraDrawMouseEvent): void;
31
+ /** @internal */
19
32
  onMouseMove(event: TerraDrawMouseEvent): void;
33
+ /** @internal */
20
34
  onKeyDown(): void;
35
+ /** @internal */
21
36
  onKeyUp(event: TerraDrawKeyboardEvent): void;
37
+ /** @internal */
22
38
  onDragStart(): void;
39
+ /** @internal */
23
40
  onDrag(): void;
41
+ /** @internal */
24
42
  onDragEnd(): void;
43
+ /** @internal */
25
44
  cleanUp(): void;
45
+ /** @internal */
46
+ styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling;
26
47
  }
27
48
  export {};
@@ -1,29 +1,54 @@
1
- import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent } from "../../common";
1
+ import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, HexColor } from "../../common";
2
2
  import { TerraDrawBaseDrawMode } from "../base.mode";
3
- declare type TerraDrawFreehandModeKeyEvents = {
4
- cancel: KeyboardEvent["key"];
3
+ import { GeoJSONStoreFeatures } from "../../store/store";
4
+ type TerraDrawFreehandModeKeyEvents = {
5
+ cancel: KeyboardEvent["key"] | null;
6
+ finish: KeyboardEvent["key"] | null;
5
7
  };
6
- export declare class TerraDrawFreehandMode extends TerraDrawBaseDrawMode {
8
+ type FreehandPolygonStyling = {
9
+ fillColor: HexColor;
10
+ outlineColor: HexColor;
11
+ outlineWidth: number;
12
+ fillOpacity: number;
13
+ closingPointColor: HexColor;
14
+ closingPointWidth: number;
15
+ closingPointOutlineColor: HexColor;
16
+ closingPointOutlineWidth: number;
17
+ };
18
+ export declare class TerraDrawFreehandMode extends TerraDrawBaseDrawMode<FreehandPolygonStyling> {
7
19
  mode: string;
8
20
  private startingClick;
9
21
  private currentId;
10
- private skip;
11
- private everyNthMouseEvent;
22
+ private closingPointId;
23
+ private minDistance;
12
24
  private keyEvents;
13
25
  constructor(options?: {
14
- styling?: Partial<TerraDrawAdapterStyling>;
15
- everyNthMouseEvent?: number;
16
- keyEvents?: TerraDrawFreehandModeKeyEvents;
26
+ styles?: Partial<FreehandPolygonStyling>;
27
+ minDistance?: number;
28
+ keyEvents?: TerraDrawFreehandModeKeyEvents | null;
17
29
  });
30
+ private close;
31
+ /** @internal */
18
32
  start(): void;
33
+ /** @internal */
19
34
  stop(): void;
35
+ /** @internal */
20
36
  onMouseMove(event: TerraDrawMouseEvent): void;
37
+ /** @internal */
21
38
  onClick(event: TerraDrawMouseEvent): void;
39
+ /** @internal */
22
40
  onKeyDown(): void;
41
+ /** @internal */
23
42
  onKeyUp(event: TerraDrawKeyboardEvent): void;
43
+ /** @internal */
24
44
  onDragStart(): void;
45
+ /** @internal */
25
46
  onDrag(): void;
47
+ /** @internal */
26
48
  onDragEnd(): void;
49
+ /** @internal */
27
50
  cleanUp(): void;
51
+ /** @internal */
52
+ styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling;
28
53
  }
29
54
  export {};
@@ -0,0 +1,13 @@
1
+ import { BehaviorConfig, TerraDrawModeBehavior } from "./base.behavior";
2
+ import { TerraDrawMouseEvent } from "../common";
3
+ import { Position } from "geojson";
4
+ import { ClickBoundingBoxBehavior } from "./click-bounding-box.behavior";
5
+ import { PixelDistanceBehavior } from "./pixel-distance.behavior";
6
+ export declare class GreatCircleSnappingBehavior extends TerraDrawModeBehavior {
7
+ readonly config: BehaviorConfig;
8
+ private readonly pixelDistance;
9
+ private readonly clickBoundingBox;
10
+ constructor(config: BehaviorConfig, pixelDistance: PixelDistanceBehavior, clickBoundingBox: ClickBoundingBoxBehavior);
11
+ getSnappableCoordinate: (event: TerraDrawMouseEvent, currentFeatureId?: string) => Position | undefined;
12
+ private getSnappableEnds;
13
+ }
@@ -0,0 +1,57 @@
1
+ import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, HexColor } from "../../common";
2
+ import { TerraDrawBaseDrawMode } from "../base.mode";
3
+ import { BehaviorConfig } from "../base.behavior";
4
+ import { GeoJSONStoreFeatures } from "../../store/store";
5
+ type TerraDrawGreateCircleModeKeyEvents = {
6
+ cancel: KeyboardEvent["key"] | null;
7
+ finish: KeyboardEvent["key"] | null;
8
+ };
9
+ type GreateCircleStyling = {
10
+ lineStringWidth: number;
11
+ lineStringColor: HexColor;
12
+ closingPointColor: HexColor;
13
+ closingPointWidth: number;
14
+ closingPointOutlineColor: HexColor;
15
+ closingPointOutlineWidth: number;
16
+ };
17
+ export declare class TerraDrawGreatCircleMode extends TerraDrawBaseDrawMode<GreateCircleStyling> {
18
+ mode: string;
19
+ private currentCoordinate;
20
+ private currentId;
21
+ private closingPointId;
22
+ private keyEvents;
23
+ private snappingEnabled;
24
+ private snapping;
25
+ constructor(options?: {
26
+ snapping?: boolean;
27
+ pointerDistance?: number;
28
+ styles?: Partial<GreateCircleStyling>;
29
+ keyEvents?: TerraDrawGreateCircleModeKeyEvents | null;
30
+ });
31
+ private close;
32
+ /** @internal */
33
+ registerBehaviors(config: BehaviorConfig): void;
34
+ /** @internal */
35
+ start(): void;
36
+ /** @internal */
37
+ stop(): void;
38
+ /** @internal */
39
+ onMouseMove(event: TerraDrawMouseEvent): void;
40
+ /** @internal */
41
+ onClick(event: TerraDrawMouseEvent): void;
42
+ /** @internal */
43
+ onKeyDown(): void;
44
+ /** @internal */
45
+ onKeyUp(event: TerraDrawKeyboardEvent): void;
46
+ /** @internal */
47
+ onDragStart(): void;
48
+ /** @internal */
49
+ onDrag(): void;
50
+ /** @internal */
51
+ onDragEnd(): void;
52
+ /** @internal */
53
+ cleanUp(): void;
54
+ /** @internal */
55
+ styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling;
56
+ }
57
+ export {};
@@ -1,34 +1,60 @@
1
- import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent } from "../../common";
1
+ import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, HexColor } from "../../common";
2
2
  import { TerraDrawBaseDrawMode } from "../base.mode";
3
3
  import { BehaviorConfig } from "../base.behavior";
4
- declare type TerraDrawLineStringModeKeyEvents = {
5
- cancel: KeyboardEvent["key"];
4
+ import { GeoJSONStoreFeatures } from "../../store/store";
5
+ type TerraDrawLineStringModeKeyEvents = {
6
+ cancel: KeyboardEvent["key"] | null;
7
+ finish: KeyboardEvent["key"] | null;
6
8
  };
7
- export declare class TerraDrawLineStringMode extends TerraDrawBaseDrawMode {
9
+ type LineStringStyling = {
10
+ lineStringWidth: number;
11
+ lineStringColor: HexColor;
12
+ closingPointColor: HexColor;
13
+ closingPointWidth: number;
14
+ closingPointOutlineColor: HexColor;
15
+ closingPointOutlineWidth: number;
16
+ };
17
+ export declare class TerraDrawLineStringMode extends TerraDrawBaseDrawMode<LineStringStyling> {
8
18
  mode: string;
9
19
  private currentCoordinate;
10
20
  private currentId;
21
+ private closingPointId;
11
22
  private allowSelfIntersections;
12
23
  private keyEvents;
13
24
  private snappingEnabled;
25
+ private mouseMove;
14
26
  private snapping;
15
27
  constructor(options?: {
16
28
  snapping?: boolean;
17
29
  allowSelfIntersections?: boolean;
18
30
  pointerDistance?: number;
19
- styling?: Partial<TerraDrawAdapterStyling>;
20
- keyEvents?: TerraDrawLineStringModeKeyEvents;
31
+ styles?: Partial<LineStringStyling>;
32
+ keyEvents?: TerraDrawLineStringModeKeyEvents | null;
21
33
  });
34
+ private close;
35
+ /** @internal */
22
36
  registerBehaviors(config: BehaviorConfig): void;
37
+ /** @internal */
23
38
  start(): void;
39
+ /** @internal */
24
40
  stop(): void;
41
+ /** @internal */
25
42
  onMouseMove(event: TerraDrawMouseEvent): void;
43
+ /** @internal */
26
44
  onClick(event: TerraDrawMouseEvent): void;
45
+ /** @internal */
27
46
  onKeyDown(): void;
47
+ /** @internal */
28
48
  onKeyUp(event: TerraDrawKeyboardEvent): void;
49
+ /** @internal */
29
50
  onDragStart(): void;
51
+ /** @internal */
30
52
  onDrag(): void;
53
+ /** @internal */
31
54
  onDragEnd(): void;
55
+ /** @internal */
32
56
  cleanUp(): void;
57
+ /** @internal */
58
+ styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling;
33
59
  }
34
60
  export {};
@@ -1,18 +1,38 @@
1
- import { TerraDrawMouseEvent, TerraDrawAdapterStyling } from "../../common";
1
+ import { TerraDrawMouseEvent, TerraDrawAdapterStyling, HexColor } from "../../common";
2
+ import { GeoJSONStoreFeatures } from "../../store/store";
2
3
  import { TerraDrawBaseDrawMode } from "../base.mode";
3
- export declare class TerraDrawPointMode extends TerraDrawBaseDrawMode {
4
+ type PointModeStyling = {
5
+ pointWidth: number;
6
+ pointColor: HexColor;
7
+ pointOutlineColor: HexColor;
8
+ pointOutlineWidth: number;
9
+ };
10
+ export declare class TerraDrawPointMode extends TerraDrawBaseDrawMode<PointModeStyling> {
4
11
  mode: string;
5
12
  constructor(options?: {
6
- styling?: Partial<TerraDrawAdapterStyling>;
13
+ styles?: Partial<PointModeStyling>;
7
14
  });
15
+ /** @internal */
8
16
  start(): void;
17
+ /** @internal */
9
18
  stop(): void;
19
+ /** @internal */
10
20
  onClick(event: TerraDrawMouseEvent): void;
21
+ /** @internal */
11
22
  onMouseMove(): void;
23
+ /** @internal */
12
24
  onKeyDown(): void;
25
+ /** @internal */
13
26
  onKeyUp(): void;
27
+ /** @internal */
14
28
  cleanUp(): void;
29
+ /** @internal */
15
30
  onDragStart(): void;
31
+ /** @internal */
16
32
  onDrag(): void;
33
+ /** @internal */
17
34
  onDragEnd(): void;
35
+ /** @internal */
36
+ styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling;
18
37
  }
38
+ export {};
@@ -0,0 +1,19 @@
1
+ import { Position } from "geojson";
2
+ import { BehaviorConfig, TerraDrawModeBehavior } from "../../base.behavior";
3
+ import { TerraDrawMouseEvent } from "../../../common";
4
+ import { PixelDistanceBehavior } from "../../pixel-distance.behavior";
5
+ export declare class ClosingPointsBehavior extends TerraDrawModeBehavior {
6
+ readonly config: BehaviorConfig;
7
+ private readonly pixelDistance;
8
+ constructor(config: BehaviorConfig, pixelDistance: PixelDistanceBehavior);
9
+ private _startEndPoints;
10
+ get ids(): string[];
11
+ set ids(_: string[]);
12
+ create(selectedCoords: Position[], mode: string): void;
13
+ delete(): void;
14
+ update(updatedCoordinates: Position[]): void;
15
+ isClosingPoint(event: TerraDrawMouseEvent): {
16
+ isClosing: boolean;
17
+ isPreviousClosing: boolean;
18
+ };
19
+ }
@@ -1,37 +1,63 @@
1
- import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent } from "../../common";
1
+ import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, HexColor } from "../../common";
2
2
  import { TerraDrawBaseDrawMode } from "../base.mode";
3
3
  import { BehaviorConfig } from "../base.behavior";
4
- declare type TerraDrawPolygonModeKeyEvents = {
5
- cancel: KeyboardEvent["key"];
4
+ import { GeoJSONStoreFeatures } from "../../store/store";
5
+ type TerraDrawPolygonModeKeyEvents = {
6
+ cancel?: KeyboardEvent["key"] | null;
7
+ finish?: KeyboardEvent["key"] | null;
6
8
  };
7
- export declare class TerraDrawPolygonMode extends TerraDrawBaseDrawMode {
9
+ type PolygonStyling = {
10
+ fillColor: HexColor;
11
+ outlineColor: HexColor;
12
+ outlineWidth: number;
13
+ fillOpacity: number;
14
+ closingPointWidth: number;
15
+ closingPointColor: HexColor;
16
+ closingPointOutlineWidth: number;
17
+ closingPointOutlineColor: HexColor;
18
+ };
19
+ export declare class TerraDrawPolygonMode extends TerraDrawBaseDrawMode<PolygonStyling> {
8
20
  mode: string;
9
21
  private currentCoordinate;
10
22
  private currentId;
11
23
  private allowSelfIntersections;
12
24
  private keyEvents;
13
25
  private snappingEnabled;
14
- private isClosed;
15
26
  private snapping;
16
27
  private pixelDistance;
17
- private startEndPoint;
28
+ private closingPoints;
29
+ private mouseMove;
18
30
  constructor(options?: {
19
31
  allowSelfIntersections?: boolean;
20
32
  snapping?: boolean;
21
- styling?: Partial<TerraDrawAdapterStyling>;
22
33
  pointerDistance?: number;
23
- keyEvents?: TerraDrawPolygonModeKeyEvents;
34
+ styles?: Partial<PolygonStyling>;
35
+ keyEvents?: TerraDrawPolygonModeKeyEvents | null;
24
36
  });
37
+ private close;
38
+ /** @internal */
25
39
  registerBehaviors(config: BehaviorConfig): void;
40
+ /** @internal */
26
41
  start(): void;
42
+ /** @internal */
27
43
  stop(): void;
44
+ /** @internal */
28
45
  onMouseMove(event: TerraDrawMouseEvent): void;
46
+ /** @internal */
29
47
  onClick(event: TerraDrawMouseEvent): void;
48
+ /** @internal */
30
49
  onKeyUp(event: TerraDrawKeyboardEvent): void;
50
+ /** @internal */
31
51
  onKeyDown(): void;
52
+ /** @internal */
32
53
  onDragStart(): void;
54
+ /** @internal */
33
55
  onDrag(): void;
56
+ /** @internal */
34
57
  onDragEnd(): void;
58
+ /** @internal */
35
59
  cleanUp(): void;
60
+ /** @internal */
61
+ styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling;
36
62
  }
37
63
  export {};
@@ -0,0 +1,48 @@
1
+ import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, HexColor } from "../../common";
2
+ import { GeoJSONStoreFeatures } from "../../store/store";
3
+ import { TerraDrawBaseDrawMode } from "../base.mode";
4
+ type TerraDrawRectangleModeKeyEvents = {
5
+ cancel: KeyboardEvent["key"] | null;
6
+ finish: KeyboardEvent["key"] | null;
7
+ };
8
+ type FreehandPolygonStyling = {
9
+ fillColor: HexColor;
10
+ outlineColor: HexColor;
11
+ outlineWidth: number;
12
+ fillOpacity: number;
13
+ };
14
+ export declare class TerraDrawRectangleMode extends TerraDrawBaseDrawMode<FreehandPolygonStyling> {
15
+ mode: string;
16
+ private center;
17
+ private clickCount;
18
+ private currentRectangleId;
19
+ private keyEvents;
20
+ constructor(options?: {
21
+ styles?: Partial<FreehandPolygonStyling>;
22
+ keyEvents?: TerraDrawRectangleModeKeyEvents | null;
23
+ });
24
+ private close;
25
+ /** @internal */
26
+ start(): void;
27
+ /** @internal */
28
+ stop(): void;
29
+ /** @internal */
30
+ onClick(event: TerraDrawMouseEvent): void;
31
+ /** @internal */
32
+ onMouseMove(event: TerraDrawMouseEvent): void;
33
+ /** @internal */
34
+ onKeyDown(): void;
35
+ /** @internal */
36
+ onKeyUp(event: TerraDrawKeyboardEvent): void;
37
+ /** @internal */
38
+ onDragStart(): void;
39
+ /** @internal */
40
+ onDrag(): void;
41
+ /** @internal */
42
+ onDragEnd(): void;
43
+ /** @internal */
44
+ cleanUp(): void;
45
+ /** @internal */
46
+ styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling;
47
+ }
48
+ export {};
@@ -0,0 +1,34 @@
1
+ import { TerraDrawAdapterStyling } from "../../common";
2
+ import { TerraDrawBaseDrawMode } from "../base.mode";
3
+ import { BehaviorConfig } from "../base.behavior";
4
+ type RenderModeStylingExt<T extends TerraDrawAdapterStyling> = {};
5
+ type RenderModeStyling = RenderModeStylingExt<TerraDrawAdapterStyling>;
6
+ export declare class TerraDrawRenderMode extends TerraDrawBaseDrawMode<RenderModeStyling> {
7
+ mode: string;
8
+ constructor(options: {
9
+ styles: Partial<TerraDrawAdapterStyling>;
10
+ });
11
+ /** @internal */
12
+ registerBehaviors(behaviorConfig: BehaviorConfig): void;
13
+ /** @internal */
14
+ start(): void;
15
+ /** @internal */
16
+ stop(): void;
17
+ /** @internal */
18
+ onKeyUp(): void;
19
+ /** @internal */
20
+ onKeyDown(): void;
21
+ /** @internal */
22
+ onClick(): void;
23
+ /** @internal */
24
+ onDragStart(): void;
25
+ /** @internal */
26
+ onDrag(): void;
27
+ /** @internal */
28
+ onDragEnd(): void;
29
+ /** @internal */
30
+ onMouseMove(): void;
31
+ /** @internal */
32
+ styleFeature(): TerraDrawAdapterStyling;
33
+ }
34
+ export {};
@@ -1,13 +1,14 @@
1
- import { TerraDrawMouseEvent, TerraDrawKeyboardEvent } from "../../common";
1
+ import { TerraDrawMouseEvent, TerraDrawKeyboardEvent, HexColor, TerraDrawAdapterStyling } from "../../common";
2
2
  import { TerraDrawBaseDrawMode } from "../base.mode";
3
3
  import { BehaviorConfig } from "../base.behavior";
4
- declare type TerraDrawSelectModeKeyEvents = {
5
- deselect: KeyboardEvent["key"];
6
- delete: KeyboardEvent["key"];
7
- rotate: KeyboardEvent["key"];
8
- scale: KeyboardEvent["key"];
4
+ import { GeoJSONStoreFeatures } from "../../store/store";
5
+ type TerraDrawSelectModeKeyEvents = {
6
+ deselect: KeyboardEvent["key"] | null;
7
+ delete: KeyboardEvent["key"] | null;
8
+ rotate: KeyboardEvent["key"] | null;
9
+ scale: KeyboardEvent["key"] | null;
9
10
  };
10
- declare type ModeFlags = {
11
+ type ModeFlags = {
11
12
  feature?: {
12
13
  draggable?: boolean;
13
14
  rotateable?: boolean;
@@ -19,7 +20,20 @@ declare type ModeFlags = {
19
20
  };
20
21
  };
21
22
  };
22
- export declare class TerraDrawSelectMode extends TerraDrawBaseDrawMode {
23
+ type SelectionStyling = {
24
+ selectedColor: HexColor;
25
+ selectedPointOutlineColor: HexColor;
26
+ selectPointOutlineWidth: number;
27
+ selectionPointWidth: number;
28
+ selectionPointColor: HexColor;
29
+ selectionPointOutlineColor: HexColor;
30
+ selectionPointOutlineWidth: number;
31
+ midPointColor: HexColor;
32
+ midPointOutlineColor: HexColor;
33
+ midPointWidth: number;
34
+ midPointOutlineWidth: number;
35
+ };
36
+ export declare class TerraDrawSelectMode extends TerraDrawBaseDrawMode<SelectionStyling> {
23
37
  mode: string;
24
38
  private dragEventThrottle;
25
39
  private dragEventCount;
@@ -36,11 +50,12 @@ export declare class TerraDrawSelectMode extends TerraDrawBaseDrawMode {
36
50
  private rotateFeature;
37
51
  private scaleFeature;
38
52
  constructor(options?: {
53
+ styles?: Partial<SelectionStyling>;
39
54
  pointerDistance?: number;
40
55
  flags?: {
41
56
  [mode: string]: ModeFlags;
42
57
  };
43
- keyEvents?: TerraDrawSelectModeKeyEvents;
58
+ keyEvents?: TerraDrawSelectModeKeyEvents | null;
44
59
  dragEventThrottle?: number;
45
60
  });
46
61
  registerBehaviors(config: BehaviorConfig): void;
@@ -48,15 +63,27 @@ export declare class TerraDrawSelectMode extends TerraDrawBaseDrawMode {
48
63
  private deleteSelected;
49
64
  private onRightClick;
50
65
  private onLeftClick;
66
+ /** @internal */
51
67
  start(): void;
68
+ /** @internal */
52
69
  stop(): void;
70
+ /** @internal */
53
71
  onClick(event: TerraDrawMouseEvent): void;
72
+ /** @internal */
54
73
  onKeyDown(): void;
74
+ /** @internal */
55
75
  onKeyUp(event: TerraDrawKeyboardEvent): void;
76
+ /** @internal */
56
77
  cleanUp(): void;
78
+ /** @internal */
57
79
  onDragStart(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
80
+ /** @internal */
58
81
  onDrag(event: TerraDrawMouseEvent): void;
82
+ /** @internal */
59
83
  onDragEnd(_: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
84
+ /** @internal */
60
85
  onMouseMove(event: TerraDrawMouseEvent): void;
86
+ /** @internal */
87
+ styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling;
61
88
  }
62
89
  export {};
@@ -1,5 +1,8 @@
1
+ import { TerraDrawAdapterStyling } from "../../common";
1
2
  import { TerraDrawBaseDrawMode } from "../base.mode";
2
- export declare class TerraDrawStaticMode extends TerraDrawBaseDrawMode {
3
+ type StaticModeStylingExt<T extends TerraDrawAdapterStyling> = {};
4
+ type StaticModeStyling = StaticModeStylingExt<TerraDrawAdapterStyling>;
5
+ export declare class TerraDrawStaticMode extends TerraDrawBaseDrawMode<StaticModeStyling> {
3
6
  mode: string;
4
7
  start(): void;
5
8
  stop(): void;
@@ -10,4 +13,18 @@ export declare class TerraDrawStaticMode extends TerraDrawBaseDrawMode {
10
13
  onDrag(): void;
11
14
  onDragEnd(): void;
12
15
  onMouseMove(): void;
16
+ styleFeature(): {
17
+ pointColor: `#${string}`;
18
+ pointWidth: number;
19
+ pointOutlineColor: `#${string}`;
20
+ pointOutlineWidth: number;
21
+ polygonFillColor: `#${string}`;
22
+ polygonFillOpacity: number;
23
+ polygonOutlineColor: `#${string}`;
24
+ polygonOutlineWidth: number;
25
+ lineStringWidth: number;
26
+ lineStringColor: `#${string}`;
27
+ zIndex: number;
28
+ };
13
29
  }
30
+ export {};
@@ -1,2 +1,2 @@
1
- export declare type CompareFunction<T> = (a: T, b: T) => number;
1
+ export type CompareFunction<T> = (a: T, b: T) => number;
2
2
  export declare function quickselect<T>(arr: T[], k: number, left: number, right: number, compare: CompareFunction<T>): void;
@@ -1,4 +1,4 @@
1
- export declare type Node = {
1
+ export type Node = {
2
2
  children: Node[];
3
3
  height: number;
4
4
  leaf: boolean;
@@ -1,16 +1,16 @@
1
1
  import { Feature, Point, Polygon, LineString } from "geojson";
2
- declare type JSON = string | number | boolean | null | JSONArray | JSONObject;
2
+ type JSON = string | number | boolean | null | JSONArray | JSONObject;
3
3
  export interface JSONObject {
4
4
  [member: string]: JSON;
5
5
  }
6
- declare type JSONArray = Array<JSON>;
7
- declare type DefinedProperties = Record<string, JSON>;
8
- export declare type GeoJSONStoreGeometries = Polygon | LineString | Point;
9
- export declare type BBoxPolygon = Feature<Polygon, DefinedProperties>;
10
- export declare type GeoJSONStoreFeatures = Feature<GeoJSONStoreGeometries, DefinedProperties>;
11
- export declare type StoreChangeEvents = "delete" | "create" | "update";
12
- export declare type StoreChangeHandler = (ids: string[], change: StoreChangeEvents) => void;
13
- export declare type GeoJSONStoreConfig = {
6
+ type JSONArray = Array<JSON>;
7
+ type DefinedProperties = Record<string, JSON>;
8
+ export type GeoJSONStoreGeometries = Polygon | LineString | Point;
9
+ export type BBoxPolygon = Feature<Polygon, DefinedProperties>;
10
+ export type GeoJSONStoreFeatures = Feature<GeoJSONStoreGeometries, DefinedProperties>;
11
+ export type StoreChangeEvents = "delete" | "create" | "update";
12
+ export type StoreChangeHandler = (ids: string[], change: StoreChangeEvents) => void;
13
+ export type GeoJSONStoreConfig = {
14
14
  data?: GeoJSONStoreFeatures[];
15
15
  tracked?: boolean;
16
16
  validateFeature?: (feature: unknown, tracked?: boolean) => void;
@@ -44,5 +44,7 @@ export declare class GeoJSONStore {
44
44
  }[]): string[];
45
45
  delete(ids: string[]): void;
46
46
  copyAll(): GeoJSONStoreFeatures[];
47
+ clear(): void;
48
+ size(): number;
47
49
  }
48
50
  export {};