/**
 * WebTypeConfig와 AutoGeneration 간 변환 유틸리티
 */

import { ComponentData } from "@/types/screen";

/**
 * webTypeConfig의 자동입력 설정을 autoGeneration으로 변환
 */
export function convertWebTypeConfigToAutoGeneration(component: ComponentData): ComponentData {
  // webTypeConfig가 없으면 변환 불필요
  if (!component.webTypeConfig) {
    return component;
  }

  const config = component.webTypeConfig as any;

  // 자동입력이 활성화되어 있는지 확인
  if (!config.autoInput || !config.autoValueType) {
    return component;
  }

  // 이미 autoGeneration이 올바르게 설정되어 있으면 변환 불필요
  if (
    component.autoGeneration &&
    component.autoGeneration.type === config.autoValueType &&
    component.autoGeneration.options?.numberingRuleId === config.numberingRuleId
  ) {
    return component;
  }

  // autoGeneration 객체 생성
  const autoGeneration: any = {
    type: config.autoValueType,
    enabled: true,
  };

  // 채번 규칙인 경우 options.numberingRuleId 설정
  if (config.autoValueType === "numbering_rule" && config.numberingRuleId) {
    autoGeneration.options = {
      numberingRuleId: config.numberingRuleId,
    };
  }


  return {
    ...component,
    autoGeneration,
  };
}

/**
 * 레이아웃의 모든 컴포넌트에 대해 webTypeConfig → autoGeneration 변환 적용
 */
export function convertLayoutComponents(components: ComponentData[]): ComponentData[] {
  return components.map(convertWebTypeConfigToAutoGeneration);
}

