terra-draw 1.0.0 → 1.1.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.
- package/README.md +33 -4
- package/dist/common.d.ts +1 -0
- package/dist/geometry/point-on-line.d.ts +1 -0
- package/dist/geometry/web-mercator-point-on-line.d.ts +1 -0
- package/dist/modes/coordinate-snapping.behavior.d.ts +7 -2
- package/dist/modes/line-snapping.behavior.d.ts +7 -2
- package/dist/modes/point/point.mode.d.ts +16 -4
- package/dist/modes/polygon/polygon.mode.d.ts +17 -4
- package/dist/terra-draw.cjs +1 -1
- package/dist/terra-draw.cjs.map +1 -1
- package/dist/terra-draw.d.ts +5 -40
- package/dist/terra-draw.modern.js +1 -1
- package/dist/terra-draw.modern.js.map +1 -1
- package/dist/terra-draw.module.js +1 -1
- package/dist/terra-draw.module.js.map +1 -1
- package/dist/terra-draw.umd.js +1 -1
- package/dist/terra-draw.umd.js.map +1 -1
- package/package.json +3 -3
- package/dist/test/jest.matchers.d.ts +0 -1
- package/dist/test/mock-callbacks.d.ts +0 -2
- package/dist/test/mock-pointer-event.d.ts +0 -1
package/README.md
CHANGED
|
@@ -1,7 +1,36 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
7
|
+
<p></p>
|
|
4
8
|
|
|
5
|
-
|
|
9
|
+

|
|
10
|
+
[](https://badge.fury.io/js/terra-draw)
|
|
6
11
|
|
|
7
|
-
|
|
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
|
@@ -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
|
-
|
|
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
|
}
|
|
@@ -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
|
-
|
|
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
|
}
|
|
@@ -1,21 +1,33 @@
|
|
|
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
25
|
mode: string;
|
|
18
26
|
private cursors;
|
|
27
|
+
private editable;
|
|
28
|
+
private editedFeatureId;
|
|
29
|
+
private pixelDistance;
|
|
30
|
+
private clickBoundingBox;
|
|
19
31
|
constructor(options?: TerraDrawPointModeOptions<PointModeStyling>);
|
|
20
32
|
/** @internal */
|
|
21
33
|
start(): void;
|
|
@@ -31,12 +43,12 @@ export declare class TerraDrawPointMode extends TerraDrawBaseDrawMode<PointModeS
|
|
|
31
43
|
onKeyUp(): void;
|
|
32
44
|
/** @internal */
|
|
33
45
|
cleanUp(): void;
|
|
46
|
+
onDragStart(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
|
|
34
47
|
/** @internal */
|
|
35
|
-
|
|
48
|
+
onDrag(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
|
|
36
49
|
/** @internal */
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
onDragEnd(): void;
|
|
50
|
+
onDragEnd(_: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
|
|
51
|
+
registerBehaviors(config: BehaviorConfig): void;
|
|
40
52
|
/** @internal */
|
|
41
53
|
styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling;
|
|
42
54
|
validateFeature(feature: unknown): StoreValidation;
|
|
@@ -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,6 +41,7 @@ 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
47
|
mode: string;
|
|
@@ -42,11 +49,18 @@ export declare class TerraDrawPolygonMode extends TerraDrawBaseDrawMode<PolygonS
|
|
|
42
49
|
private currentId;
|
|
43
50
|
private keyEvents;
|
|
44
51
|
private snapping;
|
|
52
|
+
private editable;
|
|
45
53
|
private snappedPointId;
|
|
54
|
+
private editedFeatureId;
|
|
55
|
+
private editedFeatureCoordinateIndex;
|
|
56
|
+
private editedSnapType;
|
|
57
|
+
private editedInsertIndex;
|
|
58
|
+
private editedPointId;
|
|
46
59
|
private lineSnapping;
|
|
47
60
|
private coordinateSnapping;
|
|
48
61
|
private pixelDistance;
|
|
49
62
|
private closingPoints;
|
|
63
|
+
private clickBoundingBox;
|
|
50
64
|
private cursors;
|
|
51
65
|
private mouseMove;
|
|
52
66
|
constructor(options?: TerraDrawPolygonModeOptions<PolygonStyling>);
|
|
@@ -67,12 +81,11 @@ export declare class TerraDrawPolygonMode extends TerraDrawBaseDrawMode<PolygonS
|
|
|
67
81
|
onKeyUp(event: TerraDrawKeyboardEvent): void;
|
|
68
82
|
/** @internal */
|
|
69
83
|
onKeyDown(): void;
|
|
84
|
+
onDragStart(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
|
|
70
85
|
/** @internal */
|
|
71
|
-
|
|
86
|
+
onDrag(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
|
|
72
87
|
/** @internal */
|
|
73
|
-
|
|
74
|
-
/** @internal */
|
|
75
|
-
onDragEnd(): void;
|
|
88
|
+
onDragEnd(_: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
|
|
76
89
|
/** @internal */
|
|
77
90
|
cleanUp(): void;
|
|
78
91
|
/** @internal */
|