diff --git a/src/components/UploadInput.vue b/src/components/UploadInput.vue index baa98066..78f5da85 100644 --- a/src/components/UploadInput.vue +++ b/src/components/UploadInput.vue @@ -39,6 +39,7 @@ export default defineComponent({ return { handleClick, handleChange, + inputRef, } }, }) diff --git a/src/views/Editor/CanvasTool/index.vue b/src/views/Editor/CanvasTool/index.vue index 841a25d6..8382a2ca 100644 --- a/src/views/Editor/CanvasTool/index.vue +++ b/src/views/Editor/CanvasTool/index.vue @@ -7,7 +7,9 @@
- + + + @@ -26,11 +28,18 @@ import { defineComponent, computed } from 'vue' import { useStore } from 'vuex' import { State } from '@/store' +import { getImageDataURL } from '@/utils/image' import useScaleCanvas from '@/hooks/useScaleCanvas' import useHistorySnapshot from '@/hooks/useHistorySnapshot' +import useCreateElement from '@/hooks/useCreateElement' + +import UploadInput from '@/components/UploadInput.vue' export default defineComponent({ name: 'canvas-tool', + components: { + UploadInput, + }, setup() { const store = useStore() const canvasScale = computed(() => store.state.canvasScale) @@ -42,6 +51,14 @@ export default defineComponent({ const { scaleCanvas } = useScaleCanvas() const { redo, undo } = useHistorySnapshot() + const { createImageElement } = useCreateElement() + + const insertImageElement = (files: File[]) => { + const imageFile = files[0] + if(!imageFile) return + getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL)) + } + return { scaleCanvas, canvasScalePercentage, @@ -49,6 +66,7 @@ export default defineComponent({ canRedo, redo, undo, + insertImageElement, } }, }) @@ -74,6 +92,7 @@ export default defineComponent({ top: 50%; left: 50%; transform: translate(-50%, -50%); + display: flex; } .handler-item { margin: 0 10px;