"use client";

import React from "react";
import { AutoRegisteringComponentRenderer } from "../../AutoRegisteringComponentRenderer";
import { V2TableGroupedDefinition } from "./index";
import { TableGroupedComponent } from "./TableGroupedComponent";

/**
 * TableGrouped 렌더러
 * 자동 등록 시스템을 사용하여 컴포넌트를 레지스트리에 등록
 */
export class TableGroupedRenderer extends AutoRegisteringComponentRenderer {
  static componentDefinition = V2TableGroupedDefinition;

  render(): React.ReactElement {
    return (
      <TableGroupedComponent
        {...this.props}
        config={this.props.component?.componentConfig || {}}
        isDesignMode={this.props.isDesignMode}
        formData={this.props.formData}
        componentId={this.props.component?.id}
      />
    );
  }

  // 설정 변경 핸들러
  protected handleConfigChange = (config: any) => {
    console.log("📥 TableGroupedRenderer에서 설정 변경 받음:", config);

    // 상위 컴포넌트의 onConfigChange 호출 (화면 설계자에게 알림)
    if (this.props.onConfigChange) {
      this.props.onConfigChange(config);
    }

    this.updateComponent({ config });
  };

  // 값 변경 처리
  protected handleValueChange = (value: any) => {
    this.updateComponent({ value });
  };
}

// 자동 등록 실행
TableGroupedRenderer.registerSelf();

// 강제 등록 (디버깅용)
if (typeof window !== "undefined") {
  setTimeout(() => {
    try {
      TableGroupedRenderer.registerSelf();
    } catch (error) {
      console.error("❌ TableGrouped 강제 등록 실패:", error);
    }
  }, 1000);
}
