UNPKG

terra-draw

Version:

Frictionless map drawing across mapping provider

104 lines (103 loc) 3.68 kB
import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, HexColorStyling, NumericStyling, Cursor, Snapping } from "../../common"; import { BaseModeOptions, CustomStyling, TerraDrawBaseDrawMode } from "../base.mode"; import { BehaviorConfig } from "../base.behavior"; import { GeoJSONStoreFeatures, StoreValidation } from "../../store/store"; type TerraDrawLineStringModeKeyEvents = { cancel: KeyboardEvent["key"] | null; finish: KeyboardEvent["key"] | null; }; type LineStringStyling = { lineStringWidth: NumericStyling; lineStringColor: HexColorStyling; closingPointColor: HexColorStyling; closingPointWidth: NumericStyling; closingPointOutlineColor: HexColorStyling; closingPointOutlineWidth: NumericStyling; snappingPointColor: HexColorStyling; snappingPointWidth: NumericStyling; snappingPointOutlineColor: HexColorStyling; snappingPointOutlineWidth: NumericStyling; }; interface Cursors { start?: Cursor; close?: Cursor; dragStart?: Cursor; dragEnd?: Cursor; } interface InertCoordinates { strategy: "amount"; value: number; } interface TerraDrawLineStringModeOptions<T extends CustomStyling> extends BaseModeOptions<T> { snapping?: Snapping; pointerDistance?: number; keyEvents?: TerraDrawLineStringModeKeyEvents | null; cursors?: Cursors; insertCoordinates?: InertCoordinates; editable?: boolean; } export declare class TerraDrawLineStringMode extends TerraDrawBaseDrawMode<LineStringStyling> { mode: "linestring"; private currentCoordinate; private currentId; private closingPointId; private keyEvents; private snapping; private cursors; private mouseMove; private insertCoordinates; private lastCommittedCoordinates; private snappedPointId; private lastMouseMoveEvent; private editable; private editedFeatureId; private editedFeatureCoordinateIndex; private editedSnapType; private editedInsertIndex; private editedPointId; private coordinateSnapping; private insertPoint; private lineSnapping; private pixelDistance; private clickBoundingBox; constructor(options?: TerraDrawLineStringModeOptions<LineStringStyling>); updateOptions(options?: TerraDrawLineStringModeOptions<LineStringStyling> | undefined): void; private updateSnappedCoordinate; private close; private updateGeometries; private generateInsertCoordinates; private createLine; private firstUpdateToLine; private updateToLine; /** @internal */ registerBehaviors(config: BehaviorConfig): void; /** @internal */ start(): void; /** @internal */ stop(): void; /** @internal */ onMouseMove(event: TerraDrawMouseEvent): void; private onRightClick; private onLeftClick; /** @internal */ onClick(event: TerraDrawMouseEvent): void; /** @internal */ onKeyDown(): void; /** @internal */ onKeyUp(event: TerraDrawKeyboardEvent): 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 */ cleanUp(): void; /** @internal */ styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling; validateFeature(feature: unknown): StoreValidation; private lineStringFilter; private snapCoordinate; afterFeatureUpdated(feature: GeoJSONStoreFeatures): void; } export {};