terra-draw 1.0.0-beta.9 → 1.1.0

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.
Files changed (133) hide show
  1. package/.versionrc.cjs +9 -0
  2. package/README.md +12 -26
  3. package/dist/common/adapter-listener.spec.d.ts +1 -0
  4. package/dist/{adapters/common → common}/base.adapter.d.ts +1 -1
  5. package/dist/common.d.ts +8 -5
  6. package/dist/extend.d.ts +4 -3
  7. package/dist/geometry/boolean/is-valid-coordinate.spec.d.ts +1 -0
  8. package/dist/geometry/boolean/point-in-polygon.spec.d.ts +1 -0
  9. package/dist/geometry/boolean/self-intersects.spec.d.ts +1 -0
  10. package/dist/geometry/calculate-relative-angle.d.ts +2 -10
  11. package/dist/geometry/calculate-relative-angle.spec.d.ts +1 -0
  12. package/dist/geometry/centroid.spec.d.ts +1 -0
  13. package/dist/geometry/clockwise.d.ts +2 -10
  14. package/dist/geometry/clockwise.spec.d.ts +1 -0
  15. package/dist/geometry/coordinates-identical.spec.d.ts +1 -0
  16. package/dist/geometry/determine-halfplane.d.ts +2 -10
  17. package/dist/geometry/determine-halfplane.spec.d.ts +1 -0
  18. package/dist/geometry/get-coordinates-as-points.spec.d.ts +1 -0
  19. package/dist/geometry/get-midpoint.spec.d.ts +1 -0
  20. package/dist/geometry/limit-decimal-precision.spec.d.ts +1 -0
  21. package/dist/geometry/measure/bearing.d.ts +2 -7
  22. package/dist/geometry/measure/bearing.spec.d.ts +1 -0
  23. package/dist/geometry/measure/desination.spec.d.ts +1 -0
  24. package/dist/geometry/measure/destination.d.ts +2 -7
  25. package/dist/geometry/measure/haversine-distance.spec.d.ts +1 -0
  26. package/dist/geometry/measure/pixel-distance-to-line.d.ts +2 -10
  27. package/dist/geometry/measure/pixel-distance-to-line.spec.d.ts +1 -0
  28. package/dist/geometry/measure/pixel-distance.d.ts +2 -7
  29. package/dist/geometry/measure/pixel-distance.spec.d.ts +1 -0
  30. package/dist/geometry/measure/rhumb-bearing.spec.d.ts +1 -0
  31. package/dist/geometry/measure/rhumb-destination.spec.d.ts +1 -0
  32. package/dist/geometry/measure/rhumb-distance.spec.d.ts +1 -0
  33. package/dist/geometry/point-on-line.d.ts +6 -0
  34. package/dist/geometry/point-on-line.spec.d.ts +1 -0
  35. package/dist/geometry/project/web-mercator.d.ts +2 -4
  36. package/dist/geometry/project/web-mercator.spec.d.ts +1 -0
  37. package/dist/geometry/shape/create-bbox.spec.d.ts +1 -0
  38. package/dist/geometry/shape/create-circle.spec.d.ts +1 -0
  39. package/dist/geometry/shape/great-circle-coordinates.spec.d.ts +1 -0
  40. package/dist/geometry/shape/web-mercator-distortion.spec.d.ts +1 -0
  41. package/dist/geometry/transform/rotate.spec.d.ts +1 -0
  42. package/dist/geometry/transform/scale.spec.d.ts +1 -0
  43. package/dist/geometry/web-mercator-centroid.d.ts +2 -4
  44. package/dist/geometry/web-mercator-centroid.spec.d.ts +1 -0
  45. package/dist/geometry/web-mercator-point-on-line.d.ts +12 -0
  46. package/dist/geometry/web-mercator-point-on-line.spec.d.ts +1 -0
  47. package/dist/modes/angled-rectangle/angled-rectangle.mode.d.ts +0 -1
  48. package/dist/modes/angled-rectangle/angled-rectangle.mode.spec.d.ts +1 -0
  49. package/dist/modes/circle/circle.mode.spec.d.ts +1 -0
  50. package/dist/modes/click-bounding-box.behavior.spec.d.ts +1 -0
  51. package/dist/modes/coordinate-snapping.behavior.d.ts +21 -0
  52. package/dist/modes/coordinate-snapping.behavior.spec.d.ts +1 -0
  53. package/dist/modes/freehand/freehand.mode.spec.d.ts +1 -0
  54. package/dist/modes/insert-coordinates.behavior.spec.d.ts +1 -0
  55. package/dist/modes/{snapping.behavior.d.ts → line-snapping.behavior.d.ts} +8 -3
  56. package/dist/modes/line-snapping.behavior.spec.d.ts +1 -0
  57. package/dist/modes/linestring/linestring.mode.d.ts +14 -3
  58. package/dist/modes/linestring/linestring.mode.spec.d.ts +1 -0
  59. package/dist/modes/pixel-distance.behavior.spec.d.ts +1 -0
  60. package/dist/modes/point/point.mode.d.ts +16 -4
  61. package/dist/modes/point/point.mode.spec.d.ts +1 -0
  62. package/dist/modes/polygon/behaviors/closing-points.behavior.spec.d.ts +1 -0
  63. package/dist/modes/polygon/polygon.mode.d.ts +32 -6
  64. package/dist/modes/polygon/polygon.mode.spec.d.ts +1 -0
  65. package/dist/modes/rectangle/rectangle.mode.spec.d.ts +1 -0
  66. package/dist/modes/render/render.mode.spec.d.ts +1 -0
  67. package/dist/modes/sector/sector.mode.spec.d.ts +1 -0
  68. package/dist/modes/select/behaviors/drag-coordinate-resize.behavior.spec.d.ts +1 -0
  69. package/dist/modes/select/behaviors/drag-coordinate.behavior.spec.d.ts +1 -0
  70. package/dist/modes/select/behaviors/drag-feature.behavior.spec.d.ts +1 -0
  71. package/dist/modes/select/behaviors/feature-at-pointer-event.behavior.spec.d.ts +1 -0
  72. package/dist/modes/select/behaviors/midpoint.behavior.spec.d.ts +1 -0
  73. package/dist/modes/select/behaviors/rotate-feature.behavior.spec.d.ts +1 -0
  74. package/dist/modes/select/behaviors/scale-feature.behavior.spec.d.ts +1 -0
  75. package/dist/modes/select/behaviors/selection-point.behavior.spec.d.ts +1 -0
  76. package/dist/modes/select/select.mode.spec.d.ts +1 -0
  77. package/dist/modes/sensor/sensor.mode.spec.d.ts +1 -0
  78. package/dist/modes/static/static.mode.spec.d.ts +1 -0
  79. package/dist/store/spatial-index/quickselect.spec.d.ts +1 -0
  80. package/dist/store/spatial-index/rbush.spec.d.ts +1 -0
  81. package/dist/store/spatial-index/spatial-index.spec.d.ts +1 -0
  82. package/dist/store/store-validation.spec.d.ts +1 -0
  83. package/dist/store/store.spec.d.ts +1 -0
  84. package/dist/terra-draw.cjs +1 -1
  85. package/dist/terra-draw.cjs.map +1 -1
  86. package/dist/terra-draw.d.ts +9 -46
  87. package/dist/terra-draw.extensions.spec.d.ts +28 -0
  88. package/dist/terra-draw.modern.js +1 -1
  89. package/dist/terra-draw.modern.js.map +1 -1
  90. package/dist/terra-draw.module.js +1 -1
  91. package/dist/terra-draw.module.js.map +1 -1
  92. package/dist/terra-draw.spec.d.ts +1 -0
  93. package/dist/terra-draw.umd.js +1 -1
  94. package/dist/terra-draw.umd.js.map +1 -1
  95. package/dist/test/create-store-features.d.ts +6 -0
  96. package/dist/test/mock-behavior-config.d.ts +2 -0
  97. package/dist/test/mock-cursor-event.d.ts +6 -0
  98. package/dist/test/mock-features.d.ts +4 -0
  99. package/dist/test/mock-keyboard-event.d.ts +5 -0
  100. package/dist/test/mock-mode-config.d.ts +21 -0
  101. package/dist/util/geom.spec.d.ts +1 -0
  102. package/dist/util/id.spec.d.ts +1 -0
  103. package/dist/util/styling.spec.d.ts +1 -0
  104. package/dist/validations/linestring.validation.spec.d.ts +1 -0
  105. package/dist/validations/max-size.validation.spec.d.ts +1 -0
  106. package/dist/validations/min-size.validation.spec.d.ts +1 -0
  107. package/dist/validations/not-self-intersecting.validation.spec.d.ts +1 -0
  108. package/dist/validations/point.validation.spec.d.ts +1 -0
  109. package/dist/validations/polygon.validation.spec.d.ts +1 -0
  110. package/jest.nocheck.config.ts +5 -14
  111. package/package.json +8 -119
  112. package/tsconfig.json +6 -25
  113. package/.devcontainer/Dockerfile +0 -8
  114. package/.devcontainer/devcontainer.json +0 -27
  115. package/.devcontainer/post-create.sh +0 -16
  116. package/LICENSE +0 -8
  117. package/dist/adapters/arcgis-maps-sdk.adapter.d.ts +0 -106
  118. package/dist/adapters/google-maps.adapter.d.ts +0 -90
  119. package/dist/adapters/leaflet.adapter.d.ts +0 -99
  120. package/dist/adapters/mapbox-gl.adapter.d.ts +0 -90
  121. package/dist/adapters/maplibre-gl.adapter.d.ts +0 -72
  122. package/dist/adapters/openlayers.adapter.d.ts +0 -121
  123. package/e2e/README.md +0 -29
  124. package/e2e/package-lock.json +0 -4275
  125. package/e2e/package.json +0 -26
  126. package/e2e/playwright.config.ts +0 -77
  127. package/e2e/public/favicon.ico +0 -0
  128. package/e2e/public/index.html +0 -55
  129. package/e2e/tests/leaflet.spec.ts +0 -1040
  130. package/e2e/tests/setup.ts +0 -208
  131. package/e2e/webpack.config.js +0 -36
  132. package/eslint.config.js +0 -31
  133. /package/dist/{adapters/common → common}/adapter-listener.d.ts +0 -0
