UNPKG

leaflet-polydraw

Version:

Advanced polygon drawing and editing plugin for Leaflet with drag-and-drop, smart merging, and comprehensive editing tools

95 lines 3.25 kB
import { Feature, Polygon, MultiPolygon } from 'geojson'; import { DrawMode } from '../enums'; import { FeatureGroup, LatLngExpression } from 'leaflet'; export type PolydrawEventPayloads = { 'polygon:add': { polygon: Feature<Polygon | MultiPolygon>; }; 'polydraw:subtract': { subtractPolygon: Feature<Polygon | MultiPolygon>; }; drawCancelled: { mode?: DrawMode; }; polygonDeleted: undefined; polygonSubtracted: { subtractedPolygon: Feature<Polygon | MultiPolygon>; affectedFeatureGroups: FeatureGroup[]; resultFeatureGroups: FeatureGroup[]; }; polygonOperationComplete: { operation: string; polygon: Feature<Polygon | MultiPolygon>; featureGroup?: FeatureGroup; resultFeatureGroups?: FeatureGroup[]; }; polygonAdded: { polygon: Feature<Polygon | MultiPolygon>; featureGroup: FeatureGroup; }; polygonsUnioned: { originalPolygons: Feature<Polygon | MultiPolygon>[]; resultPolygon: Feature<Polygon | MultiPolygon>; featureGroups?: FeatureGroup[]; }; 'polygon:intersect': { polygon1: Feature<Polygon | MultiPolygon>; polygon2: Feature<Polygon | MultiPolygon>; callback: (intersects: boolean) => void; }; 'freehand:complete': { polygon: Feature<Polygon | MultiPolygon>; }; 'polydraw:polygon:created': { polygon: Feature<Polygon | MultiPolygon>; isPointToPoint?: boolean; mode?: DrawMode; }; 'polydraw:polygon:updated': { polygon: Feature<Polygon | MultiPolygon>; operation?: string; allowMerge?: boolean; optimizationLevel?: number; }; 'polydraw:polygon:deleted': undefined; 'polydraw:mode:change': { mode: DrawMode; }; 'polydraw:draw:cancel': { mode?: DrawMode; }; 'polydraw:menu:action': { action: string; latLngs?: LatLngExpression[]; featureGroup?: FeatureGroup; }; 'polydraw:check:intersection': { polygon1: Feature<Polygon | MultiPolygon>; polygon2: Feature<Polygon | MultiPolygon>; callback: (intersects: boolean) => void; }; }; export type PolydrawEvent = keyof PolydrawEventPayloads; export type PolydrawEventCallback<T extends PolydrawEvent = PolydrawEvent> = (data: PolydrawEventPayloads[T]) => void; export declare class EventManager { private eventListeners; /** * Register an event listener. * @param event - The event to listen for. * @param callback - The callback to execute when the event is emitted. */ on<T extends PolydrawEvent>(event: T, callback: PolydrawEventCallback<T>): void; /** * Unregister an event listener. * @param event - The event to stop listening for. * @param callback - The specific callback to remove. */ off<T extends PolydrawEvent>(event: T, callback: PolydrawEventCallback<T>): void; /** * Emit an event. * @param event - The event to emit. * @param data - The data to pass to the event listeners. */ emit<T extends PolydrawEvent>(event: T, data: PolydrawEventPayloads[T]): void; } //# sourceMappingURL=event-manager.d.ts.map