"use client";

import React from "react";
import { AutoRegisteringComponentRenderer } from "../../AutoRegisteringComponentRenderer";
import { ModalRepeaterTableDefinition } from "./index";
import { ModalRepeaterTableComponent } from "./ModalRepeaterTableComponent";

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

  render(): React.ReactElement {
    // onChange 콜백을 명시적으로 전달
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    const handleChange = (newValue: any[]) => {
      console.log("🔄 ModalRepeaterTableRenderer onChange:", newValue.length, "개 항목");

      // 컴포넌트 업데이트
      this.updateComponent({ value: newValue });

      // 원본 onChange 콜백도 호출 (있다면)
      if (this.props.onChange) {
        this.props.onChange(newValue);
      }
    };

    // renderer prop 제거 (불필요)
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
    const { onChange, ...restProps } = this.props;

    return <ModalRepeaterTableComponent {...restProps} onChange={handleChange} />;
  }

  /**
   * 값 변경 처리 (레거시 메서드 - 호환성 유지)
   */
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  protected handleValueChange = (value: any) => {
    this.updateComponent({ value });
  };
}

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

// Hot Reload 지원 (개발 모드)
if (process.env.NODE_ENV === "development") {
  ModalRepeaterTableRenderer.enableHotReload();
}
