diff --git a/src/components/ImageCropper.svelte b/src/components/ImageCropper.svelte index 958abdd..9dfedcd 100644 --- a/src/components/ImageCropper.svelte +++ b/src/components/ImageCropper.svelte @@ -113,7 +113,7 @@ diff --git a/src/components/ImageUpload.svelte b/src/components/ImageUpload.svelte index 8895ef8..21281ee 100644 --- a/src/components/ImageUpload.svelte +++ b/src/components/ImageUpload.svelte @@ -8,10 +8,10 @@ let imageService = new ImageService(); - let dropZone: HTMLElement; - let fileInput: HTMLInputElement; - let urlInput: HTMLInputElement; - let urlForm: HTMLFormElement; + let dropZone = $state(null); + let fileInput = $state(null); + let urlInput = $state(null); + let urlForm = $state(null); let isDragOver = $state(false); let showUrlInput = $state(false); @@ -68,13 +68,13 @@ async function handleFileUpload(file: File) { try { setLoading(true); - uiStore.clearError(); + clearError(); const result: ImageUploadResult = await imageService.handleFileUpload(file); if (result.success && result.image) { uploadedImage = result.image; - uiStore.setCurrentStep("crop"); + setCurrentStep("crop"); } else { errorMessage = result.error || "Ошибка загрузки файла"; } @@ -90,13 +90,13 @@ try { setLoading(true); - uiStore.clearError(); + clearError(); const result: ImageUploadResult = await imageService.handlePasteUpload(e); if (result.success && result.image) { uploadedImage = result.image; - uiStore.setCurrentStep("crop"); + setCurrentStep("crop"); } else { errorMessage = result.error || "Ошибка вставки изображения"; } @@ -114,13 +114,13 @@ try { setLoading(true); - uiStore.clearError(); + clearError(); const result: ImageUploadResult = await imageService.handleUrlUpload(urlInput.value.trim()); if (result.success && result.image) { uploadedImage = result.image; - uiStore.setCurrentStep("crop"); + setCurrentStep("crop"); showUrlInput = false; } else { errorMessage = result.error || "Ошибка загрузки изображения"; @@ -140,7 +140,7 @@ uploadedImage = null; errorMessage = null; showUrlInput = false; - uiStore.setCurrentStep("upload"); + setCurrentStep("upload"); } @@ -156,7 +156,15 @@ { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + triggerFileInput(); + } + }} > @@ -169,7 +177,7 @@ Перетащите файл сюда, нажмите для выбора, или вставьте через Ctrl+V - Выбрать файл + { e.stopPropagation(); triggerFileInput(); }}> Выбрать файл (showUrlInput = !showUrlInput)}> {showUrlInput ? "Скрыть" : "По URL"} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 00fb6c0..4184ddb 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -3,7 +3,7 @@ import { onMount } from "svelte"; import { browser } from "$app/environment"; import { panelStore, createEmptyPanel } from "../stores/panelStore"; - import { uiStore, setLoading } from "../stores/uiStore"; + import { uiStore, setLoading, setCurrentStep } from "../stores/uiStore"; import { panelStorage } from "../lib/utils/panelStorage"; import { exportService } from "../lib/services/exportService"; import type { Panel } from "../lib/types/panel"; @@ -47,6 +47,7 @@ function handleImageUpload(image: string) { uploadedImage = image; errorMessage = null; + uiStore.setCurrentStep("crop"); } function handleCropComplete(croppedImage: string) { @@ -62,12 +63,12 @@ // Сохраняем панель panelStorage.savePanel(newPanel); - uiStore.setCurrentStep("text"); + setCurrentStep("text"); } function handleCropCancel() { uploadedImage = null; - uiStore.setCurrentStep("upload"); + setCurrentStep("upload"); } function handleTextUpdate(texts: Panel["texts"]) { @@ -85,14 +86,14 @@ function handlePanelSelect(panel: Panel) { panelStore.set(panel); currentPanel = panel; - uiStore.setCurrentStep("preview"); + setCurrentStep("preview"); } function handlePanelDelete(panelId: string) { if (currentPanel?.id === panelId) { panelStore.set(null); currentPanel = null; - uiStore.setCurrentStep("upload"); + setCurrentStep("upload"); } } @@ -121,7 +122,7 @@ currentPanel = null; uploadedImage = null; croppedImage = null; - uiStore.setCurrentStep("upload"); + setCurrentStep("upload"); } @@ -141,12 +142,14 @@ {#if $uiStore.currentStep === "upload"} {#if ImageUpload} - + {@const Upload = ImageUpload.default} + {/if} {:else if $uiStore.currentStep === "crop" && uploadedImage} {#if ImageCropper} + {@const Cropper = ImageCropper.default} + {@const Manager = TextManager.default} + {/if} {:else if $uiStore.currentStep === "preview"} {#if PanelPreview} - + {@const Preview = PanelPreview.default} + {/if} {/if} {#if PanelList} + {@const List = PanelList.default}
Перетащите файл сюда, нажмите для выбора, или вставьте через Ctrl+V