From 565baddfbf4e9f05ad0b83a5e619415f64b5f983 Mon Sep 17 00:00:00 2001 From: Samuel Prevost Date: Fri, 1 May 2026 00:12:08 +0200 Subject: [PATCH] feat(crop): rotate + crop step between deskew and measure --- src/App.vue | 4 +- src/components/CorrectedImageViewer.vue | 86 +++- src/components/CropViewer.vue | 507 ++++++++++++++++++++++++ src/components/DeskewViewer.vue | 8 +- src/components/ImageUpload.vue | 42 +- src/components/MeasureViewer.vue | 160 +++++++- src/components/StepIndicator.vue | 3 +- src/lib/crop-cache.ts | 49 +++ src/lib/crop-transform.ts | 90 +++++ src/lib/upload-cache.ts | 8 + src/stores/app.ts | 29 +- src/types/index.ts | 40 +- 12 files changed, 994 insertions(+), 32 deletions(-) create mode 100644 src/components/CropViewer.vue create mode 100644 src/lib/crop-cache.ts create mode 100644 src/lib/crop-transform.ts diff --git a/src/App.vue b/src/App.vue index 0877451..3517d7c 100644 --- a/src/App.vue +++ b/src/App.vue @@ -5,6 +5,7 @@ import ImageUpload from "@/components/ImageUpload.vue" import ExifViewer from "@/components/ExifViewer.vue" import DatumEditor from "@/components/DatumEditor.vue" import DeskewViewer from "@/components/DeskewViewer.vue" +import CropViewer from "@/components/CropViewer.vue" import MeasureViewer from "@/components/MeasureViewer.vue" import ThemeToggle from "@/components/ThemeToggle.vue" import SkwikLogo from "@/components/SkwikLogo.vue" @@ -76,7 +77,8 @@ const store = useAppStore() - + +