terra-draw 0.0.1-alpha.63 → 0.0.1-alpha.64
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/.devcontainer/devcontainer.json +9 -3
- package/dist/geometry/measure/area.d.ts +2 -0
- package/dist/modes/select/behaviors/drag-coordinate-resize.behavior.d.ts +2 -2
- package/dist/modes/select/behaviors/drag-coordinate.behavior.d.ts +2 -2
- package/dist/modes/select/behaviors/drag-feature.behavior.d.ts +2 -2
- package/dist/modes/select/behaviors/rotate-feature.behavior.d.ts +2 -2
- package/dist/modes/select/behaviors/scale-feature.behavior.d.ts +2 -2
- package/dist/modes/select/select.mode.d.ts +2 -0
- package/dist/store/store.d.ts +1 -1
- package/dist/terra-draw.cjs +1 -1
- package/dist/terra-draw.cjs.map +1 -1
- package/dist/terra-draw.d.ts +3 -1
- 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/dist/validations/max-size.validation.d.ts +2 -0
- package/dist/validations/min-size.validation.d.ts +2 -0
- package/package.json +11 -11
- package/dist/adapters/common/adapter-listener.d.ts +0 -22
- package/dist/adapters/common/base.adapter.d.ts +0 -59
- package/e2e/src/index.ts +0 -165
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "terra-draw",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.64",
|
|
4
4
|
"description": "Frictionless map drawing across mapping provider",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"docs": "typedoc",
|
|
@@ -55,20 +55,20 @@
|
|
|
55
55
|
"@commitlint/cli": "^17.1.2",
|
|
56
56
|
"@commitlint/config-conventional": "^17.1.0",
|
|
57
57
|
"@googlemaps/js-api-loader": "^1.14.3",
|
|
58
|
-
"@swc/jest": "^0.2.
|
|
58
|
+
"@swc/jest": "^0.2.36",
|
|
59
59
|
"@types/geojson": "^7946.0.8",
|
|
60
60
|
"@types/google.maps": "^3.49.2",
|
|
61
|
-
"@types/jest": "^
|
|
61
|
+
"@types/jest": "^29.5.12",
|
|
62
62
|
"@types/leaflet": "^1.7.11",
|
|
63
63
|
"@types/mapbox-gl": "^2.7.3",
|
|
64
64
|
"@types/rbush": "^3.0.0",
|
|
65
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
66
|
-
"@typescript-eslint/parser": "^
|
|
65
|
+
"@typescript-eslint/eslint-plugin": "^7.5.0",
|
|
66
|
+
"@typescript-eslint/parser": "^7.5.0",
|
|
67
67
|
"eslint": "^8.24.0",
|
|
68
68
|
"eslint-config-prettier": "^9.0.0",
|
|
69
69
|
"eslint-plugin-prettier": "^5.0.0",
|
|
70
70
|
"husky": "^7.0.0",
|
|
71
|
-
"jest": "^29.
|
|
71
|
+
"jest": "^29.7.0",
|
|
72
72
|
"jest-environment-jsdom": "^29.7.0",
|
|
73
73
|
"leaflet": "^1.8.0",
|
|
74
74
|
"mapbox-gl": "^2.13.0",
|
|
@@ -77,11 +77,11 @@
|
|
|
77
77
|
"ol": "^7.1.0",
|
|
78
78
|
"serve": "^14.1.2",
|
|
79
79
|
"standard-version": "^9.5.0",
|
|
80
|
-
"ts-jest": "^29.1.
|
|
81
|
-
"ts-loader": "^9.
|
|
82
|
-
"tsx": "^4.7.
|
|
83
|
-
"typedoc": "^0.25.
|
|
84
|
-
"typescript": "^5.
|
|
80
|
+
"ts-jest": "^29.1.2",
|
|
81
|
+
"ts-loader": "^9.5.1",
|
|
82
|
+
"tsx": "^4.7.2",
|
|
83
|
+
"typedoc": "^0.25.12",
|
|
84
|
+
"typescript": "^5.4.4"
|
|
85
85
|
},
|
|
86
86
|
"commitlint": {
|
|
87
87
|
"extends": [
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export declare class AdapterListener<Callback extends (...args: any[]) => any> {
|
|
2
|
-
name: string;
|
|
3
|
-
callback: (...args: any[]) => any;
|
|
4
|
-
registered: boolean;
|
|
5
|
-
register: any;
|
|
6
|
-
unregister: any;
|
|
7
|
-
/**
|
|
8
|
-
* Creates a new AdapterListener instance with the provided configuration.
|
|
9
|
-
*
|
|
10
|
-
* @param {Object} config - The configuration object for the listener.
|
|
11
|
-
* @param {string} config.name - The name of the event listener.
|
|
12
|
-
* @param {Function} config.callback - The callback function to be called when the event is triggered.
|
|
13
|
-
* @param {Function} config.unregister - The function to unregister the event listeners.
|
|
14
|
-
* @param {Function} config.register - The function to register the event listeners.
|
|
15
|
-
*/
|
|
16
|
-
constructor({ name, callback, unregister, register, }: {
|
|
17
|
-
name: string;
|
|
18
|
-
callback: Callback;
|
|
19
|
-
unregister: (callbacks: Callback) => void;
|
|
20
|
-
register: (callback: Callback) => void;
|
|
21
|
-
});
|
|
22
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { Project, Unproject, TerraDrawCallbacks, TerraDrawChanges, TerraDrawMouseEvent, SetCursor, TerraDrawStylingFunction, GetLngLatFromEvent } from "../../common";
|
|
2
|
-
import { AdapterListener } from "./adapter-listener";
|
|
3
|
-
type BasePointerListener = (event: PointerEvent) => void;
|
|
4
|
-
type BaseKeyboardListener = (event: KeyboardEvent) => void;
|
|
5
|
-
type BaseMouseListener = (event: MouseEvent) => void;
|
|
6
|
-
export type BaseAdapterConfig = {
|
|
7
|
-
coordinatePrecision?: number;
|
|
8
|
-
minPixelDragDistanceDrawing?: number;
|
|
9
|
-
minPixelDragDistance?: number;
|
|
10
|
-
minPixelDragDistanceSelecting?: number;
|
|
11
|
-
};
|
|
12
|
-
export declare abstract class TerraDrawBaseAdapter {
|
|
13
|
-
constructor(config: BaseAdapterConfig);
|
|
14
|
-
protected _minPixelDragDistance: number;
|
|
15
|
-
protected _minPixelDragDistanceDrawing: number;
|
|
16
|
-
protected _minPixelDragDistanceSelecting: number;
|
|
17
|
-
protected _lastDrawEvent: TerraDrawMouseEvent | undefined;
|
|
18
|
-
protected _coordinatePrecision: number;
|
|
19
|
-
protected _heldKeys: Set<string>;
|
|
20
|
-
protected _listeners: AdapterListener<BasePointerListener | BaseKeyboardListener | BaseMouseListener>[];
|
|
21
|
-
protected _dragState: "not-dragging" | "pre-dragging" | "dragging";
|
|
22
|
-
protected _currentModeCallbacks: TerraDrawCallbacks | undefined;
|
|
23
|
-
protected abstract getMapEventElement(): HTMLElement;
|
|
24
|
-
protected getButton(event: PointerEvent | MouseEvent): "neither" | "left" | "middle" | "right";
|
|
25
|
-
protected getMapElementXYPosition(event: PointerEvent | MouseEvent): {
|
|
26
|
-
containerX: number;
|
|
27
|
-
containerY: number;
|
|
28
|
-
};
|
|
29
|
-
protected getDrawEventFromEvent(event: PointerEvent | MouseEvent): TerraDrawMouseEvent | null;
|
|
30
|
-
/**
|
|
31
|
-
* Registers the provided callbacks for the current drawing mode and attaches
|
|
32
|
-
* the necessary event listeners.
|
|
33
|
-
* @param {TerraDrawCallbacks} callbacks - An object containing callback functions
|
|
34
|
-
* for handling various drawing events in the current mode.
|
|
35
|
-
*/
|
|
36
|
-
register(callbacks: TerraDrawCallbacks): void;
|
|
37
|
-
/**
|
|
38
|
-
* Gets the coordinate precision.
|
|
39
|
-
* @returns {number} The coordinate precision.
|
|
40
|
-
* @description The coordinate precision is the number of decimal places. Note that the precision will be overriden by the precision of the TerraDraw Adapter.
|
|
41
|
-
*/
|
|
42
|
-
getCoordinatePrecision(): number;
|
|
43
|
-
private getAdapterListeners;
|
|
44
|
-
/**
|
|
45
|
-
* Unregisters the event listeners for the current drawing mode.
|
|
46
|
-
* This is typically called when switching between drawing modes or
|
|
47
|
-
* stopping the drawing process.
|
|
48
|
-
*/
|
|
49
|
-
unregister(): void;
|
|
50
|
-
abstract clear(): void;
|
|
51
|
-
abstract project(...args: Parameters<Project>): ReturnType<Project>;
|
|
52
|
-
abstract unproject(...args: Parameters<Unproject>): ReturnType<Unproject>;
|
|
53
|
-
abstract setCursor(...args: Parameters<SetCursor>): ReturnType<SetCursor>;
|
|
54
|
-
abstract getLngLatFromEvent(...event: Parameters<GetLngLatFromEvent>): ReturnType<GetLngLatFromEvent>;
|
|
55
|
-
abstract setDraggability(enabled: boolean): void;
|
|
56
|
-
abstract setDoubleClickToZoom(enabled: boolean): void;
|
|
57
|
-
abstract render(changes: TerraDrawChanges, styling: TerraDrawStylingFunction): void;
|
|
58
|
-
}
|
|
59
|
-
export {};
|
package/e2e/src/index.ts
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
import L from "leaflet";
|
|
2
|
-
import {
|
|
3
|
-
TerraDraw,
|
|
4
|
-
TerraDrawCircleMode,
|
|
5
|
-
TerraDrawFreehandMode,
|
|
6
|
-
TerraDrawGreatCircleMode,
|
|
7
|
-
TerraDrawLeafletAdapter,
|
|
8
|
-
TerraDrawLineStringMode,
|
|
9
|
-
TerraDrawPointMode,
|
|
10
|
-
TerraDrawPolygonMode,
|
|
11
|
-
TerraDrawRectangleMode,
|
|
12
|
-
TerraDrawRenderMode,
|
|
13
|
-
TerraDrawSelectMode,
|
|
14
|
-
} from "../../src/terra-draw";
|
|
15
|
-
|
|
16
|
-
const example = {
|
|
17
|
-
lng: -0.118092,
|
|
18
|
-
lat: 51.509865,
|
|
19
|
-
zoom: 12,
|
|
20
|
-
initialised: [],
|
|
21
|
-
initLeaflet() {
|
|
22
|
-
const currentSelected: {
|
|
23
|
-
mode: undefined | string;
|
|
24
|
-
button: HTMLButtonElement | undefined;
|
|
25
|
-
} = { mode: undefined, button: undefined };
|
|
26
|
-
|
|
27
|
-
const { lng, lat, zoom } = this;
|
|
28
|
-
|
|
29
|
-
const map = L.map("map", {
|
|
30
|
-
center: [lat, lng],
|
|
31
|
-
zoom: zoom + 1, // starting zoom
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
map.removeControl(map.zoomControl);
|
|
35
|
-
|
|
36
|
-
L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
|
|
37
|
-
attribution:
|
|
38
|
-
'© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
|
|
39
|
-
}).addTo(map);
|
|
40
|
-
|
|
41
|
-
const draw = new TerraDraw({
|
|
42
|
-
adapter: new TerraDrawLeafletAdapter({
|
|
43
|
-
lib: L,
|
|
44
|
-
map,
|
|
45
|
-
coordinatePrecision: 6,
|
|
46
|
-
}),
|
|
47
|
-
modes: [
|
|
48
|
-
new TerraDrawSelectMode({
|
|
49
|
-
dragEventThrottle: 0,
|
|
50
|
-
flags: {
|
|
51
|
-
arbitary: {
|
|
52
|
-
feature: {},
|
|
53
|
-
},
|
|
54
|
-
polygon: {
|
|
55
|
-
feature: {
|
|
56
|
-
draggable: true,
|
|
57
|
-
rotateable: true,
|
|
58
|
-
scaleable: true,
|
|
59
|
-
coordinates: {
|
|
60
|
-
midpoints: true,
|
|
61
|
-
draggable: true,
|
|
62
|
-
deletable: true,
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
freehand: {
|
|
67
|
-
feature: { draggable: true, coordinates: {} },
|
|
68
|
-
},
|
|
69
|
-
linestring: {
|
|
70
|
-
feature: {
|
|
71
|
-
draggable: true,
|
|
72
|
-
coordinates: {
|
|
73
|
-
midpoints: true,
|
|
74
|
-
draggable: true,
|
|
75
|
-
deletable: true,
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
rectangle: {
|
|
80
|
-
feature: {
|
|
81
|
-
draggable: true,
|
|
82
|
-
coordinates: {
|
|
83
|
-
draggable: true,
|
|
84
|
-
resizable: "opposite-web-mercator",
|
|
85
|
-
},
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
circle: {
|
|
89
|
-
feature: {
|
|
90
|
-
draggable: true,
|
|
91
|
-
coordinates: {
|
|
92
|
-
draggable: true,
|
|
93
|
-
resizable: "center-web-mercator",
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
|
-
},
|
|
97
|
-
point: {
|
|
98
|
-
feature: {
|
|
99
|
-
draggable: true,
|
|
100
|
-
},
|
|
101
|
-
},
|
|
102
|
-
},
|
|
103
|
-
}),
|
|
104
|
-
new TerraDrawPointMode(),
|
|
105
|
-
new TerraDrawLineStringMode({
|
|
106
|
-
snapping: true,
|
|
107
|
-
allowSelfIntersections: false,
|
|
108
|
-
}),
|
|
109
|
-
new TerraDrawGreatCircleMode({ snapping: true }),
|
|
110
|
-
new TerraDrawPolygonMode({
|
|
111
|
-
snapping: true,
|
|
112
|
-
allowSelfIntersections: false,
|
|
113
|
-
}),
|
|
114
|
-
new TerraDrawRectangleMode(),
|
|
115
|
-
new TerraDrawCircleMode(),
|
|
116
|
-
new TerraDrawFreehandMode(),
|
|
117
|
-
new TerraDrawRenderMode({
|
|
118
|
-
modeName: "arbitary",
|
|
119
|
-
styles: {
|
|
120
|
-
polygonFillColor: "#4357AD",
|
|
121
|
-
polygonOutlineColor: "#48A9A6",
|
|
122
|
-
polygonOutlineWidth: 2,
|
|
123
|
-
},
|
|
124
|
-
}),
|
|
125
|
-
],
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
draw.start();
|
|
129
|
-
|
|
130
|
-
[
|
|
131
|
-
"select",
|
|
132
|
-
"point",
|
|
133
|
-
"linestring",
|
|
134
|
-
"polygon",
|
|
135
|
-
"rectangle",
|
|
136
|
-
"circle",
|
|
137
|
-
"greatcircle",
|
|
138
|
-
].forEach((mode) => {
|
|
139
|
-
(document.getElementById(mode) as HTMLButtonElement).addEventListener(
|
|
140
|
-
"click",
|
|
141
|
-
() => {
|
|
142
|
-
currentSelected.mode = mode;
|
|
143
|
-
draw.setMode(currentSelected.mode);
|
|
144
|
-
|
|
145
|
-
if (currentSelected.button) {
|
|
146
|
-
currentSelected.button.style.color = "565656";
|
|
147
|
-
}
|
|
148
|
-
currentSelected.button = document.getElementById(
|
|
149
|
-
mode,
|
|
150
|
-
) as HTMLButtonElement;
|
|
151
|
-
currentSelected.button.style.color = "#27ccff";
|
|
152
|
-
},
|
|
153
|
-
);
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
(document.getElementById("clear") as HTMLButtonElement).addEventListener(
|
|
157
|
-
"click",
|
|
158
|
-
() => {
|
|
159
|
-
draw.clear();
|
|
160
|
-
},
|
|
161
|
-
);
|
|
162
|
-
},
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
example.initLeaflet();
|