terra-draw
Version:
Frictionless map drawing across mapping provider
93 lines (92 loc) • 3.34 kB
TypeScript
import { TerraDrawAdapterStyling, TerraDrawKeyboardEvent, TerraDrawMouseEvent, HexColorStyling, NumericStyling, Cursor, Snapping } from "../../common";
import { BaseModeOptions, CustomStyling, ModeUpdateOptions, TerraDrawBaseDrawMode } from "../base.mode";
import { BehaviorConfig } from "../base.behavior";
import { GeoJSONStoreFeatures, StoreValidation } from "../../store/store";
type TerraDrawPolyLineModeKeyEvents = {
cancel: KeyboardEvent["key"] | null;
finish: KeyboardEvent["key"] | null;
};
type PolyLineStyling = {
lineStringWidth: NumericStyling;
lineStringColor: HexColorStyling;
lineStringOpacity: NumericStyling;
polygonFillColor: HexColorStyling;
polygonFillOpacity: NumericStyling;
polygonOutlineColor: HexColorStyling;
polygonOutlineWidth: NumericStyling;
polygonOutlineOpacity: NumericStyling;
closingPointColor: HexColorStyling;
closingPointWidth: NumericStyling;
closingPointOpacity: NumericStyling;
closingPointOutlineColor: HexColorStyling;
closingPointOutlineWidth: NumericStyling;
closingPointOutlineOpacity: NumericStyling;
snappingPointColor: HexColorStyling;
snappingPointWidth: NumericStyling;
snappingPointOpacity: NumericStyling;
snappingPointOutlineColor: HexColorStyling;
snappingPointOutlineWidth: NumericStyling;
snappingPointOutlineOpacity: NumericStyling;
};
interface Cursors {
start?: Cursor;
close?: Cursor;
}
interface TerraDrawPolyLineModeOptions<T extends CustomStyling> extends BaseModeOptions<T> {
snapping?: Snapping;
keyEvents?: TerraDrawPolyLineModeKeyEvents | null;
cursors?: Cursors;
}
export declare class TerraDrawPolyLineMode extends TerraDrawBaseDrawMode<PolyLineStyling> {
mode: string;
private currentCoordinate;
private currentId;
private keyEvents;
private cursors;
private mouseMove;
private snapping;
private snappedPointId;
private mutateFeature;
private readFeature;
private pixelDistance;
private closingPoints;
private clickBoundingBox;
private lineSnapping;
private coordinateSnapping;
constructor(options?: TerraDrawPolyLineModeOptions<PolyLineStyling>);
updateOptions(options?: ModeUpdateOptions<TerraDrawPolyLineModeOptions<PolyLineStyling>>): void;
/** @internal */
registerBehaviors(config: BehaviorConfig): void;
/** @internal */
start(): void;
/** @internal */
stop(): void;
private finishLine;
private toPolygonLikeCoordinates;
private closeAsPolygon;
/** @internal */
onMouseMove(event: TerraDrawMouseEvent): void;
private onLeftClick;
/** @internal */
onClick(event: TerraDrawMouseEvent): void;
/** @internal */
onKeyUp(event: TerraDrawKeyboardEvent): void;
/** @internal */
onKeyDown(): void;
/** @internal */
onDragStart(): void;
/** @internal */
onDrag(): void;
/** @internal */
onDragEnd(): void;
/** @internal */
cleanUp(): void;
private updateSnappedCoordinate;
private snapCoordinate;
/** @internal */
styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling;
afterFeatureAdded(_feature: GeoJSONStoreFeatures): void;
afterFeatureUpdated(feature: GeoJSONStoreFeatures): void;
validateFeature(feature: unknown): StoreValidation;
}
export {};