UNPKG

terra-draw

Version:

Frictionless map drawing across mapping provider

127 lines (126 loc) 4.47 kB
import { TerraDrawMouseEvent, TerraDrawKeyboardEvent, TerraDrawAdapterStyling, HexColorStyling, NumericStyling, Cursor, Validation, Snapping } from "../../common"; import { BaseModeOptions, CustomStyling, TerraDrawBaseSelectMode } from "../base.mode"; import { BehaviorConfig } from "../base.behavior"; import { FeatureId, GeoJSONStoreFeatures } from "../../store/store"; import { ResizeOptions } from "./behaviors/drag-coordinate-resize.behavior"; type TerraDrawSelectModeKeyEvents = { deselect: KeyboardEvent["key"] | null; delete: KeyboardEvent["key"] | null; rotate: KeyboardEvent["key"][] | null; scale: KeyboardEvent["key"][] | null; }; type ModeFlags = { feature?: { validation?: Validation; draggable?: boolean; rotateable?: boolean; scaleable?: boolean; selfIntersectable?: boolean; coordinates?: { snappable?: boolean | Snapping; midpoints?: boolean | { draggable?: boolean; }; draggable?: boolean; resizable?: ResizeOptions; deletable?: boolean; }; }; }; type SelectionStyling = { selectedPointColor: HexColorStyling; selectedPointWidth: NumericStyling; selectedPointOutlineColor: HexColorStyling; selectedPointOutlineWidth: NumericStyling; selectedLineStringColor: HexColorStyling; selectedLineStringWidth: NumericStyling; selectedPolygonColor: HexColorStyling; selectedPolygonFillOpacity: NumericStyling; selectedPolygonOutlineColor: HexColorStyling; selectedPolygonOutlineWidth: NumericStyling; selectionPointWidth: NumericStyling; selectionPointColor: HexColorStyling; selectionPointOutlineColor: HexColorStyling; selectionPointOutlineWidth: NumericStyling; midPointColor: HexColorStyling; midPointOutlineColor: HexColorStyling; midPointWidth: NumericStyling; midPointOutlineWidth: NumericStyling; }; interface Cursors { pointerOver?: Cursor; dragStart?: Cursor; dragEnd?: Cursor; insertMidpoint?: Cursor; } interface TerraDrawSelectModeOptions<T extends CustomStyling> extends BaseModeOptions<T> { pointerDistance?: number; flags?: { [mode: string]: ModeFlags; }; keyEvents?: TerraDrawSelectModeKeyEvents | null; dragEventThrottle?: number; cursors?: Cursors; allowManualDeselection?: boolean; } export declare class TerraDrawSelectMode extends TerraDrawBaseSelectMode<SelectionStyling> { mode: "select"; private allowManualDeselection; private dragEventThrottle; private dragEventCount; private selected; private flags; private keyEvents; private cursors; private validations; private selectionPoints; private midPoints; private coordinateSnap; private featuresAtMouseEvent; private pixelDistance; private clickBoundingBox; private dragFeature; private dragCoordinate; private rotateFeature; private scaleFeature; private dragCoordinateResizeFeature; private coordinatePoints; private lineSnap; constructor(options?: TerraDrawSelectModeOptions<SelectionStyling>); updateOptions(options?: TerraDrawSelectModeOptions<SelectionStyling>): void; selectFeature(featureId: FeatureId): void; setSelecting(): void; registerBehaviors(config: BehaviorConfig): void; deselectFeature(): void; private deselect; private deleteSelected; private onRightClick; private select; private onLeftClick; /** @internal */ start(): void; /** @internal */ stop(): void; /** @internal */ onClick(event: TerraDrawMouseEvent): void; private canScale; private canRotate; private preventDefaultKeyEvent; /** @internal */ onKeyDown(event: TerraDrawKeyboardEvent): void; /** @internal */ onKeyUp(event: TerraDrawKeyboardEvent): void; /** @internal */ cleanUp(): void; /** @internal */ onDragStart(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void; /** @internal */ onDrag(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void; /** @internal */ onDragEnd(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void; /** @internal */ onMouseMove(event: TerraDrawMouseEvent): void; /** @internal */ styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling; } export {};