import { IGenericInput } from "../../../../generic/types";
import { IRWCAnswerComponent } from "../../../types";

export const transformInput = (msg: IRWCAnswerComponent): IGenericInput => {
  const input: IGenericInput = {
    type: 'input',
    props: {
      rwc: {
        suggestions: msg.vBind?.suggestions || [],
        validation: msg.vBind?.validation || {},
        sendInputTypingEvent: msg.vBind?.sendInputTypingEvent || false
      }
    }
  };

  if (input.props.rwc.validation?.rules) {
    const { rules } = input.props.rwc.validation;
    const characterLimitRule = rules.find(rule => rule.name === "characterLimits");

    if (characterLimitRule) {
      [input.props.minLength, input.props.maxLength] = [characterLimitRule.min, characterLimitRule.max];
    }
  }

  if (msg.vBind.predefinedText) {
    input.props.value = msg.vBind.predefinedText;
  }

  if (msg.vBind?.placeholder) {
    input.props.placeholder = msg.vBind.placeholder;
  }

  if (msg.vBind?.type) {
    input.props.rwc.type = msg.vBind.type;
  }

  return input;
};