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
TypeScript
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