import { IGenericText, IGenericHeader } from "../../../../generic/types";
import { IRWCAnswerComponent } from '../../../types';
import { RWCAnswerComponent } from "../../../classes/v5";
import { getMethods } from "../methods";
import { toHtml } from '../../../../../helpers/md-to-html';
import { escapeHtmlString } from "../../../../../helpers/string-sanitizer";

export const transformText = ( { props }: IGenericText): IRWCAnswerComponent => {
    const type = "rwc-text";
    const { value, type: textSubtype } = props;

    const text = textSubtype === "markdown" ? toHtml(value, true) : value;

    return new RWCAnswerComponent({text: escapeHtmlString(text) }, type);
};

export const transformHeader = ( {props, children}: IGenericHeader, isPlain: boolean): string => {
    const words = children.map(item => {
        const child = getMethods(item.type)(item);
        return (child?.message || child?.vBind.text || "");
      });
    
      if (isPlain) {
        return words.join(" ");
      }
    
      const level = props?.level || 3;
      const tag = `h${level}`;
      const message = words.join(" ");

      return `<${tag}>${message}</${tag}>`;
};


