terra-draw
Version:
Frictionless map drawing across mapping provider
86 lines (85 loc) • 3.48 kB
TypeScript
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 {};