// 설정 패널 컴포넌트 동적 매핑 import React from "react"; import { DateTypeConfigPanel } from "@/components/screen/panels/webtype-configs/DateTypeConfigPanel"; import { NumberTypeConfigPanel } from "@/components/screen/panels/webtype-configs/NumberTypeConfigPanel"; import { SelectTypeConfigPanel } from "@/components/screen/panels/webtype-configs/SelectTypeConfigPanel"; import { TextTypeConfigPanel } from "@/components/screen/panels/webtype-configs/TextTypeConfigPanel"; import { TextareaTypeConfigPanel } from "@/components/screen/panels/webtype-configs/TextareaTypeConfigPanel"; import { CheckboxTypeConfigPanel } from "@/components/screen/panels/webtype-configs/CheckboxTypeConfigPanel"; import { RadioTypeConfigPanel } from "@/components/screen/panels/webtype-configs/RadioTypeConfigPanel"; import { FileTypeConfigPanel } from "@/components/screen/panels/webtype-configs/FileTypeConfigPanel"; import { CodeTypeConfigPanel } from "@/components/screen/panels/webtype-configs/CodeTypeConfigPanel"; import { EntityTypeConfigPanel } from "@/components/screen/panels/webtype-configs/EntityTypeConfigPanel"; import { RatingTypeConfigPanel } from "@/components/screen/panels/webtype-configs/RatingTypeConfigPanel"; // 설정 패널 컴포넌트 타입 export type ConfigPanelComponent = React.ComponentType<{ config: any; onConfigChange: (config: any) => void; }>; // 설정 패널 이름으로 직접 매핑하는 함수 (DB의 config_panel 필드용) export const getConfigPanelComponent = (panelName: string): ConfigPanelComponent | null => { console.log(`🔧 getConfigPanelComponent 호출: panelName="${panelName}"`); // "none"이나 빈 값은 null 반환 (기본 설정) if (!panelName || panelName === "none") { console.log(`🔧 빈 값 또는 "none" → null 반환`); return null; } switch (panelName) { case "DateTypeConfigPanel": return DateTypeConfigPanel; case "NumberTypeConfigPanel": return NumberTypeConfigPanel; case "SelectTypeConfigPanel": return SelectTypeConfigPanel; case "TextTypeConfigPanel": return TextTypeConfigPanel; case "TextareaTypeConfigPanel": return TextareaTypeConfigPanel; case "CheckboxTypeConfigPanel": return CheckboxTypeConfigPanel; case "RadioTypeConfigPanel": return RadioTypeConfigPanel; case "FileTypeConfigPanel": return FileTypeConfigPanel; case "CodeTypeConfigPanel": return CodeTypeConfigPanel; case "EntityTypeConfigPanel": return EntityTypeConfigPanel; case "RatingTypeConfigPanel": console.log(`🔧 RatingTypeConfigPanel 컴포넌트 반환`); console.log(`🔧 RatingTypeConfigPanel 타입:`, typeof RatingTypeConfigPanel); console.log(`🔧 RatingTypeConfigPanel 내용:`, RatingTypeConfigPanel); return RatingTypeConfigPanel; default: console.warn(`🔧 알 수 없는 설정 패널: ${panelName}, 기본 설정 사용`); return null; // 기본 설정 (패널 없음) } };