fix: resolve deprecated warnings
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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
@@ -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}
|
||||||
/>
|
/>
|
||||||
|
|||||||
Reference in New Issue
Block a user