"use client";

import { LayoutRegistry } from "../LayoutRegistry";
import { discoverLayouts } from "../utils/autoDiscovery";

// 기존 레이아웃들 (호환성을 위해 유지)
import { TabsLayout } from "./TabsLayoutRenderer";

// 새 구조 레이아웃들 (자동 등록)
import "./grid/GridLayoutRenderer";
import "./flexbox/FlexboxLayoutRenderer";
import "./accordion/AccordionLayoutRenderer"; // 컴포넌트 패널에서만 숨김
import "./split/SplitLayoutRenderer";
import "./card-layout/CardLayoutRenderer";
import "./hero-section/HeroSectionLayoutRenderer";

// 레이아웃 초기화 함수 (새 구조 + 기존 구조 하이브리드)
export async function initializeLayouts() {
  console.log("🚀 레이아웃 시스템 초기화 시작...");

  try {
    // 1. 자동 디스커버리 실행 (새 구조)
    const discoveryResult = await discoverLayouts({
      pattern: "./**/*LayoutRenderer.tsx",
      verbose: true,
      continueOnError: true,
    });

    console.log(`✅ 자동 디스커버리 완료: ${discoveryResult.successfullyLoaded}개 레이아웃 로드`);

    // 2. 기존 구조 레이아웃들 수동 등록 (마이그레이션 완료 시까지)
    await initializeLegacyLayouts();

    const totalLayouts = LayoutRegistry.getAllLayouts().length;
    console.log(`🎉 레이아웃 시스템 초기화 완료: 총 ${totalLayouts}개 레이아웃 등록`);

    return {
      success: true,
      autoDiscovered: discoveryResult.successfullyLoaded,
      legacy: totalLayouts - discoveryResult.successfullyLoaded,
      total: totalLayouts,
    };
  } catch (error) {
    console.error("❌ 레이아웃 시스템 초기화 실패:", error);
    throw error;
  }
}

// 기존 구조 레이아웃들 등록 (임시)
async function initializeLegacyLayouts() {
  console.log("🔄 기존 구조 레이아웃 로드 중...");

  // 플렉스박스 레이아웃 (새 구조로 마이그레이션됨 - 스킵)

  // 분할 레이아웃 (새 구조로 마이그레이션됨 - 스킵)

  // 탭 레이아웃 (기존 구조 - 임시)
  LayoutRegistry.registerLayout({
    id: "tabs",
    name: "탭 레이아웃",
    nameEng: "Tabs Layout",
    description: "탭으로 구성된 다중 패널 레이아웃입니다.",
    category: "navigation",
    icon: "tabs",
    component: TabsLayout,
    defaultConfig: {
      tabs: {
        position: "top",
        variant: "default",
        size: "md",
        closable: false,
        defaultTab: "tab1",
      },
    },
    defaultZones: [
      {
        id: "tab1",
        name: "탭 1",
        position: {},
        size: { width: "100%", height: "100%" },
      },
      {
        id: "tab2",
        name: "탭 2",
        position: {},
        size: { width: "100%", height: "100%" },
      },
      {
        id: "tab3",
        name: "탭 3",
        position: {},
        size: { width: "100%", height: "100%" },
      },
    ],
    tags: ["tabs", "navigation", "multi-panel"],
    isActive: true,
  });

  console.log("✅ 기존 구조 레이아웃 로드 완료");
}

// 레지스트리에서 레이아웃 조회하는 헬퍼 함수들
export const getLayoutComponent = (layoutType: string) => LayoutRegistry.getLayout(layoutType)?.component;

export const getAllLayoutDefinitions = () => LayoutRegistry.getAllLayouts();

// 앱 시작 시 자동 실행
console.log("📦 레이아웃 모듈 로드됨");
