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,208 +0,0 @@
1
- import { Page, expect } from "@playwright/test";
2
-
3
- export const pageUrl = "http://localhost:3000/";
4
-
5
- export type TestConfigOptions =
6
- | "validationSuccess"
7
- | "validationFailure"
8
- | "insertCoordinates"
9
- | "insertCoordinatesGlobe"
10
- | "globeCircle"
11
- | "globeSelect";
12
-
13
- export const setupMap = async ({
14
- page,
15
- configQueryParam,
16
- }: {
17
- page: Page;
18
- configQueryParam?: TestConfigOptions[];
19
- }): Promise<{
20
- x: number;
21
- y: number;
22
- width: number;
23
- height: number;
24
- }> => {
25
- if (configQueryParam) {
26
- if (configQueryParam.length > 1) {
27
- await page.goto(
28
- pageUrl +
29
- "?config=" +
30
- configQueryParam.map((config) => config).join(","),
31
- );
32
- } else {
33
- await page.goto(pageUrl + "?config=" + configQueryParam);
34
- }
35
- } else {
36
- await page.goto(pageUrl);
37
- }
38
-
39
- const mapDiv = await page.getByRole("application");
40
-
41
- // Get the bounding box of the div
42
- const mapBoundingBox = await mapDiv.boundingBox();
43
-
44
- if (!mapBoundingBox) {
45
- throw new Error();
46
- }
47
-
48
- return mapBoundingBox;
49
- };
50
-
51
- export const changeMode = async ({
52
- page,
53
- mode,
54
- }: {
55
- page: Page;
56
- mode:
57
- | "point"
58
- | "polygon"
59
- | "linestring"
60
- | "select"
61
- | "rectangle"
62
- | "circle"
63
- | "angled-rectangle"
64
- | "sector"
65
- | "sensor";
66
- }) => {
67
- let modeText = mode.charAt(0).toUpperCase() + mode.slice(1);
68
-
69
- if (mode.includes("-")) {
70
- modeText = mode
71
- .split("-")
72
- .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
73
- .join(" ");
74
- } else {
75
- modeText = mode.charAt(0).toUpperCase() + mode.slice(1);
76
- }
77
-
78
- const buttons = page.getByTestId("buttons");
79
- const button = buttons.getByText(modeText, { exact: true });
80
-
81
- // Click the mode button
82
- await button.click();
83
-
84
- // Ensure it has been clickde and updatedc correctly
85
- const color = await button.evaluate((el) =>
86
- window.getComputedStyle(el).getPropertyValue("color"),
87
- );
88
- expect(
89
- color,
90
- "Text rgb color should match the expected selected button color",
91
- ).toBe("rgb(39, 204, 255)"); // We set hex but it gets computed to rgb
92
- };
93
-
94
- export const expectPaths = async ({
95
- page,
96
- count,
97
- }: {
98
- page: Page;
99
- count: number;
100
- }) => {
101
- const selector = "svg > g > path";
102
-
103
- if (count > 0) {
104
- await page.waitForSelector(selector);
105
- expect(await page.locator(selector).count()).toBe(count);
106
- } else {
107
- await expect(
108
- await page.locator(selector).count(),
109
- `locator count should be greater than 0 for selector ${selector}`,
110
- ).toBe(0);
111
- }
112
- };
113
-
114
- export const expectPathDimensions = async ({
115
- page,
116
- width,
117
- height,
118
- item = 0,
119
- }: {
120
- page: Page;
121
- width: number;
122
- height: number;
123
- item?: number;
124
- }) => {
125
- const selector = "svg > g > path";
126
-
127
- const boundingBox = await page.locator(selector).nth(item).boundingBox();
128
-
129
- expect(boundingBox?.width).toBe(width);
130
- expect(boundingBox?.height).toBe(height);
131
- };
132
-
133
- export const expectGroupPosition = async ({
134
- page,
135
- x,
136
- y,
137
- }: {
138
- page: Page;
139
- x: number;
140
- y: number;
141
- }) => {
142
- const selector = "svg > g > path";
143
-
144
- const boundingBox = await page.locator(selector).boundingBox();
145
-
146
- expect(boundingBox?.x).toBe(x);
147
- expect(boundingBox?.y).toBe(y);
148
- };
149
-
150
- export const drawRectangularPolygon = async ({
151
- mapDiv,
152
- page,
153
- size = "regular",
154
- }: {
155
- mapDiv: {
156
- x: number;
157
- y: number;
158
- width: number;
159
- height: number;
160
- };
161
- page: Page;
162
- size?: "regular" | "small";
163
- }) => {
164
- // Draw a rectangle
165
- const sideLength = size === "regular" ? 100 : 70;
166
- const halfLength = sideLength / 2;
167
- const centerX = mapDiv.width / 2;
168
- const centerY = mapDiv.height / 2;
169
- const topLeft = { x: centerX - halfLength, y: centerY - halfLength };
170
- const topRight = { x: centerX + halfLength, y: centerY - halfLength };
171
- const bottomLeft = { x: centerX - halfLength, y: centerY + halfLength };
172
- const bottomRight = { x: centerX + halfLength, y: centerY + halfLength };
173
- await page.mouse.click(topLeft.x, topLeft.y);
174
- await page.mouse.click(topRight.x, topRight.y);
175
- await page.mouse.click(bottomRight.x, bottomRight.y);
176
- await page.mouse.click(bottomLeft.x, bottomLeft.y);
177
- await page.mouse.click(bottomLeft.x, bottomLeft.y); // Closed
178
-
179
- return { topLeft, topRight, bottomRight, bottomLeft };
180
- };
181
-
182
- export const drawTwoClickShape = async ({
183
- mapDiv,
184
- page,
185
- }: {
186
- mapDiv: {
187
- x: number;
188
- y: number;
189
- width: number;
190
- height: number;
191
- };
192
- page: Page;
193
- }) => {
194
- // Draw a rectangle
195
- const sideLength = 100;
196
- const halfLength = sideLength / 2;
197
- const centerX = mapDiv.width / 2;
198
- const centerY = mapDiv.height / 2;
199
- const topLeft = { x: centerX - halfLength, y: centerY - halfLength };
200
- const topRight = { x: centerX + halfLength, y: centerY - halfLength };
201
- const bottomLeft = { x: centerX - halfLength, y: centerY + halfLength };
202
- const bottomRight = { x: centerX + halfLength, y: centerY + halfLength };
203
- await page.mouse.click(topLeft.x, topLeft.y);
204
-
205
- await page.mouse.click(bottomRight.x, bottomRight.y); // Closed
206
-
207
- return { topLeft, topRight, bottomRight, bottomLeft };
208
- };
@@ -1,36 +0,0 @@
1
- const path = require("path");
2
- const Dotenv = require("dotenv-webpack");
3
-
4
- module.exports = {
5
- mode: "development",
6
- entry: "./src/index.ts",
7
- devtool: "inline-source-map",
8
- plugins: [new Dotenv()],
9
- module: {
10
- rules: [
11
- {
12
- test: /\.tsx?$/,
13
- use: "ts-loader",
14
- exclude: /node_modules/,
15
- },
16
- ],
17
- },
18
- resolve: {
19
- extensions: [".tsx", ".ts", ".js"],
20
- },
21
- output: {
22
- filename: "bundle.js",
23
- path: path.resolve(__dirname, "dist"),
24
- },
25
- devServer: {
26
- static: {
27
- directory: path.join(__dirname, "public"),
28
- },
29
- liveReload: !process.env.CI,
30
- watchFiles: !process.env.CI
31
- ? ["./src", "./*.{js,json,ts,html}", "../src", "../*.{js,json,ts,html}"]
32
- : [],
33
- compress: true,
34
- port: 3000,
35
- },
36
- };