diff --git a/package-lock.json b/package-lock.json index 29a2d27fb..3ccdb9948 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "@fortawesome/fontawesome-free": "^5.2.0", "bootstrap-sass": "^3.3.7", "echarts": "^5.3.2", + "jsts": "^2.11.0", "magic-wand-tool": "^1.1.4", "polymorph-js": "^0.2.4", "uiv": "^1.2.4", @@ -7059,6 +7060,14 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsts": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/jsts/-/jsts-2.11.0.tgz", + "integrity": "sha512-1++68krnA5CJ8DguYiqNWAtoDJl/4c6yLVKp+DylTKsOY73JERGRXYFT7ncPipHc33lgnjVWReKJO8+gpwm5ag==", + "engines": { + "node": ">= 16" + } + }, "node_modules/junk": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", @@ -16937,6 +16946,11 @@ "universalify": "^2.0.0" } }, + "jsts": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/jsts/-/jsts-2.11.0.tgz", + "integrity": "sha512-1++68krnA5CJ8DguYiqNWAtoDJl/4c6yLVKp+DylTKsOY73JERGRXYFT7ncPipHc33lgnjVWReKJO8+gpwm5ag==" + }, "junk": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", diff --git a/package.json b/package.json index 9e402b826..c9dfe61c3 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "@fortawesome/fontawesome-free": "^5.2.0", "bootstrap-sass": "^3.3.7", "echarts": "^5.3.2", + "jsts": "^2.11.0", "magic-wand-tool": "^1.1.4", "polymorph-js": "^0.2.4", "uiv": "^1.2.4", diff --git a/resources/assets/js/annotations/annotatorContainer.vue b/resources/assets/js/annotations/annotatorContainer.vue index b21736a8a..d35172c04 100644 --- a/resources/assets/js/annotations/annotatorContainer.vue +++ b/resources/assets/js/annotations/annotatorContainer.vue @@ -571,6 +571,9 @@ export default { dismissCrossOriginError() { this.crossOriginError = false; }, + handleInvalidPolygon() { + Messages.danger(`Invalid shape. Polygon needs at least 3 non-overlapping vertices.`); + }, }, watch: { async imageId(id) { diff --git a/resources/assets/js/annotations/components/annotationCanvas.vue b/resources/assets/js/annotations/components/annotationCanvas.vue index 2d0373251..a15865a50 100644 --- a/resources/assets/js/annotations/components/annotationCanvas.vue +++ b/resources/assets/js/annotations/components/annotationCanvas.vue @@ -1,4 +1,5 @@