export function getFormDataOptions(config: any, formData: any): any[] {
  if (config?.dataType !== 'formData' || !config.formDataSource) return [];

  const sourceData = formData?.[config.formDataSource];
  return Array.isArray(sourceData) ? sourceData.map((item) => ({ ...item })) : [];
}

export function getFormDataOptionLabel(config: any, formData: any, value: any): any {
  const sourceConfig = config?.__config__ || config;
  const fieldProps = config?.props || sourceConfig?.props;
  if (sourceConfig?.dataType !== 'formData' || !fieldProps?.value || !fieldProps?.label) return value;

  const options = getFormDataOptions(sourceConfig, formData);
  const getLabel = (itemValue) => {
    const option = options.find((item) => item?.[fieldProps.value] === itemValue || String(item?.[fieldProps.value]) === String(itemValue));
    return option && Object.prototype.hasOwnProperty.call(option, fieldProps.label) ? option[fieldProps.label] : itemValue;
  };

  return Array.isArray(value) ? value.map(getLabel) : getLabel(value);
}
