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