diff --git a/src/components/ImageCropper.svelte b/src/components/ImageCropper.svelte index ca9478b..fa7ab1d 100644 --- a/src/components/ImageCropper.svelte +++ b/src/components/ImageCropper.svelte @@ -10,12 +10,8 @@ onMount(async () => { if (browser) { - console.log("Loading cropperjs module"); const cropperModule = await import("cropperjs"); - console.log("cropperjs module loaded:", cropperModule); Cropper = cropperModule.default || cropperModule; - console.log("Cropper class:", Cropper); - console.log("Cropper.getCroppedCanvas:", typeof Cropper?.prototype?.getCroppedCanvas); // Импортируем стили только на клиенте @@ -50,11 +46,9 @@ function initializeCropper() { console.log("initializeCropper called, imageElement:", !!imageElement, "Cropper:", !!Cropper); if (!imageElement || !Cropper) { - console.error("Cannot initialize cropper: imageElement:", !!imageElement, "Cropper:", !!Cropper); return; } - console.log("Creating new Cropper instance"); cropper = new Cropper(imageElement, { aspectRatio: NaN, // Allow any aspect ratio viewMode: 1, @@ -71,15 +65,10 @@ minCropBoxHeight: 50, responsive: true, }); - console.log("Cropper instance created:", cropper); - console.log("cropper.getCroppedCanvas:", typeof cropper?.getCroppedCanvas); - console.log("cropper methods:", Object.getOwnPropertyNames(Object.getPrototypeOf(cropper))); } async function handleCrop() { - console.log("handleCrop called, cropper:", cropper); if (!cropper) { - console.error("Cropper is not initialized"); return; } @@ -103,9 +92,6 @@ imageSmoothingEnabled: true, imageSmoothingQuality: "high", }); - console.log("Canvas result:", canvas); - console.log("Canvas type:", typeof canvas); - console.log("Canvas.toDataURL:", typeof canvas?.toDataURL); if (!canvas) { throw new Error("Не удалось получить canvas"); @@ -113,7 +99,6 @@ // Теперь canvas - это обычный HTMLCanvasElement const croppedImage = canvas.toDataURL("image/png"); - console.log("Cropped image:", croppedImage); // Validate cropped image const cropResult: ImageCropResult = { @@ -124,7 +109,6 @@ onCropComplete(croppedImage); } catch (error) { errorMessage = error instanceof Error ? error.message : "Ошибка обрезки изображения"; - console.error("Crop error:", error); } finally { isProcessing = false; setLoading(false); diff --git a/src/components/ImageUpload.svelte b/src/components/ImageUpload.svelte index 997de21..62c3f0a 100644 --- a/src/components/ImageUpload.svelte +++ b/src/components/ImageUpload.svelte @@ -68,17 +68,13 @@ } async function handleFileUpload(file: File) { - console.log("handleFileUpload called with file:", file.name, "size:", file.size); try { setLoading(true); clearError(); - console.log("Calling imageService.handleFileUpload"); const result: ImageUploadResult = await imageService.handleFileUpload(file); - console.log("Image upload result - success:", result.success, "has image:", !!result.image); if (result.success && result.image) { uploadedImage = result.image; - console.log("Calling onImageSelect with image length:", result.image.length); onImageSelect(result.image); setCurrentStep("crop"); } else { @@ -102,7 +98,7 @@ if (result.success && result.image) { uploadedImage = result.image; - console.log("Calling onImageSelect with image length:", result.image.length); + onImageSelect(result.image); setCurrentStep("crop"); } else { @@ -128,7 +124,7 @@ if (result.success && result.image) { uploadedImage = result.image; - console.log("Calling onImageSelect with image length:", result.image.length); + onImageSelect(result.image); setCurrentStep("crop"); showUrlInput = false; diff --git a/src/components/PanelPreview.svelte b/src/components/PanelPreview.svelte index 0d49860..58718bd 100644 --- a/src/components/PanelPreview.svelte +++ b/src/components/PanelPreview.svelte @@ -48,6 +48,23 @@ onDownload(); } } + + function getTextPosition(textItem: any) { + const panelWidth = 320; + const paddingX = textItem.paddingX || 0; + const verticalOffset = textItem.verticalOffset || 0; + const centerY = currentPanel!.height / 2 + verticalOffset; + + switch (textItem.textAlign) { + case "left": + return { x: paddingX, y: centerY }; + case "right": + return { x: panelWidth - paddingX, y: centerY }; + case "center": + default: + return { x: panelWidth / 2, y: centerY }; + } + }