@@ -1,9 +1,6 @@
1
- import { TerraDrawGoogleMapsAdapter } from "./adapters/google-maps.adapter";
2
- import { TerraDrawLeafletAdapter } from "./adapters/leaflet.adapter";
3
- import { TerraDrawMapboxGLAdapter } from "./adapters/mapbox-gl.adapter";
4
- import { TerraDrawMapLibreGLAdapter } from "./adapters/maplibre-gl.adapter";
5
- import { TerraDrawOpenLayersAdapter } from "./adapters/openlayers.adapter";
6
- import { TerraDrawArcGISMapsSDKAdapter } from "./adapters/arcgis-maps-sdk.adapter";
1
+ /**
2
+ * @module terra-draw
3
+ */
7
4
  import { TerraDrawAdapter, TerraDrawAdapterStyling, GetLngLatFromEvent, Project, SetCursor, TerraDrawChanges, TerraDrawStylingFunction, Unproject, HexColor, TerraDrawKeyboardEvent, TerraDrawMouseEvent, OnFinishContext } from "./common";
8
5
  import { TerraDrawBaseDrawMode } from "./modes/base.mode";
9
6
  import { TerraDrawCircleMode } from "./modes/circle/circle.mode";
@@ -14,7 +11,7 @@ import { TerraDrawPolygonMode } from "./modes/polygon/polygon.mode";
14
11
  import { TerraDrawRectangleMode } from "./modes/rectangle/rectangle.mode";
