From 53a5ed1f779ddd9664a260b0fff20e800d1c1867 Mon Sep 17 00:00:00 2001 From: tonyaellie Date: Sun, 13 Apr 2025 16:43:16 +0000 Subject: [PATCH] feat: proof of concept --- frontend/components/Item/ImageUpload.vue | 210 ++++++++++++++++------- frontend/package.json | 1 + frontend/pnpm-lock.yaml | 31 ++++ 3 files changed, 182 insertions(+), 60 deletions(-) diff --git a/frontend/components/Item/ImageUpload.vue b/frontend/components/Item/ImageUpload.vue index 46f9423d..fe89e787 100644 --- a/frontend/components/Item/ImageUpload.vue +++ b/frontend/components/Item/ImageUpload.vue @@ -1,3 +1,90 @@ + + - + diff --git a/frontend/package.json b/frontend/package.json index b7acd483..33ff0094 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -76,6 +76,7 @@ "tailwindcss-animate": "^1.0.7", "vaul-vue": "^0.4.1", "vue": "3.4.8", + "vue-advanced-cropper": "^2.8.9", "vue-router": "^4.5.0", "vue-sonner": "^1.3.0" } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index e8385c5f..64298b64 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -110,6 +110,9 @@ importers: vue: specifier: 3.4.8 version: 3.4.8(typescript@5.6.2) + vue-advanced-cropper: + specifier: ^2.8.9 + version: 2.8.9(vue@3.4.8(typescript@5.6.2)) vue-router: specifier: ^4.5.0 version: 4.5.0(vue@3.4.8(typescript@5.6.2)) @@ -2510,6 +2513,9 @@ packages: class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + clean-regexp@1.0.0: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} @@ -2763,6 +2769,9 @@ packages: de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -2926,6 +2935,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + easy-bem@1.1.1: + resolution: {integrity: sha512-GJRqdiy2h+EXy6a8E6R+ubmqUM08BK0FWNq41k24fup6045biQ8NXxoXimiwegMQvFFV3t1emADdGNL1TlS61A==} + ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -5891,6 +5903,12 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + vue-advanced-cropper@2.8.9: + resolution: {integrity: sha512-1jc5gO674kVGpJKekoaol6ZlwaF5VYDLSBwBOUpViW0IOrrRsyLw6XNszjEqgbavvqinlKNS6Kqlom3B5M72Tw==} + engines: {node: '>=8', npm: '>=5'} + peerDependencies: + vue: ^3.0.0 + vue-bundle-renderer@2.1.1: resolution: {integrity: sha512-+qALLI5cQncuetYOXp4yScwYvqh8c6SMXee3B+M7oTZxOgtESP0l4j/fXdEJoZ+EdMxkGWIj+aSEyjXkOdmd7g==} @@ -8915,6 +8933,8 @@ snapshots: dependencies: clsx: 2.1.1 + classnames@2.5.1: {} + clean-regexp@1.0.0: dependencies: escape-string-regexp: 1.0.5 @@ -9157,6 +9177,8 @@ snapshots: de-indent@1.0.2: {} + debounce@1.2.1: {} + debug@2.6.9: dependencies: ms: 2.0.0 @@ -9284,6 +9306,8 @@ snapshots: eastasianwidth@0.2.0: {} + easy-bem@1.1.1: {} + ee-first@1.1.1: {} ejs@3.1.10: @@ -12728,6 +12752,13 @@ snapshots: vscode-uri@3.1.0: {} + vue-advanced-cropper@2.8.9(vue@3.4.8(typescript@5.6.2)): + dependencies: + classnames: 2.5.1 + debounce: 1.2.1 + easy-bem: 1.1.1 + vue: 3.4.8(typescript@5.6.2) + vue-bundle-renderer@2.1.1: dependencies: ufo: 1.5.4