terra-draw 0.0.1-alpha.5 → 0.0.1-alpha.50

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 (102) hide show
  1. package/.devcontainer/Dockerfile +8 -0
  2. package/.devcontainer/devcontainer.json +21 -0
  3. package/.devcontainer/post-create.sh +16 -0
  4. package/README.md +26 -4
  5. package/dist/adapters/common/adapter-listener.d.ts +22 -0
  6. package/dist/adapters/common/base.adapter.d.ts +52 -0
  7. package/dist/adapters/google-maps.adapter.d.ts +91 -38
  8. package/dist/adapters/leaflet.adapter.d.ts +98 -35
  9. package/dist/adapters/mapbox-gl.adapter.d.ts +89 -36
  10. package/dist/adapters/maplibre-gl.adapter.d.ts +72 -0
  11. package/dist/adapters/openlayers.adapter.d.ts +118 -0
  12. package/dist/common.d.ts +100 -99
  13. package/dist/geometry/boolean/is-valid-coordinate.d.ts +4 -0
  14. package/dist/geometry/boolean/is-valid-linestring-feature.d.ts +2 -0
  15. package/dist/geometry/boolean/is-valid-point.d.ts +2 -0
  16. package/dist/geometry/boolean/is-valid-polygon-feature.d.ts +3 -0
  17. package/dist/geometry/boolean/point-in-polygon.d.ts +2 -2
  18. package/dist/geometry/boolean/self-intersects.d.ts +2 -2
  19. package/dist/geometry/centroid.d.ts +2 -2
  20. package/dist/geometry/coordinates-identical.d.ts +2 -2
  21. package/dist/geometry/get-coordinates-as-points.d.ts +6 -6
  22. package/dist/geometry/get-midpoints.d.ts +8 -7
  23. package/dist/geometry/helpers.d.ts +4 -4
  24. package/dist/geometry/limit-decimal-precision.d.ts +1 -1
  25. package/dist/geometry/measure/haversine-distance.d.ts +2 -2
  26. package/dist/geometry/measure/pixel-distance-to-line.d.ts +10 -10
  27. package/dist/geometry/measure/pixel-distance.d.ts +7 -7
  28. package/dist/geometry/measure/rhumb-bearing.d.ts +2 -2
  29. package/dist/geometry/measure/rhumb-destination.d.ts +2 -2
  30. package/dist/geometry/measure/rhumb-distance.d.ts +2 -2
  31. package/dist/geometry/midpoint-coordinate.d.ts +3 -2
  32. package/dist/geometry/shape/create-bbox.d.ts +10 -0
  33. package/dist/geometry/shape/create-circle.d.ts +7 -7
  34. package/dist/geometry/shape/great-circle-line.d.ts +12 -0
  35. package/dist/geometry/transform/rotate.d.ts +2 -2
  36. package/dist/geometry/transform/scale.d.ts +2 -2
  37. package/dist/modes/base.behavior.d.ts +19 -19
  38. package/dist/modes/base.mode.d.ts +58 -30
  39. package/dist/modes/circle/circle.mode.d.ts +54 -27
  40. package/dist/modes/click-bounding-box.behavior.d.ts +6 -7
  41. package/dist/modes/freehand/freehand.mode.d.ts +63 -29
  42. package/dist/modes/great-circle-snapping.behavior.d.ts +13 -0
  43. package/dist/modes/greatcircle/great-circle.mode.d.ts +64 -0
  44. package/dist/modes/linestring/linestring.mode.d.ts +67 -34
  45. package/dist/modes/pixel-distance.behavior.d.ts +7 -7
  46. package/dist/modes/point/point.mode.d.ts +44 -18
  47. package/dist/modes/polygon/behaviors/closing-points.behavior.d.ts +19 -0
  48. package/dist/modes/polygon/polygon.mode.d.ts +70 -37
  49. package/dist/modes/rectangle/rectangle.mode.d.ts +55 -0
  50. package/dist/modes/render/render.mode.d.ts +51 -0
  51. package/dist/modes/select/behaviors/drag-coordinate.behavior.d.ts +19 -13
  52. package/dist/modes/select/behaviors/drag-feature.behavior.d.ts +19 -17
  53. package/dist/modes/select/behaviors/feature-at-pointer-event.behavior.d.ts +15 -0
  54. package/dist/modes/select/behaviors/features-at-mouse-event.behavior.d.ts +15 -15
  55. package/dist/modes/select/behaviors/midpoint.behavior.d.ts +18 -18
  56. package/dist/modes/select/behaviors/rotate-feature.behavior.d.ts +13 -13
  57. package/dist/modes/select/behaviors/scale-feature.behavior.d.ts +13 -13
  58. package/dist/modes/select/behaviors/selection-point.behavior.d.ts +18 -18
  59. package/dist/modes/select/select.mode.d.ts +110 -62
  60. package/dist/modes/snapping.behavior.d.ts +15 -13
  61. package/dist/modes/static/static.mode.d.ts +32 -13
  62. package/dist/store/spatial-index/quickselect.d.ts +2 -2
  63. package/dist/store/spatial-index/rbush.d.ts +35 -35
  64. package/dist/store/spatial-index/spatial-index.d.ts +18 -18
  65. package/dist/store/store-feature-validation.d.ts +15 -0
  66. package/dist/store/store.d.ts +48 -48
  67. package/dist/terra-draw.cjs +1 -1
  68. package/dist/terra-draw.cjs.map +1 -1
  69. package/dist/terra-draw.d.ts +183 -47
  70. package/dist/terra-draw.modern.js +1 -1
  71. package/dist/terra-draw.modern.js.map +1 -1
  72. package/dist/terra-draw.module.js +1 -1
  73. package/dist/terra-draw.module.js.map +1 -1
  74. package/dist/terra-draw.umd.js +1 -1
  75. package/dist/terra-draw.umd.js.map +1 -1
  76. package/dist/util/geoms.d.ts +3 -3
  77. package/dist/util/id.d.ts +1 -1
  78. package/dist/util/styling.d.ts +2 -2
  79. package/jest.nocheck.config.ts +9 -0
  80. package/package.json +156 -87
  81. package/readme.gif +0 -0
  82. package/tsconfig.json +20 -12
  83. package/CODE_OF_CONDUCT.md +0 -36
  84. package/CONTRIBUTING.md +0 -17
  85. package/DEVELOPMENT.md +0 -77
  86. package/dist/bundle.js +0 -6
  87. package/dist/bundle.js.LICENSE.txt +0 -4
  88. package/dist/geometry/create-circle.d.ts +0 -6
  89. package/dist/geometry/get-pixel-distance-to-line.d.ts +0 -10
  90. package/dist/geometry/get-pixel-distance.d.ts +0 -7
  91. package/dist/geometry/haversine-distance.d.ts +0 -1
  92. package/dist/geometry/point-in-polygon.d.ts +0 -1
  93. package/dist/geometry/self-intersects.d.ts +0 -2
  94. package/dist/modes/circle.mode.d.ts +0 -18
  95. package/dist/modes/freehand.mode.d.ts +0 -20
  96. package/dist/modes/line-string.mode.d.ts +0 -21
  97. package/dist/modes/point.mode.d.ts +0 -14
  98. package/dist/modes/polygon/behaviors/start-end-point.behavior.d.ts +0 -11
  99. package/dist/modes/polygon.mode.d.ts +0 -21
  100. package/dist/modes/select.mode.d.ts +0 -21
  101. package/dist/modes/static.mode.d.ts +0 -10
  102. package/jest.config.ts +0 -27
