@atlaskit/editor-core
Version:
A package contains Atlassian editor core functionality
50 lines • 1.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var media_1 = require("../../schema/nodes/media");
var isMediaNode = function (node) { return node.type.name === 'media'; };
var isParagraph = function (node) { return node.type.name === 'paragraph'; };
var toJSON = function (node) {
var obj = { type: node.type.name };
if (isMediaNode(node)) {
obj.attrs = media_1.toJSON(node).attrs;
}
else if (Object.keys(node.attrs).length) {
obj.attrs = node.attrs;
}
if (node.isText) {
obj.text = node.textContent;
}
else {
node.content.forEach(function (child) {
obj.content = obj.content || [];
obj.content.push(toJSON(child));
});
}
if (isParagraph(node)) {
// Paragraph shall always has a content
obj.content = obj.content || [];
}
if (node.marks.length) {
obj.marks = node.marks.map(function (n) { return n.toJSON(); });
}
return obj;
};
var JSONSerializer = (function () {
function JSONSerializer() {
}
JSONSerializer.prototype.serializeFragment = function (fragment) {
var content = [];
fragment.forEach(function (child) { return content.push(toJSON(child)); });
return {
version: 1,
type: 'doc',
content: content,
};
};
JSONSerializer.fromSchema = function (schema) {
return new JSONSerializer();
};
return JSONSerializer;
}());
exports.default = JSONSerializer;
//# sourceMappingURL=index.js.map