UNPKG

terra-draw

Version:

Frictionless map drawing across mapping provider

135 lines (134 loc) 4.86 kB
import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, HexColorStyling, NumericStyling, Cursor, Snapping, DashArrayStyling } from "../../common"; import { BaseModeOptions, CustomStyling, ModeUpdateOptions, 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; lineStringOpacity: 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; coordinatePointColor: HexColorStyling; coordinatePointOpacity: NumericStyling; coordinatePointWidth: NumericStyling; coordinatePointOutlineColor: HexColorStyling; coordinatePointOutlineWidth: NumericStyling; coordinatePointOutlineOpacity: NumericStyling; lineStringDash: DashArrayStyling; }; 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; showCoordinatePoints?: boolean; finishOnNthCoordinate?: number; } export declare class TerraDrawLineStringMode extends TerraDrawBaseDrawMode<LineStringStyling> { mode: string; private currentCoordinate; private currentId; private keyEvents; private snapping; private cursors; private mouseMove; private insertCoordinates; private lastCommittedCoordinates; private snappedPointId; private lastMouseMoveEvent; private showCoordinatePoints; private finishOnNthCoordinate; private editable; private editedFeatureId; private editedFeatureCoordinateIndex; private editedSnapType; private editedInsertIndex; private editedPointId; private coordinateSnapping; private insertPoint; private lineSnapping; private featureSnapping; private pixelDistance; private clickBoundingBox; private mutateFeature; private readFeature; private closingPoints; private coordinatePoints; private undoRedo; constructor(options?: TerraDrawLineStringModeOptions<LineStringStyling>); updateOptions(options?: ModeUpdateOptions<TerraDrawLineStringModeOptions<LineStringStyling>>): void; private shouldFinishOnCommit; private updateSnappedCoordinate; private close; private generateInsertCoordinates; private createLine; private firstUpdateToLine; private updateToLine; undoSize(): number; clearHistory(): void; private pushHistorySnapshot; private updateSnappedGuidancePointFromLastMouseMove; private syncClosingPoints; undo(): void; redoSize(): number; redo(): void; /** @internal */ registerBehaviors(config: BehaviorConfig): void; /** @internal */ start(): void; /** @internal */ stop(): void; /** @internal */ onMouseMove(event: TerraDrawMouseEvent): void; private getInsertCoordinates; 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; afterFeatureAdded(feature: GeoJSONStoreFeatures): void; } export {};