import { Evented } from "../events.js"; import { latLng } from "../geo.js"; import { FeatureGroup } from "../layer-group.js"; import type { Layer } from "../layer.js"; import { Marker } from "../layers/marker.js"; import { Circle, Polygon, Polyline, type CircleRadius, type PathOptions } from "../layers/vector.js"; import type { GeoJSONData, GeoJSONFeature, GeoJSONFeatureCollection } from "../layers/geojson.js"; import type { Orihon } from "../map.js"; import { type DrawSnapOptions } from "./snap.js"; export type DrawMode = "off" | "point" | "polyline" | "polygon" | "rectangle" | "circle" | "edit" | "delete"; export interface DrawHandlerOptions { modes?: DrawMode[]; snap?: DrawSnapOptions; snapLayers?: Layer[]; guide?: PathOptions; featureGroup?: FeatureGroup; capturePointer?: boolean; } type MutableLayer = Marker | Polyline | Polygon | Circle; export type DrawEditVertexDetail = { layer: Marker; latlng: ReturnType; role?: never; } | { layer: Polyline | Polygon; latlng: ReturnType; ring: number; index: number; role?: never; } | { layer: Circle; latlng: ReturnType; role: "center"; } | ({ layer: Circle; latlng: ReturnType; role: "radius"; } & CircleRadius); export interface DrawEventMap { modechange: { mode: DrawMode; previous: DrawMode; }; editstart: {}; deletestart: {}; drawstart: { mode: DrawMode; latlng: ReturnType; }; drawvertex: { mode: DrawMode; latlng: ReturnType; vertices: ReturnType[]; }; drawcomplete: { layer: Layer; geojson: GeoJSONFeature; }; editvertex: DrawEditVertexDetail; editcomplete: { layer: MutableLayer; geojson: GeoJSONFeatureCollection; }; deletecomplete: { layer: Layer; geojson: GeoJSONFeatureCollection; }; undo: { geojson: GeoJSONFeatureCollection; }; redo: { geojson: GeoJSONFeatureCollection; }; snap: { latlng: ReturnType; layer?: Layer; }; } export declare class DrawHandler extends Evented { #private; readonly options: Required> & { featureGroup: FeatureGroup; snapLayers: Layer[]; }; readonly featureGroup: FeatureGroup; private vertices; private guideLayer; private handles; private editingLayer; private snapshots; private snapshotIndex; private unsubs; private behaviors; private dragStart; private dragPoint; private addedGroup; constructor(options?: DrawHandlerOptions); get map(): Orihon | null; get mode(): DrawMode; get isDestroyed(): boolean; addTo(map: Orihon): this; remove(): this; destroy(): this; setMode(mode: DrawMode): this; finish(): this; /** * Record the current geometry in the undo history. An editor living outside the plugin — a host * application with its own handles — mutates a layer directly, and without this the change never * reaches undo/redo, so the next undo would silently restore geometry from before it. */ recordEdit(layer: MutableLayer): this; cancel(): this; undo(): this; redo(): this; toGeoJSON(): GeoJSONFeatureCollection; loadData(data: GeoJSONData): this; } export {}; //# sourceMappingURL=handler.d.ts.map