UNPKG

leaflet-polydraw

Version:

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

118 lines 4.27 kB
import * as L from 'leaflet'; import { TurfHelper } from '../turf-helper'; import { PolygonInformationService } from '../polygon-information.service'; import type { Feature, Polygon, MultiPolygon } from 'geojson'; import type { PolydrawConfig, PolydrawPolygon } from '../types/polydraw-interfaces'; import { ModeManager } from './mode-manager'; import { EventManager } from './event-manager'; export interface InteractionResult { success: boolean; featureGroups?: L.FeatureGroup[]; error?: string; } export interface PolygonInteractionManagerDependencies { turfHelper: TurfHelper; polygonInformation: PolygonInformationService; map: L.Map; config: PolydrawConfig; modeManager: ModeManager; eventManager: EventManager; } /** * PolygonInteractionManager handles all interactions with existing polygons. * This includes dragging polygons, dragging markers, edge interactions, and popup menus. */ export declare class PolygonInteractionManager { private markerFeatureGroupMap; private markerModifierHandlers; private _activeMarker; private isDraggingMarker; private turfHelper; private polygonInformation; private map; private config; private modeManager; private eventManager; private currentDragPolygon; private currentModifierDragMode; private isModifierKeyHeld; private _openMenuPopup; private getFeatureGroups; private addFeatureGroup; private removeFeatureGroup; constructor(dependencies: PolygonInteractionManagerDependencies, featureGroupAccess: { getFeatureGroups: () => L.FeatureGroup[]; addFeatureGroup: (fg: L.FeatureGroup) => void; removeFeatureGroup: (fg: L.FeatureGroup) => void; }); /** * Add markers to a polygon feature group */ addMarkers(latlngs: L.LatLngLiteral[], featureGroup: L.FeatureGroup): void; /** * Add hole markers to a polygon feature group, with configurable special markers. */ addHoleMarkers(latlngs: L.LatLngLiteral[], featureGroup: L.FeatureGroup): void; /** * Add edge click listeners to a polygon */ addEdgeClickListeners(polygon: L.Polygon, featureGroup: L.FeatureGroup): void; /** * Enable polygon dragging functionality */ enablePolygonDragging(polygon: PolydrawPolygon, latlngs: Feature<Polygon | MultiPolygon>): void; /** * Update marker draggable state based on current mode */ updateMarkerDraggableState(): void; /** * Update all markers for edge deletion visual feedback */ updateAllMarkersForEdgeDeletion(showFeedback: boolean): void; /** * Update individual marker for edge deletion visual feedback */ updateMarkerForEdgeDeletion(marker: L.Marker, showFeedback: boolean): void; /** * Set modifier key held state */ setModifierKeyHeld(isHeld: boolean): void; private onEdgeClick; private highlightEdgeOnHover; private elbowClicked; private findFeatureGroupForPoly; private markerDrag; private markerDragEnd; private onPolygonMouseMove; private onPolygonMouseUp; private offsetPolygonCoordinates; private updateMarkersAndHoleLinesDuringDrag; private updatePolygonAfterDrag; private getDragSubtractModifierKey; private detectDragSubtractModifierKey; private setSubtractVisualMode; private updateMarkerColorsForSubtractMode; private handleModifierToggleDuringDrag; private isModifierDragActive; private performModifierSubtract; /** * Check if two bounding boxes overlap */ private boundingBoxesOverlap; private isDragSubtractModifierKeyPressed; private getEdgeDeletionModifierKey; private isEdgeDeletionModifierKeyPressed; private onMarkerHoverForEdgeDeletion; private onMarkerHoverForEdgeDeletionEvent; private onMarkerLeaveForEdgeDeletionEvent; private getMarkerIndex; private ensureMarkerSeparation; private findAlternativeMarkerPosition; private createDivIcon; private getLatLngInfoString; private generateMenuMarkerPopup; private getPolygonGeoJSONFromFeatureGroup; private getTotalPolygonPerimeter; private generateInfoMarkerPopup; } //# sourceMappingURL=polygon-interaction-manager.d.ts.map