import { PLACEHOLDER_FIELD_TYPES, OPTIONS_FIELD_TYPES } from './fieldTypes.js';

/**
 * Получает placeholder для поля (только для поддерживаемых типов)
 * @param {Object} field - Объект поля
 * @returns {string|undefined} - Placeholder или undefined
 */
export function getPlaceholder(field) {
  const type = field.$formkit;
  if (!PLACEHOLDER_FIELD_TYPES.includes(type)) {
    return undefined;
  }
  if (field.placeholder && field.placeholder.trim()) {
    return field.placeholder.trim();
  }
  return undefined;
}

/**
 * Получает props для поля FormKit для отображения в редакторе
 * @param {Object} field - Объект поля
 * @returns {Object} - Объект с props для FormKit
 */
export function getFieldProps(field) {
  // Создаем копию, исключая служебные поля, которые мы передаем отдельно или не хотим передавать
  const { $formkit: _$formkit, id: _id, ...rest } = field;
  
  const props = { ...rest };
  
  // Опции для select и radio
  // FormKit принимает массив объектов { label, value }, так что преобразование может не понадобиться
  // если формат совпадает. В availableFields мы используем { label, value }.
  
  return props;
}

/**
 * Проверяет, поддерживает ли тип поля placeholder
 * @param {string} fieldType - Тип поля ($formkit)
 * @returns {boolean}
 */
export function supportsPlaceholder(fieldType) {
  return PLACEHOLDER_FIELD_TYPES.includes(fieldType);
}

/**
 * Проверяет, поддерживает ли тип поля опции
 * @param {string} fieldType - Тип поля ($formkit)
 * @returns {boolean}
 */
export function supportsOptions(fieldType) {
  return OPTIONS_FIELD_TYPES.includes(fieldType);
}
