terra-draw
Version:
Frictionless map drawing across mapping provider
127 lines (126 loc) • 4.47 kB
TypeScript
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 {};