Skip to content

Commit 30eb795

Browse files
Update and rename useLeafletEditable.ts to useLeafletEditable.js
1 parent 9bd33a0 commit 30eb795

File tree

1 file changed

+24
-73
lines changed

1 file changed

+24
-73
lines changed

leaflet-editable-hook/src/hooks/useLeafletEditable.ts renamed to leaflet-editable-hook/src/hooks/useLeafletEditable.js

Lines changed: 24 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,6 @@
1-
import { useMemo, useCallback, useEffect } from "react";
2-
import {
3-
Polyline,
4-
Marker,
5-
Polygon,
6-
Circle,
7-
Rectangle,
8-
CircleMarker,
9-
LayerEvent,
10-
LeafletMouseEvent,
11-
} from "leaflet";
1+
import { useCallback, useEffect } from "react";
2+
import "leaflet-editable";
3+
import { Polyline, Marker, Polygon, Circle, Rectangle } from "leaflet";
124
import { useMap } from "react-leaflet";
135

146
const eventHandlers = Object.freeze({
@@ -48,55 +40,11 @@ const eventHandlers = Object.freeze({
4840
onShapeDeleted: "editable:shape:deleted",
4941
});
5042

51-
// Define the types for the events object
52-
type LeafletEditableEventHandlers = {
53-
onCreated?: (e: LayerEvent) => void;
54-
onEnable?: (e: LayerEvent) => void;
55-
onDisable?: (e: LayerEvent) => void;
56-
onEditing?: (e: LayerEvent) => void;
57-
onDragStart?: (e: LayerEvent) => void;
58-
onDrag?: (e: LayerEvent) => void;
59-
onDragEnd?: (e: LayerEvent) => void;
60-
onDrawingStart?: (e: LayerEvent) => void;
61-
onDrawingEnd?: (e: LayerEvent) => void;
62-
onDrawingCancel?: (e: LayerEvent) => void;
63-
onDrawingCommit?: (e: LayerEvent) => void;
64-
onDrawingMousedown?: (e: LayerEvent) => void;
65-
onDrawingMouseup?: (e: LayerEvent) => void;
66-
onDrawingClick?: (e: LayerEvent) => void;
67-
onDrawingMove?: (e: LayerEvent) => void;
68-
onDrawingClicked?: (e: LayerEvent) => void;
69-
onVertexNew?: (e: LayerEvent) => void;
70-
onVertexClick?: (e: LayerEvent) => void;
71-
onVertexClicked?: (e: LayerEvent) => void;
72-
onVertexRawclick?: (e: LayerEvent) => void;
73-
onVertexDeleted?: (e: LayerEvent) => void;
74-
onVertexCtrlclick?: (e: LayerEvent) => void;
75-
onVertexShiftclick?: (e: LayerEvent) => void;
76-
onVertexMetakeyclick?: (e: LayerEvent) => void;
77-
onVertexAltclick?: (e: LayerEvent) => void;
78-
onVertexContextmenu?: (e: LayerEvent) => void;
79-
onVertexMousedown?: (e: LayerEvent) => void;
80-
onVertexDrag?: (e: LayerEvent) => void;
81-
onVertexDragstart?: (e: LayerEvent) => void;
82-
onVertexDragend?: (e: LayerEvent) => void;
83-
onMiddlemarkerMousedown?: (e: LayerEvent) => void;
84-
onShapeNew?: (e: LayerEvent) => void;
85-
onShapeDelete?: (e: LayerEvent) => void;
86-
onShapeDeleted?: (e: LayerEvent) => void;
87-
};
88-
89-
interface UseLeafletEditableOptions {
90-
events: LeafletEditableEventHandlers;
91-
}
92-
93-
function useLeafletEditable({ events }: UseLeafletEditableOptions) {
43+
function useLeafletEditable({ events }) {
9444
const map = useMap();
9545

9646
useEffect(() => {
97-
const keys = Object.keys(eventHandlers) as Array<
98-
keyof typeof eventHandlers
99-
>;
47+
const keys = Object.keys(eventHandlers);
10048
keys.forEach((key) => {
10149
const handler = events[key];
10250
if (handler) {
@@ -113,62 +61,63 @@ function useLeafletEditable({ events }: UseLeafletEditableOptions) {
11361
});
11462
};
11563
}, [map, events]);
116-
const drawing = useMemo(() => map.editTools.drawing(), [map]);
64+
65+
const drawing = useCallback(() => map.editTools.drawing(), [map]);
11766

11867
const stopDrawing = useCallback(() => map.editTools.stopDrawing(), [map]);
11968

12069
const commitDrawing = useCallback(
121-
(e: LeafletMouseEvent) => map.editTools.commitDrawing(e),
70+
(event) => map.editTools.commitDrawing(event),
12271
[map],
12372
);
12473

12574
const startPolyline = useCallback(
126-
(latlng, options) => map.editTools.startPolyline(latlng, options),
75+
(latLng, options) => map.editTools.startPolyline(latLng, options),
12776
[map],
12877
);
12978

13079
const startPolygon = useCallback(
131-
(latlng, options) => map.editTools.startPolygon(latlng, options),
80+
(latLng, options) => map.editTools.startPolygon(latLng, options),
13281
[map],
13382
);
13483

13584
const startMarker = useCallback(
136-
(latlng, options) => map.editTools.startMarker(latlng, options),
85+
(latLng, options) => map.editTools.startMarker(latLng, options),
13786
[map],
13887
);
13988

14089
const startRectangle = useCallback(
141-
(latlng, options) => map.editTools.startRectangle(latlng, options),
90+
(latLng, options) => map.editTools.startRectangle(latLng, options),
14291
[map],
14392
);
14493

14594
const startCircle = useCallback(
146-
(latlng, options) => map.editTools.startCircle(latlng, options),
95+
(latLng, options) => map.editTools.startCircle(latLng, options),
14796
[map],
14897
);
14998

15099
const clearAll = useCallback(() => map.editTools.clearLayers(), [map]);
151100

152101
// BaseEditor related methods
153-
const enableEditing = useCallback(
154-
(feature: L.Layer) => {
102+
const enableEdit = useCallback(
103+
(feature) => {
155104
if (
156105
feature instanceof Marker ||
157106
feature instanceof Polyline ||
158107
feature instanceof Polygon ||
159108
feature instanceof Rectangle ||
160-
feature instanceof Circle ||
161-
feature instanceof CircleMarker
109+
feature instanceof Circle
162110
) {
163-
//console.log(feature);
164111
feature.enableEdit();
112+
} else {
113+
console.error("Feature is not editable", feature);
165114
}
166115
},
167116
[map],
168117
);
169118

170-
const disableEditing = useCallback(
171-
(feature: L.Layer) => {
119+
const disableEdit = useCallback(
120+
(feature) => {
172121
if (
173122
feature instanceof Marker ||
174123
feature instanceof Polyline ||
@@ -177,6 +126,8 @@ function useLeafletEditable({ events }: UseLeafletEditableOptions) {
177126
feature instanceof Circle
178127
) {
179128
feature.disableEdit();
129+
} else {
130+
console.error("Feature is not editable", feature);
180131
}
181132
},
182133
[map],
@@ -192,8 +143,8 @@ function useLeafletEditable({ events }: UseLeafletEditableOptions) {
192143
startRectangle,
193144
startCircle,
194145
clearAll,
195-
enableEditing,
196-
disableEditing,
146+
enableEdit,
147+
disableEdit,
197148
};
198149
}
199150

0 commit comments

Comments
 (0)