import { BehaviorConfig, TerraDrawModeBehavior } from "./base.behavior"; import { TerraDrawOnChangeContext, HexColor, OnFinishContext, Projection, TerraDrawAdapterStyling, TerraDrawGeoJSONStore, TerraDrawKeyboardEvent, TerraDrawModeRegisterConfig, TerraDrawModeState, TerraDrawMouseEvent, Validation, HexColorStyling, NumericStyling, UrlStyling } from "../common"; import { FeatureId, GeoJSONStoreFeatures, StoreChangeHandler } from "../store/store"; export type CustomStyling = Record; export declare enum ModeTypes { Drawing = "drawing", Select = "select", Static = "static", Render = "render" } export declare const DefaultPointerEvents: { readonly rightClick: true; readonly contextMenu: false; readonly leftClick: true; readonly onDragStart: true; readonly onDrag: true; readonly onDragEnd: true; }; type AllowPointerEvent = boolean | ((event: TerraDrawMouseEvent) => boolean); export type ModeUpdateOptions = Omit; export interface PointerEvents { leftClick: AllowPointerEvent; rightClick: AllowPointerEvent; contextMenu: AllowPointerEvent; onDragStart: AllowPointerEvent; onDrag: AllowPointerEvent; onDragEnd: AllowPointerEvent; } export type BaseModeOptions = { modeName?: string; styles?: Partial; pointerDistance?: number; validation?: Validation; projection?: Projection; pointerEvents?: PointerEvents; }; export declare abstract class TerraDrawBaseDrawMode { protected _state: TerraDrawModeState; get state(): TerraDrawModeState; set state(_: TerraDrawModeState); protected _styles: Partial; get styles(): Partial; set styles(styling: Partial); protected pointerEvents: PointerEvents; protected behaviors: TerraDrawModeBehavior[]; protected validate: Validation | undefined; protected pointerDistance: number; protected coordinatePrecision: number; protected undoRedoMaxStackSize?: number; protected onStyleChange: StoreChangeHandler; protected store: TerraDrawGeoJSONStore; protected projection: Projection; protected setDoubleClickToZoom: TerraDrawModeRegisterConfig["setDoubleClickToZoom"]; protected unproject: TerraDrawModeRegisterConfig["unproject"]; protected project: TerraDrawModeRegisterConfig["project"]; protected setCursor: TerraDrawModeRegisterConfig["setCursor"]; protected registerBehaviors(behaviorConfig: BehaviorConfig): void; private isInitialUpdate; constructor(options?: BaseModeOptions, willCallUpdateOptionsInParentClass?: boolean); updateOptions(options?: BaseModeOptions): void; protected allowPointerEvent(pointerEvent: AllowPointerEvent, event: TerraDrawMouseEvent): boolean; type: ModeTypes; mode: string; protected setDrawing(): void; protected setStarted(): void; protected setStopped(): void; register(config: TerraDrawModeRegisterConfig): void; validateFeature(feature: unknown): ReturnType; afterFeatureAdded(feature: GeoJSONStoreFeatures): void; afterFeatureUpdated(feature: GeoJSONStoreFeatures): void; private performFeatureValidation; protected validateModeFeature(feature: unknown, modeValidationFn: (feature: GeoJSONStoreFeatures) => ReturnType): ReturnType; abstract start(): void; abstract stop(): void; abstract cleanUp(): void; abstract styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling; onFinish(finishedId: FeatureId, context: OnFinishContext): void; onDeselect(deselectedId: FeatureId): void; onSelect(selectedId: FeatureId): void; onKeyDown(event: TerraDrawKeyboardEvent): void; onKeyUp(event: TerraDrawKeyboardEvent): void; undo(): void; clearHistory(): void; undoSize(): number; redoSize(): number; redo(): void; onMouseMove(event: TerraDrawMouseEvent): void; onClick(event: TerraDrawMouseEvent): void; onDragStart(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void; onDrag(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void; onDragEnd(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void; protected getHexColorStylingValue(value: HexColor | ((feature: GeoJSONStoreFeatures) => HexColor | undefined) | undefined, defaultValue: HexColor, feature: GeoJSONStoreFeatures): HexColor; protected getNumericStylingValue(value: number | ((feature: GeoJSONStoreFeatures) => number | undefined) | undefined, defaultValue: number, feature: GeoJSONStoreFeatures): number; protected getUrlStylingValue(value: UrlStyling | undefined, defaultValue: string, feature: GeoJSONStoreFeatures): string; private getStylingValue; } export declare abstract class TerraDrawBaseSelectMode extends TerraDrawBaseDrawMode { type: ModeTypes; abstract selectFeature(featureId: FeatureId): void; abstract deselectFeature(featureId: FeatureId): void; } export {};