From 314d80ccf083d5e748e121d5e5be2c93236e845a Mon Sep 17 00:00:00 2001 From: DDD1542 Date: Thu, 29 Jan 2026 14:46:55 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20V2Media=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=ED=86=B5=ED=95=A9?= =?UTF-8?q?=20=EB=AF=B8=EB=94=94=EC=96=B4=20=EA=B8=B0=EB=8A=A5=20=EC=A0=95?= =?UTF-8?q?=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 새로운 V2Media 컴포넌트를 추가하여 파일, 이미지, 비디오, 오디오 등 다양한 미디어 타입을 지원합니다. - V2Media의 설정 스키마와 기본 속성을 정의하고, 관련 설정 패널을 통합하였습니다. - 기존 컴포넌트 목록에 V2Media를 포함시켜 통합 미디어 기능을 강화하였습니다. - componentConfig 스키마에서 v2-repeater를 제거하여 불필요한 항목을 정리하였습니다. --- frontend/lib/registry/components/index.ts | 1 + .../lib/registry/components/v2-media/index.ts | 78 +++++++++++++++++++ frontend/lib/schemas/componentConfig.ts | 1 - 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 frontend/lib/registry/components/v2-media/index.ts diff --git a/frontend/lib/registry/components/index.ts b/frontend/lib/registry/components/index.ts index 3afee0f4..2555d5fd 100644 --- a/frontend/lib/registry/components/index.ts +++ b/frontend/lib/registry/components/index.ts @@ -106,6 +106,7 @@ import "./v2-location-swap-selector/LocationSwapSelectorRenderer"; import "./v2-table-search-widget"; import "./v2-tabs-widget/tabs-component"; import "./v2-category-manager/V2CategoryManagerRenderer"; +import "./v2-media"; // 통합 미디어 컴포넌트 /** * 컴포넌트 초기화 함수 diff --git a/frontend/lib/registry/components/v2-media/index.ts b/frontend/lib/registry/components/v2-media/index.ts new file mode 100644 index 00000000..649aa118 --- /dev/null +++ b/frontend/lib/registry/components/v2-media/index.ts @@ -0,0 +1,78 @@ +/** + * V2Media 컴포넌트 정의 + * + * 파일, 이미지, 비디오, 오디오 등 다양한 미디어 타입을 지원하는 통합 미디어 컴포넌트 + */ + +import { ComponentCategory } from "@/types/component"; +import { createComponentDefinition } from "../../utils/createComponentDefinition"; +import { V2MediaConfigPanel } from "@/components/v2/config-panels/V2MediaConfigPanel"; +import { V2Media } from "@/components/v2/V2Media"; + +export const V2MediaDefinition = createComponentDefinition({ + id: "v2-media", + name: "V2 미디어", + description: "파일, 이미지, 비디오, 오디오 등 다양한 미디어 타입 지원", + category: ComponentCategory.INPUT, + webType: "file", + version: "2.0.0", + component: V2Media, + + // 기본 속성 + defaultProps: { + config: { + mediaType: "file", + multiple: false, + preview: true, + maxSize: 10, // MB + accept: "*/*", + showFileList: true, + dragDrop: true, + }, + }, + + // 설정 스키마 + configSchema: { + mediaType: { + type: "select", + label: "미디어 타입", + options: [ + { value: "file", label: "파일" }, + { value: "image", label: "이미지" }, + { value: "video", label: "비디오" }, + { value: "audio", label: "오디오" }, + ], + }, + multiple: { + type: "boolean", + label: "다중 업로드", + }, + preview: { + type: "boolean", + label: "미리보기", + }, + maxSize: { + type: "number", + label: "최대 크기 (MB)", + }, + accept: { + type: "text", + label: "허용 파일 형식", + placeholder: "*/* 또는 image/*", + }, + }, + + // 이벤트 + events: ["onChange", "onUpload", "onDelete"], + + // 아이콘 + icon: "Upload", + + // 태그 + tags: ["media", "file", "image", "upload", "v2"], + + // 설정 패널 + configPanel: V2MediaConfigPanel, +}); + +export default V2MediaDefinition; diff --git a/frontend/lib/schemas/componentConfig.ts b/frontend/lib/schemas/componentConfig.ts index 1486ba55..8353ac05 100644 --- a/frontend/lib/schemas/componentConfig.ts +++ b/frontend/lib/schemas/componentConfig.ts @@ -643,7 +643,6 @@ const componentOverridesSchemaRegistry: Record