Skip to content

Commit

Permalink
fix: whitespace being stripped from generateJSON (#5158)
Browse files Browse the repository at this point in the history
  • Loading branch information
asiraky authored May 24, 2024
1 parent 9554553 commit ae14557
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions packages/html/src/generateJSON.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
import { Extensions, getSchema } from '@tiptap/core'
import { DOMParser } from '@tiptap/pm/model'
import { DOMParser, ParseOptions } from '@tiptap/pm/model'
import { parseHTML } from 'zeed-dom'

/**
* Generates a JSON object from the given HTML string and converts it into a Prosemirror node with content.
* @param {string} html - The HTML string to be converted into a Prosemirror node.
* @param {Extensions} extensions - The extensions to be used for generating the schema.
* @param {ParseOptions} options - The options to be supplied to the parser.
* @returns {Record<string, any>} - The generated JSON object.
* @example
* const html = '<p>Hello, world!</p>'
* const extensions = [...]
* const json = generateJSON(html, extensions)
* console.log(json) // { type: 'doc', content: [{ type: 'paragraph', content: [{ type: 'text', text: 'Hello, world!' }] }] }
*/
export function generateJSON(html: string, extensions: Extensions): Record<string, any> {
export function generateJSON(html: string, extensions: Extensions, options?: ParseOptions): Record<string, any> {
const schema = getSchema(extensions)
const dom = parseHTML(html) as unknown as Node

return DOMParser.fromSchema(schema).parse(dom).toJSON()
return DOMParser.fromSchema(schema).parse(dom, options).toJSON()
}

0 comments on commit ae14557

Please sign in to comment.