15
12
  import { TerraDrawRenderMode } from "./modes/render/render.mode";
16
13
  import { TerraDrawSelectMode } from "./modes/select/select.mode";
17
- import { FeatureId, GeoJSONStoreFeatures, IdStrategy, StoreValidation } from "./store/store";
14
+ import { FeatureId, GeoJSONStoreFeatures, GeoJSONStoreGeometries, IdStrategy, StoreValidation } from "./store/store";
18
15
  import { BehaviorConfig } from "./modes/base.behavior";
19
16
  import { ValidateMinAreaSquareMeters } from "./validations/min-size.validation";
20
17
  import { ValidateMaxAreaSquareMeters } from "./validations/max-size.validation";
@@ -60,23 +57,17 @@ declare class TerraDraw {
60
57
  * @param mode - The mode you wish to set a style for
61
58
  * @param styles - The styles you wish to set for the mode - this is
62
59
  * the same as the initialisation style schema
63
- *
64
- * @beta
65
60
  */
66
61
  setModeStyles<Styling extends Record<string, number | HexColor>>(mode: string, styles: Styling): void;
67
62
  /**
68
63
  * Allows the user to get a snapshot (copy) of all given features
69
64
  *
70
65
  * @returns An array of all given Feature Geometries in the instances store
71
- *
72
- * @beta
73
66
  */
74
67
  getSnapshot(): GeoJSONStoreFeatures[];
75
68
  /**
76
69
  * Removes all data from the current store and removes any rendered layers
77
70
  * via the registering the adapter.
78
- *
79
- * @beta
80
71
  */
81
72
  clear(): void;
82
73
  /**
@@ -86,37 +77,27 @@ declare class TerraDraw {
86
77
  *
87
78
  * @return true or false depending on if the instance is stopped or started
88
79
  * @readonly
89
- * @beta
90
80
  */
91
81
  get enabled(): boolean;
92
82
  /**
93
83
  * enabled is a read only property and will throw and error if you try and set it.
94
- *
95
- * @beta
96
84
  */
97
85
  set enabled(_: boolean);
98
86
  /**
99
87
  * A method for getting the current mode name
100
- *
101
88
  * @return the current mode name
102
- *
103
- * @beta
104
89
  */
105
90
  getMode(): string;
106
91
  /**
107
92
  * A method for setting the current mode by name. Under the hood this will stop
108
93
  * the previous mode and start the new one.
109
94
  * @param mode - The mode name you wish to start
110
- *
111
- * @beta
112
95
  */
113
96
  setMode(mode: string): void;
114
97
  /**
115
98
  * A method for removing features to the store
116
99
  * @param ids
117
100
  * @returns
118
- *
119
- * @beta
120
101
  */
121
102
  removeFeatures(ids: FeatureId[]): void;
122
103
  /**
@@ -124,7 +105,6 @@ declare class TerraDraw {
124
105
  * If not select mode is provided in the instance, an error will be thrown. If the instance is not currently
125
106
  * in the select mode, it will switch to it.
126
107
  * @param id - the id of the feature to select
127
- * @beta
128
108
  */
129
109
  selectFeature(id: FeatureId): void;
130
110
  /**
@@ -132,7 +112,6 @@ declare class TerraDraw {
132
112
  * If not select mode is provided in the instance, an error will be thrown. If the instance is not currently
133
113
  * in the select mode, it will switch to it.
134
114
  * @param id - the id of the feature to deselect
135
- * @beta
136
115
  */
137
116
  deselectFeature(id: FeatureId): void;
138
117
  /**
@@ -141,14 +120,11 @@ declare class TerraDraw {
141
120
  * outside of the Terra Draw instance but want to add them in to the store.
142
121
  * @returns a id, either number of string based on whatever the configured idStrategy is
143
122
  *
144
- * @beta
145
123
  */
146
124
  getFeatureId(): FeatureId;
147
125
  /**
148
126
  * Returns true or false depending on if the Terra Draw instance has a feature with a given id
149
127
  * @returns a boolean determining if the instance has a feature with the given id
150
- *
151
- * @beta
152
128
  */
153
129
  hasFeature(id: FeatureId): boolean;
154
130
  /**
@@ -157,23 +133,17 @@ declare class TerraDraw {
157
133
  * in the instance.
158
134
  * @param features - an array of GeoJSON features
159
135
  * @returns an array of validation results
160
- *
161
- * @beta
162
136
  */
163
137
  addFeatures(features: GeoJSONStoreFeatures[]): StoreValidation[];
164
138
  /**
165
139
  * A method starting Terra Draw. It put the instance into a started state, and
166
140
  * in registers the passed adapter giving it all the callbacks required to operate.
167
- *
168
- * @beta
169
141
  */
170
142
  start(): void;
171
143
  /**
172
144
  * Gets the features at a given longitude and latitude.
173
145
  * Will return point and linestrings that are a given pixel distance
174
146
  * away from the lng/lat and any polygons which contain it.
175
- *
176
- * @beta
177
147
  */
178
148
  getFeaturesAtLngLat(lngLat: {
179
149
  lng: number;
@@ -183,21 +153,16 @@ declare class TerraDraw {
183
153
  ignoreSelectFeatures: boolean;
184
154
  }): GeoJSONStoreFeatures[];
185
155
  /**
186
- * Takes a given pointer event and
187
- * Will return point and linestrings that are a given pixel distance
188
- * away from the lng/lat and any polygons which contain it.
189
- *
190
- * @beta
156
+ * Takes a given pointer event and will return point and linestrings that are
157
+ * a given pixel distance away from the longitude/latitude, and any polygons which contain it.
191
158
  */
192
159
  getFeaturesAtPointerEvent(event: PointerEvent | MouseEvent, options?: {
193
- pointerDistance: number;
194
- ignoreSelectFeatures: boolean;
160
+ pointerDistance?: number;
161
+ ignoreSelectFeatures?: boolean;
195
162
  }): GeoJSONStoreFeatures[];
196
163
  /**
197
164
  * A method for stopping Terra Draw. Will clear the store, deregister the adapter and
198
165
  * remove any rendered layers in the process.
199
- *
200
- * @beta
201
166
  */
202
167
  stop(): void;
203
168
  /**
@@ -206,7 +171,6 @@ declare class TerraDraw {
206
171
  * @param event - The name of the event you wish to listen for
207
172
  * @param callback - The callback with you wish to be called when this event occurs
208
173
  *
209
- * @beta
210
174
  */
211
175
  on<T extends TerraDrawEvents>(event: T, callback: TerraDrawEventListeners[T]): void;
212
176
  /**
@@ -215,8 +179,7 @@ declare class TerraDraw {
215
179
  * @param event - The name of the event you wish to unregister
216
180
  * @param callback - The callback you originally provided to the 'on' method
217
181
  *
218
- * @beta
219
182
  */
220
183
  off<T extends TerraDrawEvents>(event: TerraDrawEvents, callback: TerraDrawEventListeners[T]): void;
221
184
  }
222
- export { TerraDraw, TerraDrawSelectMode, TerraDrawPointMode, TerraDrawLineStringMode, TerraDrawPolygonMode, TerraDrawCircleMode, TerraDrawFreehandMode, TerraDrawRenderMode, TerraDrawRectangleMode, TerraDrawAngledRectangleMode, TerraDrawSectorMode, TerraDrawSensorMode, TerraDrawGoogleMapsAdapter, TerraDrawMapboxGLAdapter, TerraDrawLeafletAdapter, TerraDrawMapLibreGLAdapter, TerraDrawOpenLayersAdapter, TerraDrawArcGISMapsSDKAdapter, TerraDrawExtend, BehaviorConfig, GeoJSONStoreFeatures, HexColor, TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, TerraDrawChanges, TerraDrawStylingFunction, Project, Unproject, SetCursor, GetLngLatFromEvent, ValidateMinAreaSquareMeters, ValidateMaxAreaSquareMeters, ValidateNotSelfIntersecting, ValidationReasons, };
185
+ export { TerraDraw, TerraDrawSelectMode, TerraDrawPointMode, TerraDrawLineStringMode, TerraDrawPolygonMode, TerraDrawCircleMode, TerraDrawFreehandMode, TerraDrawRenderMode, TerraDrawRectangleMode, TerraDrawAngledRectangleMode, TerraDrawSectorMode, TerraDrawSensorMode, TerraDrawExtend, BehaviorConfig, GeoJSONStoreFeatures, GeoJSONStoreGeometries, HexColor, TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, TerraDrawChanges, TerraDrawStylingFunction, Project, Unproject, SetCursor, GetLngLatFromEvent, ValidateMinAreaSquareMeters, ValidateMaxAreaSquareMeters, ValidateNotSelfIntersecting, ValidationReasons, };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * For this specific test suite we should only ever import from the Terra Draw
3
+ * public API, and not from the internal library code. This is to ensure that
4
+ * a developer can write a custom adapter exclusively from the publicly exposed base
5
+ * classes and types of the library.
6
+ */
7
+ import { GetLngLatFromEvent, Project, SetCursor, TerraDrawChanges, TerraDrawExtend, TerraDrawStylingFunction, Unproject } from "./terra-draw";
8
+ declare const TerraDrawBaseAdapter: typeof TerraDrawExtend.TerraDrawBaseAdapter;
9
+ /**
10
+ * A mock implementation of a custom adapter - this is to ensure that it is possible to write
11
+ * custom adapters for Terra Draw exclusively relying on the public API of the library.
12
+ */
13
+ export declare class TerraDrawTestAdapter extends TerraDrawBaseAdapter {
14
+ constructor(config: {
15
+ lib: Record<string, unknown>;
16
+ } & TerraDrawExtend.BaseAdapterConfig);
17
+ getMapEventElement(): HTMLElement;
18
+ clear(): void;
19
+ project(lng: number, lat: number): ReturnType<Project>;
20
+ unproject(x: number, y: number): ReturnType<Unproject>;
21
+ setCursor(_: "move" | "unset" | "grab" | "grabbing" | "crosshair" | "pointer" | "wait"): ReturnType<SetCursor>;
22
+ getLngLatFromEvent(_: PointerEvent | MouseEvent): ReturnType<GetLngLatFromEvent>;
23
+ setDraggability(_: boolean): void;
24
+ setDoubleClickToZoom(_: boolean): void;
25
+ render(_1: TerraDrawChanges, _2: TerraDrawStylingFunction): void;
26
+ register(callbacks: TerraDrawExtend.TerraDrawCallbacks): void;
27
+ }
28
+ export {};