@@ -1,47 +1,183 @@
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 { TerraDrawMode, TerraDrawAdapter, TerraDrawAdapterStyling } from "./common";
5
- import { TerraDrawCircleMode } from "./modes/circle/circle.mode";
6
- import { TerraDrawFreehandMode } from "./modes/freehand/freehand.mode";
7
- import { TerraDrawLineStringMode } from "./modes/linestring/linestring.mode";
8
- import { TerraDrawPointMode } from "./modes/point/point.mode";
9
- import { TerraDrawPolygonMode } from "./modes/polygon/polygon.mode";
10
- import { TerraDrawSelectMode } from "./modes/select/select.mode";
11
- import { GeoJSONStoreFeatures } from "./store/store";
12
- declare type ChangeListener = (ids: string[], type: string) => void;
13
- declare type SelectListener = (id: string) => void;
14
- declare type DeselectListener = () => void;
15
- interface TerraDrawEventListeners {
16
- change: ChangeListener;
17
- select: SelectListener;
18
- deselect: DeselectListener;
19
- }
20
- declare type TerraDrawEvents = keyof TerraDrawEventListeners;
21
- declare class TerraDraw {
22
- private _modes;
23
- private _mode;
24
- private _adapter;
25
- private _enabled;
26
- private _store;
27
- private _eventListeners;
28
- constructor(options: {
29
- adapter: TerraDrawAdapter;
30
- modes: {
31
- [mode: string]: TerraDrawMode;
32
- };
33
- data?: GeoJSONStoreFeatures[];
34
- });
35
- private getModeStyles;
36
- setModeStyling(mode: string, styling: TerraDrawAdapterStyling): void;
37
- getSnapshot(): GeoJSONStoreFeatures[];
38
- get enabled(): boolean;
39
- set enabled(_: boolean);
40
- getCurrentMode(): string;
41
- changeMode(mode: string): void;
42
- start(): void;
43
- stop(): void;
44
- on<T extends TerraDrawEvents>(event: T, callback: TerraDrawEventListeners[T]): void;
45
- off<T extends TerraDrawEvents>(event: TerraDrawEvents, callback: TerraDrawEventListeners[T]): void;
46
- }
47
- export { TerraDraw, TerraDrawSelectMode, TerraDrawPointMode, TerraDrawLineStringMode, TerraDrawPolygonMode, TerraDrawCircleMode, TerraDrawFreehandMode, TerraDrawGoogleMapsAdapter, TerraDrawMapboxGLAdapter, TerraDrawLeafletAdapter, };
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 { TerraDrawAdapter, TerraDrawAdapterStyling, GetLngLatFromEvent, Project, SetCursor, TerraDrawChanges, TerraDrawStylingFunction, Unproject, HexColor, TerraDrawKeyboardEvent, TerraDrawMouseEvent } from "./common";
7
+ import { TerraDrawBaseAdapter } from "./adapters/common/base.adapter";
8
+ import { TerraDrawBaseDrawMode } from "./modes/base.mode";
9
+ import { TerraDrawCircleMode } from "./modes/circle/circle.mode";
10
+ import { TerraDrawFreehandMode } from "./modes/freehand/freehand.mode";
11
+ import { TerraDrawGreatCircleMode } from "./modes/greatcircle/great-circle.mode";
12
+ import { TerraDrawLineStringMode } from "./modes/linestring/linestring.mode";
13
+ import { TerraDrawPointMode } from "./modes/point/point.mode";
14
+ import { TerraDrawPolygonMode } from "./modes/polygon/polygon.mode";
15
+ import { TerraDrawRectangleMode } from "./modes/rectangle/rectangle.mode";
16
+ import { TerraDrawRenderMode } from "./modes/render/render.mode";
17
+ import { TerraDrawSelectMode } from "./modes/select/select.mode";
18
+ import { GeoJSONStoreFeatures } from "./store/store";
19
+ import { BehaviorConfig } from "./modes/base.behavior";
20
+ type FinishListener = (ids: string) => void;
21
+ type ChangeListener = (ids: string[], type: string) => void;
22
+ type SelectListener = (id: string) => void;
23
+ type DeselectListener = () => void;
24
+ interface TerraDrawEventListeners {
25
+ finish: FinishListener;
26
+ change: ChangeListener;
27
+ select: SelectListener;
28
+ deselect: DeselectListener;
29
+ }
30
+ type TerraDrawEvents = keyof TerraDrawEventListeners;
31
+ declare class TerraDraw {
32
+ private _modes;
33
+ private _mode;
34
+ private _adapter;
35
+ private _enabled;
36
+ private _store;
37
+ private _eventListeners;
38
+ private _instanceSelectMode;
39
+ constructor(options: {
40
+ adapter: TerraDrawAdapter;
41
+ modes: TerraDrawBaseDrawMode<any>[];
42
+ });
43
+ private checkEnabled;
44
+ private getModeStyles;
45
+ private featuresAtLocation;
46
+ /**
47
+ * Allows the setting of a style for a given mode
48
+ *
49
+ * @param mode - The mode you wish to set a style for
50
+ * @param styles - The styles you wish to set for the mode - this is
51
+ * the same as the initialisation style schema
52
+ *
53
+ * @alpha
54
+ */
55
+ setModeStyles<Styling extends Record<string, number | HexColor>>(mode: string, styles: Styling): void;
56
+ /**
57
+ * Allows the user to get a snapshot (copy) of all given features
58
+ *
59
+ * @returns An array of all given Feature Geometries in the instances store
60
+ *
61
+ * @alpha
62
+ */
63
+ getSnapshot(): GeoJSONStoreFeatures[];
64
+ /**
65
+ * Removes all data from the current store and removes any rendered layers
66
+ * via the registering the adapter.
67
+ *
68
+ * @alpha
69
+ */
70
+ clear(): void;
71
+ /**
72
+ * A property used to determine whether the instance is active or not. You
73
+ * can use the start method to set this to true, and stop method to set this to false.
74
+ * This is a read only property.
75
+ *
76
+ * @return true or false depending on if the instance is stopped or started
77
+ * @readonly
78
+ * @alpha
79
+ */
80
+ get enabled(): boolean;
81
+ /**
82
+ * enabled is a read only property and will throw and error if you try and set it.
83
+ *
84
+ * @alpha
85
+ */
86
+ set enabled(_: boolean);
87
+ /**
88
+ * A method for getting the current mode name
89
+ *
90
+ * @return the current mode name
91
+ *
92
+ * @alpha
93
+ */
94
+ getMode(): string;
95
+ /**
96
+ * A method for setting the current mode by name. Under the hood this will stop
97
+ * the previous mode and start the new one.
98
+ * @param mode - The mode name you wish to start
99
+ *
100
+ * @alpha
101
+ */
102
+ setMode(mode: string): void;
103
+ /**
104
+ * A method for removing features to the store
105
+ * @param ids
106
+ * @returns
107
+ *
108
+ * @alpha
109
+ */
110
+ removeFeatures(ids: string[]): void;
111
+ /**
112
+ * A method for adding features to the store. This method will validate the features.
113
+ * Features must match one of the modes enabled in the instance.
114
+ * @param mode
115
+ * @param features
116
+ * @returns
117
+ *
118
+ * @alpha
119
+ */
120
+ addFeatures(features: GeoJSONStoreFeatures[]): void;
121
+ /**
122
+ * A method starting Terra Draw. It put the instance into a started state, and
123
+ * in registers the passed adapter giving it all the callbacks required to operate.
124
+ *
125
+ * @alpha
126
+ */
127
+ start(): void;
128
+ /**
129
+ * Gets the features at a given longitude and latitude.
130
+ * Will return point and linestrings that are a given pixel distance
131
+ * away from the lng/lat and any polygons which contain it.
132
+ *
133
+ * @alpha
134
+ */
135
+ getFeaturesAtLngLat(lngLat: {
136
+ lng: number;
137
+ lat: number;
138
+ }, options?: {
139
+ pointerDistance: number;
140
+ ignoreSelectFeatures: boolean;
141
+ }): GeoJSONStoreFeatures[];
142
+ /**
143
+ * Takes a given pointer event and
144
+ * Will return point and linestrings that are a given pixel distance
145
+ * away from the lng/lat and any polygons which contain it.
146
+ *
147
+ * @alpha
148
+ */
149
+ getFeaturesAtPointerEvent(event: PointerEvent | MouseEvent, options?: {
150
+ pointerDistance: number;
151
+ ignoreSelectFeatures: boolean;
152
+ }): GeoJSONStoreFeatures[];
153
+ /**
154
+ * A method for stopping Terra Draw. Will clear the store, deregister the adapter and
155
+ * remove any rendered layers in the process.
156
+ *
157
+ * @alpha
158
+ */
159
+ stop(): void;
160
+ /**
161
+ * Registers a Terra Draw event
162
+ *
163
+ * @param event - The name of the event you wish to listen for
164
+ * @param callback - The callback with you wish to be called when this event occurs
165
+ *
166
+ * @alpha
167
+ */
168
+ on<T extends TerraDrawEvents>(event: T, callback: TerraDrawEventListeners[T]): void;
169
+ /**
170
+ * Unregisters a Terra Draw event
171
+ *
172
+ * @param event - The name of the event you wish to unregister
173
+ * @param callback - The callback you originally provided to the 'on' method
174
+ *
175
+ * @alpha
176
+ */
177
+ off<T extends TerraDrawEvents>(event: TerraDrawEvents, callback: TerraDrawEventListeners[T]): void;
178
+ }
179
+ declare const TerraDrawExtend: {
180
+ TerraDrawBaseDrawMode: typeof TerraDrawBaseDrawMode;
181
+ TerraDrawBaseAdapter: typeof TerraDrawBaseAdapter;
182
+ };
183
+ export { TerraDraw, TerraDrawSelectMode, TerraDrawPointMode, TerraDrawLineStringMode, TerraDrawGreatCircleMode, TerraDrawPolygonMode, TerraDrawCircleMode, TerraDrawFreehandMode, TerraDrawRenderMode, TerraDrawRectangleMode, TerraDrawGoogleMapsAdapter, TerraDrawMapboxGLAdapter, TerraDrawLeafletAdapter, TerraDrawMapLibreGLAdapter, TerraDrawOpenLayersAdapter, TerraDrawExtend, BehaviorConfig, GeoJSONStoreFeatures, HexColor, TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, TerraDrawChanges, TerraDrawStylingFunction, Project, Unproject, SetCursor, GetLngLatFromEvent, };