terra-draw
Version:
Frictionless map drawing across mapping provider
103 lines (102 loc) • 5.28 kB
TypeScript
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<string, string | number | HexColorStyling | NumericStyling | UrlStyling | [number, number]>;
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<Mode> = Omit<Mode, "modeName">;
export interface PointerEvents {
leftClick: AllowPointerEvent;
rightClick: AllowPointerEvent;
contextMenu: AllowPointerEvent;
onDragStart: AllowPointerEvent;
onDrag: AllowPointerEvent;
onDragEnd: AllowPointerEvent;
}
export type BaseModeOptions<Styling extends CustomStyling> = {
modeName?: string;
styles?: Partial<Styling>;
pointerDistance?: number;
validation?: Validation;
projection?: Projection;
pointerEvents?: PointerEvents;
};
export declare abstract class TerraDrawBaseDrawMode<Styling extends CustomStyling> {
protected _state: TerraDrawModeState;
get state(): TerraDrawModeState;
set state(_: TerraDrawModeState);
protected _styles: Partial<Styling>;
get styles(): Partial<Styling>;
set styles(styling: Partial<Styling>);
protected pointerEvents: PointerEvents;
protected behaviors: TerraDrawModeBehavior[];
protected validate: Validation | undefined;
protected pointerDistance: number;
protected coordinatePrecision: number;
protected undoRedoMaxStackSize?: number;
protected onStyleChange: StoreChangeHandler<TerraDrawOnChangeContext | undefined>;
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<Styling>, willCallUpdateOptionsInParentClass?: boolean);
updateOptions(options?: BaseModeOptions<Styling>): 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<Validation>;
afterFeatureAdded(feature: GeoJSONStoreFeatures): void;
afterFeatureUpdated(feature: GeoJSONStoreFeatures): void;
private performFeatureValidation;
protected validateModeFeature(feature: unknown, modeValidationFn: (feature: GeoJSONStoreFeatures) => ReturnType<Validation>): ReturnType<Validation>;
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<Styling extends CustomStyling> extends TerraDrawBaseDrawMode<Styling> {
type: ModeTypes;
abstract selectFeature(featureId: FeatureId): void;
abstract deselectFeature(featureId: FeatureId): void;
}
export {};