fix: resolve deprecated warnings

This commit is contained in:
2026-02-03 22:25:58 +05:00
parent fd19f2c7ba
commit c18ea19316
3 changed files with 38 additions and 24 deletions
+1 -1
View File
@@ -113,7 +113,7 @@
<img <img
bind:this={imageElement} bind:this={imageElement}
src={imageSrc} src={imageSrc}
alt="Image to crop" alt=""
class="cropper-image" class="cropper-image"
/> />
</div> </div>
+20 -12
View File
@@ -8,10 +8,10 @@
let imageService = new ImageService(); let imageService = new ImageService();
let dropZone: HTMLElement; let dropZone = $state<HTMLElement | null>(null);
let fileInput: HTMLInputElement; let fileInput = $state<HTMLInputElement | null>(null);
let urlInput: HTMLInputElement; let urlInput = $state<HTMLInputElement | null>(null);
let urlForm: HTMLFormElement; let urlForm = $state<HTMLFormElement | null>(null);
let isDragOver = $state(false); let isDragOver = $state(false);
let showUrlInput = $state(false); let showUrlInput = $state(false);
@@ -68,13 +68,13 @@
async function handleFileUpload(file: File) { async function handleFileUpload(file: File) {
try { try {
setLoading(true); setLoading(true);
uiStore.clearError(); clearError();
const result: ImageUploadResult = await imageService.handleFileUpload(file); const result: ImageUploadResult = await imageService.handleFileUpload(file);
if (result.success && result.image) { if (result.success && result.image) {
uploadedImage = result.image; uploadedImage = result.image;
uiStore.setCurrentStep("crop"); setCurrentStep("crop");
} else { } else {
errorMessage = result.error || "Ошибка загрузки файла"; errorMessage = result.error || "Ошибка загрузки файла";
} }
@@ -90,13 +90,13 @@
try { try {
setLoading(true); setLoading(true);
uiStore.clearError(); clearError();
const result: ImageUploadResult = await imageService.handlePasteUpload(e); const result: ImageUploadResult = await imageService.handlePasteUpload(e);
if (result.success && result.image) { if (result.success && result.image) {
uploadedImage = result.image; uploadedImage = result.image;
uiStore.setCurrentStep("crop"); setCurrentStep("crop");
} else { } else {
errorMessage = result.error || "Ошибка вставки изображения"; errorMessage = result.error || "Ошибка вставки изображения";
} }
@@ -114,13 +114,13 @@
try { try {
setLoading(true); setLoading(true);
uiStore.clearError(); clearError();
const result: ImageUploadResult = await imageService.handleUrlUpload(urlInput.value.trim()); const result: ImageUploadResult = await imageService.handleUrlUpload(urlInput.value.trim());
if (result.success && result.image) { if (result.success && result.image) {
uploadedImage = result.image; uploadedImage = result.image;
uiStore.setCurrentStep("crop"); setCurrentStep("crop");
showUrlInput = false; showUrlInput = false;
} else { } else {
errorMessage = result.error || "Ошибка загрузки изображения"; errorMessage = result.error || "Ошибка загрузки изображения";
@@ -140,7 +140,7 @@
uploadedImage = null; uploadedImage = null;
errorMessage = null; errorMessage = null;
showUrlInput = false; showUrlInput = false;
uiStore.setCurrentStep("upload"); setCurrentStep("upload");
} }
</script> </script>
@@ -156,7 +156,15 @@
<div <div
bind:this={dropZone} bind:this={dropZone}
class="drop-zone {isDragOver ? 'drag-over' : ''} {uiError ? 'error' : ''}" class="drop-zone {isDragOver ? 'drag-over' : ''} {uiError ? 'error' : ''}"
role="button"
tabindex="0"
onclick={triggerFileInput} onclick={triggerFileInput}
onkeydown={(e) => {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
triggerFileInput();
}
}}
> >
<div class="drop-zone-content"> <div class="drop-zone-content">
<svg class="upload-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> <svg class="upload-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
@@ -169,7 +177,7 @@
<p>Перетащите файл сюда, нажмите для выбора, или вставьте через Ctrl+V</p> <p>Перетащите файл сюда, нажмите для выбора, или вставьте через Ctrl+V</p>
<div class="upload-methods"> <div class="upload-methods">
<button class="btn btn-primary" onclick={triggerFileInput}> Выбрать файл </button> <button class="btn btn-primary" onclick={(e) => { e.stopPropagation(); triggerFileInput(); }}> Выбрать файл </button>
<button class="btn btn-secondary" onclick={() => (showUrlInput = !showUrlInput)}> <button class="btn btn-secondary" onclick={() => (showUrlInput = !showUrlInput)}>
{showUrlInput ? "Скрыть" : "По URL"} {showUrlInput ? "Скрыть" : "По URL"}
+17 -11
View File
@@ -3,7 +3,7 @@
import { onMount } from "svelte"; import { onMount } from "svelte";
import { browser } from "$app/environment"; import { browser } from "$app/environment";
import { panelStore, createEmptyPanel } from "../stores/panelStore"; 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 { panelStorage } from "../lib/utils/panelStorage";
import { exportService } from "../lib/services/exportService"; import { exportService } from "../lib/services/exportService";
import type { Panel } from "../lib/types/panel"; import type { Panel } from "../lib/types/panel";
@@ -47,6 +47,7 @@
function handleImageUpload(image: string) { function handleImageUpload(image: string) {
uploadedImage = image; uploadedImage = image;
errorMessage = null; errorMessage = null;
uiStore.setCurrentStep("crop");
} }
function handleCropComplete(croppedImage: string) { function handleCropComplete(croppedImage: string) {
@@ -62,12 +63,12 @@
// Сохраняем панель // Сохраняем панель
panelStorage.savePanel(newPanel); panelStorage.savePanel(newPanel);
uiStore.setCurrentStep("text"); setCurrentStep("text");
} }
function handleCropCancel() { function handleCropCancel() {
uploadedImage = null; uploadedImage = null;
uiStore.setCurrentStep("upload"); setCurrentStep("upload");
} }
function handleTextUpdate(texts: Panel["texts"]) { function handleTextUpdate(texts: Panel["texts"]) {
@@ -85,14 +86,14 @@
function handlePanelSelect(panel: Panel) { function handlePanelSelect(panel: Panel) {
panelStore.set(panel); panelStore.set(panel);
currentPanel = panel; currentPanel = panel;
uiStore.setCurrentStep("preview"); setCurrentStep("preview");
} }
function handlePanelDelete(panelId: string) { function handlePanelDelete(panelId: string) {
if (currentPanel?.id === panelId) { if (currentPanel?.id === panelId) {
panelStore.set(null); panelStore.set(null);
currentPanel = null; currentPanel = null;
uiStore.setCurrentStep("upload"); setCurrentStep("upload");
} }
} }
@@ -121,7 +122,7 @@
currentPanel = null; currentPanel = null;
uploadedImage = null; uploadedImage = null;
croppedImage = null; croppedImage = null;
uiStore.setCurrentStep("upload"); setCurrentStep("upload");
} }
</script> </script>
@@ -141,12 +142,14 @@
<div class="main-section"> <div class="main-section">
{#if $uiStore.currentStep === "upload"} {#if $uiStore.currentStep === "upload"}
{#if ImageUpload} {#if ImageUpload}
<svelte:component this={ImageUpload.default} onImageSelect={handleImageUpload} /> {@const Upload = ImageUpload.default}
<svelte:component this={Upload} onImageSelect={handleImageUpload} />
{/if} {/if}
{:else if $uiStore.currentStep === "crop" && uploadedImage} {:else if $uiStore.currentStep === "crop" && uploadedImage}
{#if ImageCropper} {#if ImageCropper}
{@const Cropper = ImageCropper.default}
<svelte:component <svelte:component
this={ImageCropper.default} this={Cropper}
imageSrc={uploadedImage} imageSrc={uploadedImage}
onCropComplete={handleCropComplete} onCropComplete={handleCropComplete}
onCancel={handleCropCancel} onCancel={handleCropCancel}
@@ -154,19 +157,22 @@
{/if} {/if}
{:else if $uiStore.currentStep === "text"} {:else if $uiStore.currentStep === "text"}
{#if TextManager} {#if TextManager}
<svelte:component this={TextManager.default} onTextUpdate={handleTextUpdate} /> {@const Manager = TextManager.default}
<svelte:component this={Manager} onTextUpdate={handleTextUpdate} />
{/if} {/if}
{:else if $uiStore.currentStep === "preview"} {:else if $uiStore.currentStep === "preview"}
{#if PanelPreview} {#if PanelPreview}
<svelte:component this={PanelPreview.default} onDownload={handleDownload} /> {@const Preview = PanelPreview.default}
<svelte:component this={Preview} onDownload={handleDownload} />
{/if} {/if}
{/if} {/if}
</div> </div>
<div class="sidebar"> <div class="sidebar">
{#if PanelList} {#if PanelList}
{@const List = PanelList.default}
<svelte:component <svelte:component
this={PanelList.default} this={List}
onPanelSelect={handlePanelSelect} onPanelSelect={handlePanelSelect}
onPanelDelete={handlePanelDelete} onPanelDelete={handlePanelDelete}
/> />