terra-draw 1.0.0-beta.8 → 1.0.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 (153) hide show
  1. package/.versionrc.cjs +9 -0
  2. package/README.md +4 -47
  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 +11 -6
  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 +5 -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 +11 -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 +2 -3
  48. package/dist/modes/angled-rectangle/angled-rectangle.mode.spec.d.ts +1 -0
  49. package/dist/modes/base.mode.d.ts +3 -1
  50. package/dist/modes/circle/circle.mode.d.ts +3 -2
  51. package/dist/modes/circle/circle.mode.spec.d.ts +1 -0
  52. package/dist/modes/click-bounding-box.behavior.spec.d.ts +1 -0
  53. package/dist/modes/coordinate-snapping.behavior.d.ts +16 -0
  54. package/dist/modes/coordinate-snapping.behavior.spec.d.ts +1 -0
  55. package/dist/modes/freehand/freehand.mode.d.ts +8 -2
  56. package/dist/modes/freehand/freehand.mode.spec.d.ts +1 -0
  57. package/dist/modes/insert-coordinates.behavior.spec.d.ts +1 -0
  58. package/dist/modes/{snapping.behavior.d.ts → line-snapping.behavior.d.ts} +1 -1
  59. package/dist/modes/line-snapping.behavior.spec.d.ts +1 -0
  60. package/dist/modes/linestring/linestring.mode.d.ts +16 -5
  61. package/dist/modes/linestring/linestring.mode.spec.d.ts +1 -0
  62. package/dist/modes/pixel-distance.behavior.spec.d.ts +1 -0
  63. package/dist/modes/point/point.mode.d.ts +2 -2
  64. package/dist/modes/point/point.mode.spec.d.ts +1 -0
  65. package/dist/modes/polygon/behaviors/closing-points.behavior.spec.d.ts +1 -0
  66. package/dist/modes/polygon/polygon.mode.d.ts +17 -4
  67. package/dist/modes/polygon/polygon.mode.spec.d.ts +1 -0
  68. package/dist/modes/rectangle/rectangle.mode.d.ts +2 -2
  69. package/dist/modes/rectangle/rectangle.mode.spec.d.ts +1 -0
  70. package/dist/modes/render/render.mode.d.ts +2 -1
  71. package/dist/modes/render/render.mode.spec.d.ts +1 -0
  72. package/dist/modes/sector/sector.mode.d.ts +2 -2
  73. package/dist/modes/sector/sector.mode.spec.d.ts +1 -0
  74. package/dist/modes/select/behaviors/drag-coordinate-resize.behavior.spec.d.ts +1 -0
  75. package/dist/modes/select/behaviors/drag-coordinate.behavior.spec.d.ts +1 -0
  76. package/dist/modes/select/behaviors/drag-feature.behavior.d.ts +2 -2
  77. package/dist/modes/select/behaviors/drag-feature.behavior.spec.d.ts +1 -0
  78. package/dist/modes/select/behaviors/feature-at-pointer-event.behavior.spec.d.ts +1 -0
  79. package/dist/modes/select/behaviors/midpoint.behavior.spec.d.ts +1 -0
  80. package/dist/modes/select/behaviors/rotate-feature.behavior.spec.d.ts +1 -0
  81. package/dist/modes/select/behaviors/scale-feature.behavior.spec.d.ts +1 -0
  82. package/dist/modes/select/behaviors/selection-point.behavior.spec.d.ts +1 -0
  83. package/dist/modes/select/select.mode.spec.d.ts +1 -0
  84. package/dist/modes/sensor/sensor.mode.d.ts +2 -2
  85. package/dist/modes/sensor/sensor.mode.spec.d.ts +1 -0
  86. package/dist/modes/static/static.mode.spec.d.ts +1 -0
  87. package/dist/store/spatial-index/quickselect.spec.d.ts +1 -0
  88. package/dist/store/spatial-index/rbush.spec.d.ts +1 -0
  89. package/dist/store/spatial-index/spatial-index.spec.d.ts +1 -0
  90. package/dist/store/store-feature-validation.d.ts +8 -2
  91. package/dist/store/store-validation.spec.d.ts +1 -0
  92. package/dist/store/store.d.ts +5 -1
  93. package/dist/store/store.spec.d.ts +1 -0
  94. package/dist/terra-draw.cjs +1 -1
  95. package/dist/terra-draw.cjs.map +1 -1
  96. package/dist/terra-draw.d.ts +13 -14
  97. package/dist/terra-draw.extensions.spec.d.ts +28 -0
  98. package/dist/terra-draw.modern.js +1 -1
  99. package/dist/terra-draw.modern.js.map +1 -1
  100. package/dist/terra-draw.module.js +1 -1
  101. package/dist/terra-draw.module.js.map +1 -1
  102. package/dist/terra-draw.spec.d.ts +1 -0
  103. package/dist/terra-draw.umd.js +1 -1
  104. package/dist/terra-draw.umd.js.map +1 -1
  105. package/dist/test/create-store-features.d.ts +6 -0
  106. package/dist/test/jest.matchers.d.ts +1 -0
  107. package/dist/test/mock-behavior-config.d.ts +2 -0
  108. package/dist/test/mock-callbacks.d.ts +2 -0
  109. package/dist/test/mock-cursor-event.d.ts +6 -0
  110. package/dist/test/mock-features.d.ts +4 -0
  111. package/dist/test/mock-keyboard-event.d.ts +5 -0
  112. package/dist/test/mock-mode-config.d.ts +21 -0
  113. package/dist/test/mock-pointer-event.d.ts +1 -0
  114. package/dist/util/geom.spec.d.ts +1 -0
  115. package/dist/util/id.spec.d.ts +1 -0
  116. package/dist/util/styling.spec.d.ts +1 -0
  117. package/dist/validation-reasons.d.ts +13 -0
  118. package/dist/validations/common-validations.d.ts +2 -0
  119. package/dist/validations/linestring.validation.d.ts +4 -1
  120. package/dist/validations/linestring.validation.spec.d.ts +1 -0
  121. package/dist/validations/max-size.validation.d.ts +3 -1
  122. package/dist/validations/max-size.validation.spec.d.ts +1 -0
  123. package/dist/validations/min-size.validation.d.ts +3 -1
  124. package/dist/validations/min-size.validation.spec.d.ts +1 -0
  125. package/dist/validations/not-self-intersecting.validation.d.ts +4 -1
  126. package/dist/validations/not-self-intersecting.validation.spec.d.ts +1 -0
  127. package/dist/validations/point.validation.d.ts +4 -1
  128. package/dist/validations/point.validation.spec.d.ts +1 -0
  129. package/dist/validations/polygon.validation.d.ts +8 -2
  130. package/dist/validations/polygon.validation.spec.d.ts +1 -0
  131. package/jest.nocheck.config.ts +5 -14
  132. package/package.json +12 -137
  133. package/tsconfig.json +6 -25
  134. package/.devcontainer/Dockerfile +0 -8
  135. package/.devcontainer/devcontainer.json +0 -27
  136. package/.devcontainer/post-create.sh +0 -16
  137. package/LICENSE +0 -8
  138. package/dist/adapters/arcgis-maps-sdk.adapter.d.ts +0 -106
  139. package/dist/adapters/google-maps.adapter.d.ts +0 -90
  140. package/dist/adapters/leaflet.adapter.d.ts +0 -99
  141. package/dist/adapters/mapbox-gl.adapter.d.ts +0 -90
  142. package/dist/adapters/maplibre-gl.adapter.d.ts +0 -72
  143. package/dist/adapters/openlayers.adapter.d.ts +0 -121
  144. package/e2e/README.md +0 -29
  145. package/e2e/package-lock.json +0 -4274
  146. package/e2e/package.json +0 -26
  147. package/e2e/playwright.config.ts +0 -77
  148. package/e2e/public/favicon.ico +0 -0
  149. package/e2e/public/index.html +0 -55
  150. package/e2e/tests/leaflet.spec.ts +0 -1040
  151. package/e2e/tests/setup.ts +0 -208
  152. package/e2e/webpack.config.js +0 -36
  153. /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 } 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";
