ERP-node/frontend/lib/registry/components/v2-media/index.ts

79 lines
1.9 KiB
TypeScript

/**
* 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;