terra-draw
Version:
Frictionless map drawing across mapping provider
125 lines (124 loc) • 4.61 kB
TypeScript
import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, HexColorStyling, NumericStyling, Cursor, Snapping } from "../../common";
import { TerraDrawBaseDrawMode, BaseModeOptions, CustomStyling, PointerEvents, ModeUpdateOptions } from "../base.mode";
import { BehaviorConfig } from "../base.behavior";
import { GeoJSONStoreFeatures, StoreValidation } from "../../store/store";
type TerraDrawPolygonModeKeyEvents = {
cancel?: KeyboardEvent["key"] | null;
finish?: KeyboardEvent["key"] | null;
};
type PolygonStyling = {
fillColor: HexColorStyling;
fillOpacity: NumericStyling;
outlineColor: HexColorStyling;
outlineOpacity: NumericStyling;
outlineWidth: NumericStyling;
closingPointWidth: NumericStyling;
closingPointColor: HexColorStyling;
closingPointOpacity: NumericStyling;
closingPointOutlineWidth: NumericStyling;
closingPointOutlineColor: HexColorStyling;
closingPointOutlineOpacity: NumericStyling;
snappingPointWidth: NumericStyling;
snappingPointColor: HexColorStyling;
snappingPointOpacity: NumericStyling;
snappingPointOutlineWidth: NumericStyling;
snappingPointOutlineColor: HexColorStyling;
snappingPointOutlineOpacity: NumericStyling;
editedPointWidth: NumericStyling;
editedPointColor: HexColorStyling;
editedPointOpacity: NumericStyling;
editedPointOutlineWidth: NumericStyling;
editedPointOutlineColor: HexColorStyling;
editedPointOutlineOpacity: NumericStyling;
coordinatePointWidth: NumericStyling;
coordinatePointColor: HexColorStyling;
coordinatePointOpacity: NumericStyling;
coordinatePointOutlineWidth: NumericStyling;
coordinatePointOutlineColor: HexColorStyling;
coordinatePointOutlineOpacity: NumericStyling;
};
interface Cursors {
start?: Cursor;
close?: Cursor;
dragStart?: Cursor;
dragEnd?: Cursor;
}
interface TerraDrawPolygonModeOptions<T extends CustomStyling> extends BaseModeOptions<T> {
snapping?: Snapping;
pointerDistance?: number;
keyEvents?: TerraDrawPolygonModeKeyEvents | null;
pointerEvents?: PointerEvents;
cursors?: Cursors;
editable?: boolean;
showCoordinatePoints?: boolean;
}
export declare class TerraDrawPolygonMode extends TerraDrawBaseDrawMode<PolygonStyling> {
mode: string;
private currentCoordinate;
private currentId;
private keyEvents;
private cursors;
private mouseMove;
private showCoordinatePoints;
private lastMouseMoveEvent;
private snapping;
private snappedPointId;
private editable;
private editedFeatureId;
private editedFeatureCoordinateIndex;
private editedSnapType;
private editedInsertIndex;
private editedPointId;
private coordinatePoints;
private lineSnapping;
private coordinateSnapping;
private pixelDistance;
private closingPoints;
private clickBoundingBox;
private mutateFeature;
private readFeature;
private undoRedo;
constructor(options?: TerraDrawPolygonModeOptions<PolygonStyling>);
updateOptions(options?: ModeUpdateOptions<TerraDrawPolygonModeOptions<PolygonStyling>>): void;
private close;
/** @internal */
registerBehaviors(config: BehaviorConfig): void;
/** @internal */
start(): void;
/** @internal */
stop(): void;
private updateSnappedCoordinate;
undoSize(): number;
clearHistory(): void;
private pushHistorySnapshot;
private updateSnappedGuidancePointFromLastMouseMove;
private syncClosingPoints;
undo(): void;
redoSize(): number;
redo(): void;
/** @internal */
onMouseMove(event: TerraDrawMouseEvent): void;
private snapCoordinate;
private polygonFilter;
private onRightClick;
private onLeftClick;
/** @internal */
onClick(event: TerraDrawMouseEvent): void;
/** @internal */
onKeyUp(event: TerraDrawKeyboardEvent): void;
/** @internal */
onKeyDown(): void;
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 */
cleanUp(): void;
/** @internal */
styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling;
afterFeatureAdded(feature: GeoJSONStoreFeatures): void;
afterFeatureUpdated(feature: GeoJSONStoreFeatures): void;
validateFeature(feature: unknown): StoreValidation;
}
export {};