import { DOMSerializer , Schema , DOMParser , Node as ProseMirrorNode } from 'prosemirror-model' ; import defaultSchema from './schema' ; export const emptyDoc = { type : 'doc' , content : [ { type : 'paragraph' , } ] , } ; export const toHTML = ( json , inputSchema ? ) : string => { const schema = inputSchema ?? defaultSchema ; const contentNode = schema . nodeFromJSON ( json ) ; const html = DOMSerializer . fromSchema ( schema ) . serializeFragment ( contentNode . content ) ; const div = document . createElement ( 'div' ) ; div . appendChild ( html ) ; return div . innerHTML ; } ; export const toDoc = ( html , inputSchema ? ) : Record < string , any > => { const schema = inputSchema ?? defaultSchema ; const el = document . createElement ( 'div' ) ; el . innerHTML = html ; return DOMParser . fromSchema ( schema ) . parse ( el ) . toJSON ( ) ; } ; export const parseContent = ( value , schema ) : ProseMirrorNode => { if ( ! value ) { return schema . nodeFromJSON ( emptyDoc ) ; } if ( typeof value !== 'string' ) { return schema . nodeFromJSON ( value ) ; } const docJson = toDoc ( value , schema ) ; return schema . nodeFromJSON ( docJson ) ; } ;