mirror of
https://github.com/docmost/docmost.git
synced 2026-05-07 14:43:06 +08:00
30 lines
1.0 KiB
TypeScript
30 lines
1.0 KiB
TypeScript
import { type Extensions, type JSONContent, getSchema } from '@tiptap/core';
|
|
import { Node } from '@tiptap/pm/model';
|
|
import { getHTMLFromFragment } from './getHTMLFromFragment';
|
|
|
|
/**
|
|
* This function generates HTML from a ProseMirror JSON content object.
|
|
*
|
|
* @remarks **Important**: This function requires `happy-dom` to be installed in your project.
|
|
* @param doc - The ProseMirror JSON content object.
|
|
* @param extensions - The Tiptap extensions used to build the schema.
|
|
* @returns The generated HTML string.
|
|
* @example
|
|
* ```js
|
|
* const html = generateHTML(doc, extensions)
|
|
* console.log(html)
|
|
* ```
|
|
*/
|
|
export function generateHTML(doc: JSONContent, extensions: Extensions): string {
|
|
if (typeof window !== 'undefined') {
|
|
throw new Error(
|
|
'generateHTML can only be used in a Node environment\nIf you want to use this in a browser environment, use the `@tiptap/html` import instead.',
|
|
);
|
|
}
|
|
|
|
const schema = getSchema(extensions);
|
|
const contentNode = Node.fromJSON(schema, doc);
|
|
|
|
return getHTMLFromFragment(contentNode, schema);
|
|
}
|