).plainText === "string"
) {
return (editorContent as { plainText: string }).plainText;
}
return null;
}
/**
* `extractPlainText` with the deterministic placeholder as fallback —
* this is the actual text fed to the merge engine at generation time
* (documents.service.ts), never `null`/empty on that path.
*/
export function resolveSourceText(editorContent: unknown): string {
const plainText = extractPlainText(editorContent);
return plainText && plainText.length > 0 ? plainText : EDITOR_CONTENT_PLACEHOLDER_TEXT;
}
/** Recomputes `document_template_versions.html_content` (eden.md §1.2 step 2). */
export function renderEditorContentToHtml(editorContent: unknown): string {
return `${escapeHtml(resolveSourceText(editorContent))}
`;
}