"use client"; import { useRef, useEffect, useState } from "react"; import { useDrop } from "react-dnd"; import { useReportDesigner } from "@/contexts/ReportDesignerContext"; import { ComponentConfig, WatermarkConfig } from "@/types/report"; import { CanvasComponent } from "./CanvasComponent"; import { Ruler } from "./Ruler"; import { v4 as uuidv4 } from "uuid"; import { getFullImageUrl } from "@/lib/api/client"; // mm를 px로 변환하는 고정 스케일 팩터 (화면 해상도와 무관하게 일정) // A4 기준: 210mm x 297mm → 840px x 1188px export const MM_TO_PX = 4; // 워터마크 레이어 컴포넌트 interface WatermarkLayerProps { watermark: WatermarkConfig; canvasWidth: number; canvasHeight: number; } function WatermarkLayer({ watermark, canvasWidth, canvasHeight }: WatermarkLayerProps) { // 공통 스타일 const baseStyle: React.CSSProperties = { position: "absolute", top: 0, left: 0, width: "100%", height: "100%", pointerEvents: "none", overflow: "hidden", zIndex: 1, // 컴포넌트보다 낮은 z-index }; // 대각선 스타일 if (watermark.style === "diagonal") { const rotation = watermark.rotation ?? -45; return (
좌측에서 페이지를 추가하세요.
왼쪽에서 컴포넌트를 드래그하여 추가하세요