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

const toNumber = (str: string): number => {
  const int = parseInt(str);
  const float = parseFloat(str);
  if (isNaN(float)) return undefined; 
  if (int === float) {
    return int;
  }
  return float;
};

export const transformSlider = (msg: IRWCAnswerComponent): IGenericRange => {
  const min: number = toNumber(msg.vBind?.min || 0);
  const max: number = toNumber(msg.vBind?.max || 100);
  const step: number = toNumber(msg.vBind?.step || 1);
  const value: [number, number] = [min, max];
  const result: IGenericRange = {
    type: 'range',
    props: {
      value,
      min,
      max,
      step,
      unit: msg.vBind?.unit,
      unitPosition: msg.vBind?.unitPosition
    }
  };

  result.props.value = [result.props.min, result.props.max];

  return result;
};
