import { Slate } from "@makeswift/controls";
import { RichText } from "../../controls/rich-text-v2";
function isBlock(descendant) {
  if (Slate.isText(descendant))
    return false;
  return Slate.isBlock(descendant);
}
function getTextByDescendant(descendant, mode) {
  if (Slate.isText(descendant)) {
    return descendant.text ?? "";
  }
  if (Slate.isDefaultElement(descendant)) {
    return mode === RichText.Mode.Inline ? descendant.children.map((descendant2) => getTextByDescendant(descendant2, mode)).join("") ?? "" : descendant.children.map((descendant2) => getTextByDescendant(descendant2, mode)).join(descendant.children.every(isBlock) ? "\n" : "") ?? "";
  }
  if (Slate.isBlock(descendant)) {
    return descendant.children.map((descendant2) => getTextByDescendant(descendant2, mode)).join(descendant.children.every(isBlock) ? "\n" : "") ?? "";
  }
  if (Slate.isInline(descendant)) {
    return descendant.children.map((descendant2) => getTextByDescendant(descendant2, mode)).join("") ?? "";
  }
  return "";
}
function toText(descendants, mode) {
  return descendants.map((node) => getTextByDescendant(node, mode)).join("\n");
}
export {
  toText
};
//# sourceMappingURL=toText.js.map