@@ -23,6 +20,7 @@ import { TerraDrawAngledRectangleMode } from "./modes/angled-rectangle/angled-re
23
20
  import { TerraDrawSectorMode } from "./modes/sector/sector.mode";
24
21
  import { TerraDrawSensorMode } from "./modes/sensor/sensor.mode";
25
22
  import * as TerraDrawExtend from "./extend";
23
+ import { ValidationReasons } from "./validation-reasons";
26
24
  type FinishListener = (id: FeatureId, context: OnFinishContext) => void;
27
25
  type ChangeListener = (ids: FeatureId[], type: string) => void;
28
26
  type SelectListener = (id: FeatureId) => void;
@@ -151,15 +149,15 @@ declare class TerraDraw {
151
149
  */
152
150
  hasFeature(id: FeatureId): boolean;
153
151
  /**
154
- * A method for adding features to the store. This method will validate the features.
155
- * Features must match one of the modes enabled in the instance.
156
- * @param mode
157
- * @param features
158
- * @returns
152
+ * A method for adding features to the store. This method will validate the features
153
+ * returning an array of validation results. Features must match one of the modes enabled
154
+ * in the instance.
155
+ * @param features - an array of GeoJSON features
156
+ * @returns an array of validation results
159
157
  *
160
158
  * @beta
161
159
  */
162
- addFeatures(features: GeoJSONStoreFeatures[]): void;
160
+ addFeatures(features: GeoJSONStoreFeatures[]): StoreValidation[];
163
161
  /**
164
162
  * A method starting Terra Draw. It put the instance into a started state, and
165
163
  * in registers the passed adapter giving it all the callbacks required to operate.
@@ -218,4 +216,5 @@ declare class TerraDraw {
218
216
  */
219
217
  off<T extends TerraDrawEvents>(event: TerraDrawEvents, callback: TerraDrawEventListeners[T]): void;
220
218
  }
221
- 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, };
219
+ declare const HELLO = "HELLO";
220
+ export { TerraDraw, HELLO, 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 {};