UNPKG

@curvenote/schema

Version:

Schema and markdown parser for @curvenote/editor

48 lines 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.applySteps = exports.getEditorState = exports.docToEditorState = exports.EditorState = void 0; const prosemirror_transform_1 = require("prosemirror-transform"); const prosemirror_state_1 = require("prosemirror-state"); Object.defineProperty(exports, "EditorState", { enumerable: true, get: function () { return prosemirror_state_1.EditorState; } }); const prosemirror_collab_1 = require("prosemirror-collab"); const html_1 = require("./parse/html"); const schemas_1 = require("./schemas"); function serverPlugins(version) { return [(0, prosemirror_collab_1.collab)({ version })]; } function docToEditorState(doc, version) { return prosemirror_state_1.EditorState.create({ doc, plugins: serverPlugins(version), }); } exports.docToEditorState = docToEditorState; function getEditorState(useSchema, content, version, document, DOMParser) { const schema = (0, schemas_1.getSchema)(useSchema); try { const data = JSON.parse(content); return prosemirror_state_1.EditorState.fromJSON({ schema, plugins: serverPlugins(version) }, { doc: data, selection: { type: 'text', anchor: 0, head: 0 } }); } catch (error) { const doc = (0, html_1.fromHTML)(content, useSchema, document, DOMParser); return docToEditorState(doc, version); } } exports.getEditorState = getEditorState; function applySteps(state, stepsData, client) { const steps = []; const clientIDs = []; stepsData.forEach((data) => { const stepPM = prosemirror_transform_1.Step.fromJSON(state.schema, data); steps.push(stepPM); clientIDs.push(client); }); const tr = (0, prosemirror_collab_1.receiveTransaction)(state, steps, clientIDs); const nextState = state.apply(tr); return { state: nextState, tr, }; } exports.applySteps = applySteps; //# sourceMappingURL=server.js.map