UNPKG

ngx-editor

Version:

Rich Text Editor for angular using ProseMirror

36 lines 4.83 kB
import { DOMSerializer, DOMParser } from 'prosemirror-model'; import defaultSchema from './schema'; export const emptyDoc = { type: 'doc', content: [ { type: 'paragraph', } ], }; // https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment export const toHTML = (json, inputSchema) => { 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) => { const schema = inputSchema ?? defaultSchema; const el = document.createElement('div'); el.innerHTML = html; return DOMParser.fromSchema(schema).parse(el).toJSON(); }; export const parseContent = (value, schema) => { if (!value) { return schema.nodeFromJSON(emptyDoc); } if (typeof value !== 'string') { return schema.nodeFromJSON(value); } const docJson = toDoc(value, schema); return schema.nodeFromJSON(docJson); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1lZGl0b3Ivc3JjL2xpYi9wYXJzZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQVUsU0FBUyxFQUEyQixNQUFNLG1CQUFtQixDQUFDO0FBRTlGLE9BQU8sYUFBYSxNQUFNLFVBQVUsQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUc7SUFDdEIsSUFBSSxFQUFFLEtBQUs7SUFDWCxPQUFPLEVBQUU7UUFDUDtZQUNFLElBQUksRUFBRSxXQUFXO1NBQ2xCO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsb0VBQW9FO0FBQ3BFLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQXlCLEVBQUUsV0FBb0IsRUFBVSxFQUFFO0lBQ2hGLE1BQU0sTUFBTSxHQUFHLFdBQVcsSUFBSSxhQUFhLENBQUM7SUFFNUMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVyRixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLElBQVksRUFBRSxXQUFvQixFQUF1QixFQUFFO0lBQy9FLE1BQU0sTUFBTSxHQUFHLFdBQVcsSUFBSSxhQUFhLENBQUM7SUFFNUMsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUVwQixPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3pELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQTBDLEVBQUUsTUFBYyxFQUFtQixFQUFFO0lBQzFHLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7S0FDdEM7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDbkM7SUFFRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET01TZXJpYWxpemVyLCBTY2hlbWEsIERPTVBhcnNlciwgTm9kZSBhcyBQcm9zZU1pcnJvck5vZGUgfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XG5cbmltcG9ydCBkZWZhdWx0U2NoZW1hIGZyb20gJy4vc2NoZW1hJztcblxuZXhwb3J0IGNvbnN0IGVtcHR5RG9jID0ge1xuICB0eXBlOiAnZG9jJyxcbiAgY29udGVudDogW1xuICAgIHtcbiAgICAgIHR5cGU6ICdwYXJhZ3JhcGgnLFxuICAgIH1cbiAgXSxcbn07XG5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Eb2N1bWVudEZyYWdtZW50XG5leHBvcnQgY29uc3QgdG9IVE1MID0gKGpzb246IFJlY29yZDxzdHJpbmcsIGFueT4sIGlucHV0U2NoZW1hPzogU2NoZW1hKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgc2NoZW1hID0gaW5wdXRTY2hlbWEgPz8gZGVmYXVsdFNjaGVtYTtcblxuICBjb25zdCBjb250ZW50Tm9kZSA9IHNjaGVtYS5ub2RlRnJvbUpTT04oanNvbik7XG4gIGNvbnN0IGh0bWwgPSBET01TZXJpYWxpemVyLmZyb21TY2hlbWEoc2NoZW1hKS5zZXJpYWxpemVGcmFnbWVudChjb250ZW50Tm9kZS5jb250ZW50KTtcblxuICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGl2LmFwcGVuZENoaWxkKGh0bWwpO1xuICByZXR1cm4gZGl2LmlubmVySFRNTDtcbn07XG5cbmV4cG9ydCBjb25zdCB0b0RvYyA9IChodG1sOiBzdHJpbmcsIGlucHV0U2NoZW1hPzogU2NoZW1hKTogUmVjb3JkPHN0cmluZywgYW55PiA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IGlucHV0U2NoZW1hID8/IGRlZmF1bHRTY2hlbWE7XG5cbiAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZWwuaW5uZXJIVE1MID0gaHRtbDtcblxuICByZXR1cm4gRE9NUGFyc2VyLmZyb21TY2hlbWEoc2NoZW1hKS5wYXJzZShlbCkudG9KU09OKCk7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VDb250ZW50ID0gKHZhbHVlOiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgbnVsbCwgc2NoZW1hOiBTY2hlbWEpOiBQcm9zZU1pcnJvck5vZGUgPT4ge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIHNjaGVtYS5ub2RlRnJvbUpTT04oZW1wdHlEb2MpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gc2NoZW1hLm5vZGVGcm9tSlNPTih2YWx1ZSk7XG4gIH1cblxuICBjb25zdCBkb2NKc29uID0gdG9Eb2ModmFsdWUsIHNjaGVtYSk7XG4gIHJldHVybiBzY2hlbWEubm9kZUZyb21KU09OKGRvY0pzb24pO1xufTtcbiJdfQ==