terra-draw 0.0.1-alpha.64 → 0.0.1-alpha.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -16,7 +16,7 @@ Terra Draw uses the concept of 'adapters' to allow it to work with a host of dif
16
16
  - [Leaflet](https://leafletjs.com/) v1
17
17
  - [OpenLayers](https://openlayers.org/) v7
18
18
  - [Mapbox GL JS](https://www.mapbox.com/mapbox-gljs) v2
19
- - [MapLibre](https://maplibre.org/projects/maplibre-gl-js/) v2/v3
19
+ - [MapLibre](https://maplibre.org/maplibre-gl-js/docs/) v2/v3
20
20
  - [Google Maps JS API](https://developers.google.com/maps/documentation/javascript/overview) v3
21
21
  - [ArcGIS JavaScript SDK](https://developers.arcgis.com/javascript/latest/) v4 (MapView)
22
22
 
@@ -26,8 +26,8 @@ Please see the [the getting started guide](./guides/1.GETTING_STARTED.md) - this
26
26
 
27
27
  ### Development & Contributing
28
28
 
29
- * For development, please see the [the development documentation](./guides/6.DEVELOPMENT.md)
30
- * For guidance on contributing, please see the [the contributing documentation](./guides/CONTRIBUTING.md)
29
+ * For development, please see the [the development documentation](./guides/7.DEVELOPMENT.md)
30
+ * For guidance on contributing, please see the [the contributing documentation](./guides/7.DEVELOPMENT.md#contributing)
31
31
 
32
32
 
33
33
  ### Project Website
@@ -38,6 +38,7 @@ export declare class TerraDrawArcGISMapsSDKAdapter extends TerraDrawBaseAdapter
38
38
  } & BaseAdapterConfig);
39
39
  register(callbacks: TerraDrawCallbacks): void;
40
40
  unregister(): void;
41
+ getCoordinatePrecision(): number;
41
42
  /**
42
43
  * Returns the longitude and latitude coordinates from a given PointerEvent on the map.
43
44
  * @param event The PointerEvent or MouseEvent containing the screen coordinates of the pointer.
@@ -87,4 +87,5 @@ export declare class TerraDrawGoogleMapsAdapter extends TerraDrawBaseAdapter {
87
87
  * @returns void
88
88
  * */
89
89
  clear(): void;
90
+ getCoordinatePrecision(): number;
90
91
  }
@@ -94,4 +94,6 @@ export declare class TerraDrawLeafletAdapter extends TerraDrawBaseAdapter {
94
94
  * */
95
95
  clear(): void;
96
96
  register(callbacks: TerraDrawCallbacks): void;
97
+ getCoordinatePrecision(): number;
98
+ unregister(): void;
97
99
  }
@@ -85,5 +85,7 @@ export declare class TerraDrawMapboxGLAdapter extends TerraDrawBaseAdapter {
85
85
  * @returns void
86
86
  * */
87
87
  clear(): void;
88
+ getCoordinatePrecision(): number;
89
+ unregister(): void;
88
90
  register(callbacks: TerraDrawCallbacks): void;
89
91
  }
@@ -8,6 +8,7 @@ export declare class TerraDrawMapLibreGLAdapter extends TerraDrawBaseAdapter {
8
8
  } & BaseAdapterConfig);
9
9
  register(callbacks: TerraDrawCallbacks): void;
10
10
  unregister(): void;
11
+ getCoordinatePrecision(): number;
11
12
  /**
12
13
  * Returns the longitude and latitude coordinates from a given PointerEvent on the map.
13
14
  * @param event The PointerEvent or MouseEvent containing the screen coordinates of the pointer.
@@ -114,5 +114,7 @@ export declare class TerraDrawOpenLayersAdapter extends TerraDrawBaseAdapter {
114
114
  * */
115
115
  clear(): void;
116
116
  register(callbacks: TerraDrawCallbacks): void;
117
+ getCoordinatePrecision(): number;
118
+ unregister(): void;
117
119
  }
118
120
  export {};
package/dist/common.d.ts CHANGED
@@ -58,6 +58,8 @@ export interface TerraDrawModeRegisterConfig {
58
58
  unproject: Unproject;
59
59
  coordinatePrecision: number;
60
60
  }
61
+ type ValidationContext = Pick<TerraDrawModeRegisterConfig, "project" | "unproject" | "coordinatePrecision">;
62
+ export type Validation = (feature: GeoJSONStoreFeatures, context: ValidationContext) => boolean;
61
63
  export type TerraDrawModeState = "unregistered" | "registered" | "started" | "drawing" | "selecting" | "stopped";
62
64
  export interface TerraDrawCallbacks {
63
65
  getState: () => TerraDrawModeState;
@@ -101,3 +103,4 @@ export declare const SELECT_PROPERTIES: {
101
103
  export declare const POLYGON_PROPERTIES: {
102
104
  CLOSING_POINT: string;
103
105
  };
106
+ export {};
@@ -0,0 +1,5 @@
1
+ import { Feature, LineString, Polygon } from "geojson";
2
+ export declare function webMercatorCenter(feature: Feature<Polygon | LineString>): {
3
+ x: number;
4
+ y: number;
5
+ };
@@ -1,9 +1,9 @@
1
- import { TerraDrawMouseEvent } from "../../../common";
1
+ import { TerraDrawMouseEvent, Validation } from "../../../common";
2
2
  import { BehaviorConfig, TerraDrawModeBehavior } from "../../base.behavior";
3
3
  import { PixelDistanceBehavior } from "../../pixel-distance.behavior";
4
4
  import { MidPointBehavior } from "./midpoint.behavior";
5
5
  import { SelectionPointBehavior } from "./selection-point.behavior";
6
- import { FeatureId, GeoJSONStoreFeatures } from "../../../store/store";
6
+ import { FeatureId } from "../../../store/store";
7
7
  export type ResizeOptions = "center-web-mercator" | "opposite-web-mercator" | "center-fixed-web-mercator" | "opposite-fixed-web-mercator";
8
8
  export declare class DragCoordinateResizeBehavior extends TerraDrawModeBehavior {
9
9
  readonly config: BehaviorConfig;
@@ -58,5 +58,5 @@ export declare class DragCoordinateResizeBehavior extends TerraDrawModeBehavior
58
58
  * @param resizeOption - the resize option, either "center-web-mercator" or "opposite-web-mercator"
59
59
  * @returns - true is resize was successful, false otherwise
60
60
  */
61
- drag(event: TerraDrawMouseEvent, resizeOption: ResizeOptions, validateFeature?: (feature: GeoJSONStoreFeatures) => boolean): boolean;
61
+ drag(event: TerraDrawMouseEvent, resizeOption: ResizeOptions, validateFeature?: Validation): boolean;
62
62
  }
@@ -1,9 +1,9 @@
1
- import { TerraDrawMouseEvent } from "../../../common";
1
+ import { TerraDrawMouseEvent, Validation } from "../../../common";
2
2
  import { BehaviorConfig, TerraDrawModeBehavior } from "../../base.behavior";
3
3
  import { PixelDistanceBehavior } from "../../pixel-distance.behavior";
4
4
  import { MidPointBehavior } from "./midpoint.behavior";
5
5
  import { SelectionPointBehavior } from "./selection-point.behavior";
6
- import { FeatureId, GeoJSONStoreFeatures } from "../../../store/store";
6
+ import { FeatureId } from "../../../store/store";
7
7
  export declare class DragCoordinateBehavior extends TerraDrawModeBehavior {
8
8
  readonly config: BehaviorConfig;
9
9
  private readonly pixelDistance;
@@ -13,7 +13,7 @@ export declare class DragCoordinateBehavior extends TerraDrawModeBehavior {
13
13
  private draggedCoordinate;
14
14
  private getClosestCoordinate;
15
15
  getDraggableIndex(event: TerraDrawMouseEvent, selectedId: FeatureId): number;
16
- drag(event: TerraDrawMouseEvent, allowSelfIntersection: boolean, validateFeature?: (feature: GeoJSONStoreFeatures) => boolean): boolean;
16
+ drag(event: TerraDrawMouseEvent, allowSelfIntersection: boolean, validateFeature?: Validation): boolean;
17
17
  isDragging(): boolean;
18
18
  startDragging(id: FeatureId, index: number): void;
19
19
  stopDragging(): void;
@@ -1,9 +1,9 @@
1
- import { TerraDrawMouseEvent } from "../../../common";
1
+ import { TerraDrawMouseEvent, Validation } from "../../../common";
2
2
  import { BehaviorConfig, TerraDrawModeBehavior } from "../../base.behavior";
3
3
  import { FeatureAtPointerEventBehavior } from "./feature-at-pointer-event.behavior";
4
4
  import { SelectionPointBehavior } from "./selection-point.behavior";
5
5
  import { MidPointBehavior } from "./midpoint.behavior";
6
- import { FeatureId, GeoJSONStoreFeatures } from "../../../store/store";
6
+ import { FeatureId } from "../../../store/store";
7
7
  export declare class DragFeatureBehavior extends TerraDrawModeBehavior {
8
8
  readonly config: BehaviorConfig;
9
9
  private readonly featuresAtMouseEvent;
@@ -16,5 +16,5 @@ export declare class DragFeatureBehavior extends TerraDrawModeBehavior {
16
16
  stopDragging(): void;
17
17
  isDragging(): boolean;
18
18
  canDrag(event: TerraDrawMouseEvent, selectedId: FeatureId): boolean;
19
- drag(event: TerraDrawMouseEvent, validateFeature?: (feature: GeoJSONStoreFeatures) => boolean): false | undefined;
19
+ drag(event: TerraDrawMouseEvent, validateFeature?: Validation): false | undefined;
20
20
  }
@@ -1,8 +1,8 @@
1
- import { TerraDrawMouseEvent } from "../../../common";
1
+ import { TerraDrawMouseEvent, Validation } from "../../../common";
2
2
  import { BehaviorConfig, TerraDrawModeBehavior } from "../../base.behavior";
3
3
  import { SelectionPointBehavior } from "./selection-point.behavior";
4
4
  import { MidPointBehavior } from "./midpoint.behavior";
5
- import { FeatureId, GeoJSONStoreFeatures } from "../../../store/store";
5
+ import { FeatureId } from "../../../store/store";
6
6
  export declare class RotateFeatureBehavior extends TerraDrawModeBehavior {
7
7
  readonly config: BehaviorConfig;
8
8
  private readonly selectionPoints;
@@ -10,5 +10,5 @@ export declare class RotateFeatureBehavior extends TerraDrawModeBehavior {
10
10
  constructor(config: BehaviorConfig, selectionPoints: SelectionPointBehavior, midPoints: MidPointBehavior);
11
11
  private lastBearing;
12
12
  reset(): void;
13
- rotate(event: TerraDrawMouseEvent, selectedId: FeatureId, validateFeature?: (feature: GeoJSONStoreFeatures) => boolean): false | undefined;
13
+ rotate(event: TerraDrawMouseEvent, selectedId: FeatureId, validateFeature?: Validation): false | undefined;
14
14
  }
@@ -1,8 +1,8 @@
1
- import { TerraDrawMouseEvent } from "../../../common";
1
+ import { TerraDrawMouseEvent, Validation } from "../../../common";
2
2
  import { BehaviorConfig, TerraDrawModeBehavior } from "../../base.behavior";
3
3
  import { SelectionPointBehavior } from "./selection-point.behavior";
4
4
  import { MidPointBehavior } from "./midpoint.behavior";
5
- import { FeatureId, GeoJSONStoreFeatures } from "../../../store/store";
5
+ import { FeatureId } from "../../../store/store";
6
6
  export declare class ScaleFeatureBehavior extends TerraDrawModeBehavior {
7
7
  readonly config: BehaviorConfig;
8
8
  private readonly selectionPoints;
@@ -10,5 +10,5 @@ export declare class ScaleFeatureBehavior extends TerraDrawModeBehavior {
10
10
  constructor(config: BehaviorConfig, selectionPoints: SelectionPointBehavior, midPoints: MidPointBehavior);
11
11
  private lastDistance;
12
12
  reset(): void;
13
- scale(event: TerraDrawMouseEvent, selectedId: FeatureId, validateFeature?: (feature: GeoJSONStoreFeatures) => boolean): false | undefined;
13
+ scale(event: TerraDrawMouseEvent, selectedId: FeatureId, validateFeature?: Validation): false | undefined;
14
14
  }
@@ -1,4 +1,4 @@
1
- import { TerraDrawMouseEvent, TerraDrawKeyboardEvent, TerraDrawAdapterStyling, HexColorStyling, NumericStyling, Cursor } from "../../common";
1
+ import { TerraDrawMouseEvent, TerraDrawKeyboardEvent, TerraDrawAdapterStyling, HexColorStyling, NumericStyling, Cursor, Validation } from "../../common";
2
2
  import { BaseModeOptions, CustomStyling, TerraDrawBaseSelectMode } from "../base.mode";
3
3
  import { BehaviorConfig } from "../base.behavior";
4
4
  import { FeatureId, GeoJSONStoreFeatures } from "../../store/store";
@@ -11,7 +11,7 @@ type TerraDrawSelectModeKeyEvents = {
11
11
  };
12
12
  type ModeFlags = {
13
13
  feature?: {
14
- validation?: (geometry: GeoJSONStoreFeatures) => boolean;
14
+ validation?: Validation;
15
15
  draggable?: boolean;
16
16
  rotateable?: boolean;
17
17
  scaleable?: boolean;