From 0cf67b5619b218b31b05fb2be77af87d443930b5 Mon Sep 17 00:00:00 2001 From: Jaybe Date: Sun, 30 Nov 2025 16:52:27 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8/=EC=97=90=EB=94=94?= =?UTF-8?q?=ED=84=B0=20=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=A0=95=EB=A6=AC=20?= =?UTF-8?q?=EB=B0=8F=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/editor/EditorCanvas.tsx | 2 +- src/app/editor/page.tsx | 75 +- src/app/editor/panels/BlocksSidebar.tsx | 822 ++++++++++-------- src/app/editor/panels/PropertiesSidebar.tsx | 677 ++++++++++++++- .../editor/components/PublicPageRenderer.tsx | 7 +- src/features/editor/utils/formHelpers.ts | 62 ++ tests/e2e/editor.spec.ts | 146 ++-- tests/e2e/preview.spec.ts | 134 +-- tests/unit/BlocksSidebar.spec.tsx | 84 +- tests/unit/EditorMultiSelect.spec.tsx | 2 + tests/unit/PropertiesSidebar.spec.tsx | 72 ++ tests/unit/formHelpers.spec.ts | 20 + uploads/14482b30-dc84-4988-b556-94241a3ef69a | 1 + uploads/1f20f0b1-10ec-4c05-9898-4c77f7346425 | 1 + uploads/241208cf-6c33-4d47-a4c8-35841973fb56 | 1 + uploads/2b9a1ba5-dbd3-4b22-9e81-f355ef895b07 | 1 + uploads/2d88172b-2131-4489-a811-80f30c8039b9 | 1 + uploads/4d64b423-9973-4563-b188-5ad32272dcb7 | 1 + uploads/55468f44-833e-4d43-a4eb-494d29336fac | 1 + uploads/61fb4d93-5530-4818-b35a-e99db69d7a7d | 1 + uploads/6d789572-7bfb-4f24-9b01-b93d2c57d7c5 | 1 + uploads/76a63fb6-825f-4fc3-911d-da4e8353bf3b | 1 + uploads/7a095aae-fa08-42fd-ae51-988ede728092 | 1 + uploads/8e21ad86-5ef2-423f-8ae6-d0031998c5d9 | 1 + uploads/952af407-f055-49e6-91c1-d33edeaaa450 | 1 + uploads/9fbc93d1-265b-4880-af4d-173266fff60d | 1 + uploads/b7241909-c46b-4e10-80d3-7c62b1da6337 | 1 + uploads/ba9e9e57-a6eb-4a46-971d-4af90bed7af3 | 1 + uploads/ce140e61-91e2-4692-862a-db3fe08142c8 | 1 + uploads/cf115c8c-b9b5-48f5-b761-6233f4708aaf | 1 + uploads/da7932f0-1edb-41de-a19e-e2fb4baa4e3d | 1 + uploads/e0c5d9c3-7f97-44d8-a399-099f8b218508 | 1 + uploads/f3744bab-bd88-4808-a7db-9b01c3a657ed | 1 + uploads/f92749ca-6625-46eb-a548-3d95564f45ec | 1 + uploads/fc39cb75-0b95-4590-ae68-d6d3f6ee5bcb | 1 + uploads/test-image-1764422436478 | 1 + uploads/test-image-1764468347117 | 1 + uploads/test-section-bg-1764422436497 | 1 + uploads/test-section-bg-1764468347137 | 1 + uploads/test-section-bg-video-1764422436524 | 1 + uploads/test-section-bg-video-1764468347182 | 1 + uploads/test-video-1764422436520 | 1 + uploads/test-video-1764468347176 | 1 + uploads/test-video-poster-1764422436487 | 1 + uploads/test-video-poster-1764468347129 | 1 + 45 files changed, 1606 insertions(+), 530 deletions(-) create mode 100644 tests/unit/PropertiesSidebar.spec.tsx create mode 100644 uploads/14482b30-dc84-4988-b556-94241a3ef69a create mode 100644 uploads/1f20f0b1-10ec-4c05-9898-4c77f7346425 create mode 100644 uploads/241208cf-6c33-4d47-a4c8-35841973fb56 create mode 100644 uploads/2b9a1ba5-dbd3-4b22-9e81-f355ef895b07 create mode 100644 uploads/2d88172b-2131-4489-a811-80f30c8039b9 create mode 100644 uploads/4d64b423-9973-4563-b188-5ad32272dcb7 create mode 100644 uploads/55468f44-833e-4d43-a4eb-494d29336fac create mode 100644 uploads/61fb4d93-5530-4818-b35a-e99db69d7a7d create mode 100644 uploads/6d789572-7bfb-4f24-9b01-b93d2c57d7c5 create mode 100644 uploads/76a63fb6-825f-4fc3-911d-da4e8353bf3b create mode 100644 uploads/7a095aae-fa08-42fd-ae51-988ede728092 create mode 100644 uploads/8e21ad86-5ef2-423f-8ae6-d0031998c5d9 create mode 100644 uploads/952af407-f055-49e6-91c1-d33edeaaa450 create mode 100644 uploads/9fbc93d1-265b-4880-af4d-173266fff60d create mode 100644 uploads/b7241909-c46b-4e10-80d3-7c62b1da6337 create mode 100644 uploads/ba9e9e57-a6eb-4a46-971d-4af90bed7af3 create mode 100644 uploads/ce140e61-91e2-4692-862a-db3fe08142c8 create mode 100644 uploads/cf115c8c-b9b5-48f5-b761-6233f4708aaf create mode 100644 uploads/da7932f0-1edb-41de-a19e-e2fb4baa4e3d create mode 100644 uploads/e0c5d9c3-7f97-44d8-a399-099f8b218508 create mode 100644 uploads/f3744bab-bd88-4808-a7db-9b01c3a657ed create mode 100644 uploads/f92749ca-6625-46eb-a548-3d95564f45ec create mode 100644 uploads/fc39cb75-0b95-4590-ae68-d6d3f6ee5bcb create mode 100644 uploads/test-image-1764422436478 create mode 100644 uploads/test-image-1764468347117 create mode 100644 uploads/test-section-bg-1764422436497 create mode 100644 uploads/test-section-bg-1764468347137 create mode 100644 uploads/test-section-bg-video-1764422436524 create mode 100644 uploads/test-section-bg-video-1764468347182 create mode 100644 uploads/test-video-1764422436520 create mode 100644 uploads/test-video-1764468347176 create mode 100644 uploads/test-video-poster-1764422436487 create mode 100644 uploads/test-video-poster-1764468347129 diff --git a/src/app/editor/EditorCanvas.tsx b/src/app/editor/EditorCanvas.tsx index db10ac0..4501223 100644 --- a/src/app/editor/EditorCanvas.tsx +++ b/src/app/editor/EditorCanvas.tsx @@ -86,7 +86,7 @@ export function EditorCanvas(props: EditorCanvasProps) { > {blocks.length === 0 ? (
- 왼쪽에서 "텍스트 블록 추가" 버튼을 눌러 블록을 추가해 보세요. + 왼쪽에서 "텍스트" 버튼을 눌러 블록을 추가해 보세요.
) : ( ([]); + const historyLength = useEditorStore((state) => (state as any).history?.length ?? 0); + const futureLength = useEditorStore((state) => (state as any).future?.length ?? 0); + const canUndo = historyLength > 0; + const canRedo = futureLength > 0; + const [menuOpen, setMenuOpen] = useState(false); const [activeModal, setActiveModal] = useState<"project" | "json" | null>(null); @@ -738,31 +744,57 @@ export default function EditorPage() { return (
-
-
-

Page Editor

-

빌더 MVP용 에디터 페이지 골격

+
+
+ + +
+

Page Editor

+

빌더 MVP용 에디터 페이지 골격

+
- 프로젝트 목록 +