UNPKG

terra-draw

Version:

Frictionless map drawing across mapping provider

86 lines (85 loc) 3.48 kB
import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, HexColorStyling, NumericStyling, Cursor, Projection, DrawInteractions } from "../../common"; import { GeoJSONStoreFeatures, StoreValidation } from "../../store/store"; import { BaseModeOptions, CustomStyling, ModeUpdateOptions, TerraDrawBaseDrawMode } from "../base.mode"; import { BehaviorConfig } from "../base.behavior"; type TerraDrawCircleModeKeyEvents = { cancel: KeyboardEvent["key"] | null; finish: KeyboardEvent["key"] | null; }; type CirclePolygonStyling = { fillColor: HexColorStyling; fillOpacity: NumericStyling; outlineColor: HexColorStyling; outlineWidth: NumericStyling; outlineOpacity: NumericStyling; }; interface Cursors { start?: Cursor; } interface TerraDrawCircleModeOptions<T extends CustomStyling> extends BaseModeOptions<T> { keyEvents?: TerraDrawCircleModeKeyEvents | null; cursors?: Cursors; startingRadiusKilometers?: number; projection?: Projection; drawInteraction?: DrawInteractions; segments?: number; } export declare class TerraDrawCircleMode extends TerraDrawBaseDrawMode<CirclePolygonStyling> { mode: string; private center; private endPosition; private segments; private currentCircleId; private keyEvents; private cursors; private startingRadiusKilometers; private cursorMovedAfterInitialCursorDown; private drawInteraction; private drawType; private mutateFeature; /** * Create a new circle mode instance * @param options - Options to customize the behavior of the circle mode * @param options.keyEvents - Key events to cancel or finish the mode * @param options.cursors - Cursors to use for the mode * @param options.styles - Custom styling for the circle * @param options.pointerDistance - Distance in pixels to consider a pointer close to a vertex * @param options.startingRadiusKilometers - The starting radius of the circle in kilometers * @param options.projection - The map projection being used * @param options.drawInteraction - The type of draw interaction to use * */ constructor(options?: TerraDrawCircleModeOptions<CirclePolygonStyling>); updateOptions(options?: ModeUpdateOptions<TerraDrawCircleModeOptions<CirclePolygonStyling>>): void; private close; private beginDrawing; private dragDrawAllowed; private moveDrawAllowed; /** @internal */ start(): void; /** @internal */ stop(): void; /** @internal */ onClick(event: TerraDrawMouseEvent): void; /** @internal */ onMouseMove(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 updateCircle; afterFeatureUpdated(feature: GeoJSONStoreFeatures): void; registerBehaviors(config: BehaviorConfig): void; } export {};