Something went wrong. Try again.
a tool for shared writing and social publishing
Something went wrong. Try again.
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142import { XmlElement, XmlText, XmlHook } from "yjs";
export type Delta = { insert: string; attributes?: { strong?: {}; code?: {}; em?: {}; underline?: {}; strikethrough?: {}; highlight?: { color: string }; link?: { href: string }; };};
export function YJSFragmentToString( node: XmlElement | XmlText | XmlHook,): string { if (node.constructor === XmlElement) { // Handle hard_break nodes specially if (node.nodeName === "hard_break") { return "\n"; } // Handle inline mention nodes if (node.nodeName === "didMention" || node.nodeName === "atMention") { return node.getAttribute("text") || ""; } return node .toArray() .map((f) => YJSFragmentToString(f)) .join(""); } if (node.constructor === XmlText) { return (node.toDelta() as Delta[]) .map((d) => { return d.insert; }) .join(""); } return "";}