@curvenote/schema
Version:
Schema and markdown parser for @curvenote/editor
48 lines • 1.96 kB
JavaScript
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
;