import { IGenericFields } from '../../../../generic/types';
import { IRWCMessage } from '../../../types';
import { getMethods } from '../methods';
import { RWCv5Message } from '../../../classes/v5';

const isString = target => typeof target === 'string';

export const transformFields = ({ props, children }: IGenericFields): IRWCMessage => {
  const colNum = props.column || 2;
  let message = '<table><tbody>';
  for (let i = 0; i < children.length; i = i + colNum) {
    let row = `<tr>`;
    for (let j = 0; j < colNum; j++) {
      const item = children[i+j];
      if (item) {
        const field = getMethods(item.type)(item);
        const text = isString(field) ? 
        field : 
        field?.message || field?.vBind?.text || '';
        row += `<td>${text}</td>`;
      } else {
        row += `<td></td>`;
      }
    }
    row += `</tr>`;
    message += row;
  }

  message += '</tbody></table>';

  return new RWCv5Message(message);
};