@react-page-plugins/slate-table
Version:
react-page plugin for slate table
182 lines • 6.99 kB
JavaScript
;
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.withTables = exports.getContext = exports.countRowCol = exports.toggleMark = exports.toggleBlock = exports.isMarkActive = exports.isBlockActive = void 0;
var slate_1 = require("slate");
var LIST_TYPES = ['numbered-list', 'bulleted-list'];
var isBlockActive = function (editor, format) {
var _a = __read(slate_1.Editor.nodes(editor, {
match: function (elem) {
if (slate_1.Editor.isEditor(elem))
return false;
if (!slate_1.Element.isElement(elem))
return false;
return elem.type === format;
},
}), 1), match = _a[0];
return !!match;
};
exports.isBlockActive = isBlockActive;
var isMarkActive = function (editor, format) {
var marks = slate_1.Editor.marks(editor);
return marks ? marks[format] === true : false;
};
exports.isMarkActive = isMarkActive;
var toggleBlock = function (editor, format) {
var isActive = exports.isBlockActive(editor, format);
var isList = LIST_TYPES.includes(format);
slate_1.Transforms.unwrapNodes(editor, {
match: function (elem) {
if (slate_1.Editor.isEditor(elem))
return false;
if (!slate_1.Element.isElement(elem))
return false;
return LIST_TYPES.includes(elem.type);
},
split: true,
});
var newProperties = {
type: isActive ? 'paragraph' : isList ? 'list-item' : format,
};
slate_1.Transforms.setNodes(editor, newProperties);
if (!isActive && isList) {
var block = { type: format, children: [] };
slate_1.Transforms.wrapNodes(editor, block);
}
};
exports.toggleBlock = toggleBlock;
var toggleMark = function (editor, format) {
var isActive = exports.isMarkActive(editor, format);
if (isActive) {
slate_1.Editor.removeMark(editor, format);
}
else {
slate_1.Editor.addMark(editor, format, true);
}
};
exports.toggleMark = toggleMark;
var countRowCol = function (table) {
var rcount = table.children.length;
var ccount = rcount > 0 ? table.children[0].children.length : 0;
return [rcount, ccount];
};
exports.countRowCol = countRowCol;
var getContext = function (editor) {
var selection = editor.selection, data = editor.data;
var slate = data.slate;
var table = slate[0];
var _a = __read(exports.countRowCol(table), 2), rcount = _a[0], ccount = _a[1];
var row;
var rowPath;
var cell;
var cellPath;
if (selection) {
var _b = __read(slate_1.Editor.nodes(editor, {
match: function (n) { return !slate_1.Editor.isEditor(n) && slate_1.Element.isElement(n) && n.type === 'table-row'; },
}), 1), _row = _b[0];
var _c = __read(slate_1.Editor.nodes(editor, {
match: function (n) { return !slate_1.Editor.isEditor(n) && slate_1.Element.isElement(n) && n.type === 'table-cell'; },
}), 1), _cell = _c[0];
if (_cell) {
cell = _cell;
var _d = __read(_cell, 2), _cellPath = _d[1];
cellPath = _cellPath;
}
if (_row) {
row = _row;
var _e = __read(_row, 2), _rowPath = _e[1];
rowPath = _rowPath;
}
}
return { selection: selection, rcount: rcount, ccount: ccount, cell: cell, cellPath: cellPath, row: row, rowPath: rowPath };
};
exports.getContext = getContext;
var withTables = function (editor) {
var deleteBackward = editor.deleteBackward, deleteForward = editor.deleteForward, insertBreak = editor.insertBreak;
editor.addParagraph = function () {
var selection = editor.selection;
if (selection) {
var _a = __read(slate_1.Editor.nodes(editor, {
match: function (n) {
return !slate_1.Editor.isEditor(n) &&
slate_1.Element.isElement(n) &&
['paragraph', 'list-item', 'heading-two'].includes(n.type);
},
}), 1), cell = _a[0];
if (cell) {
var _b = __read(cell, 1), node = _b[0];
editor.insertNode({ type: node.type === 'list-item' ? 'list-item' : 'paragraph', children: [{ text: '' }] });
}
}
};
editor.deleteBackward = function (unit) {
var selection = editor.selection;
if (selection && slate_1.Range.isCollapsed(selection)) {
var _a = __read(slate_1.Editor.nodes(editor, {
match: function (n) { return !slate_1.Editor.isEditor(n) && slate_1.Element.isElement(n) && n.type === 'table-cell'; },
}), 1), cell = _a[0];
if (cell) {
var _b = __read(cell, 2), cellPath = _b[1];
var start = slate_1.Editor.start(editor, cellPath);
if (slate_1.Point.equals(selection.anchor, start)) {
return;
}
}
}
deleteBackward(unit);
};
editor.deleteForward = function (unit) {
var selection = editor.selection;
if (selection && slate_1.Range.isCollapsed(selection)) {
var _a = __read(slate_1.Editor.nodes(editor, {
match: function (n) { return !slate_1.Editor.isEditor(n) && slate_1.Element.isElement(n) && n.type === 'table-cell'; },
}), 1), cell = _a[0];
if (cell) {
var _b = __read(cell, 2), cellPath = _b[1];
var end = slate_1.Editor.end(editor, cellPath);
if (slate_1.Point.equals(selection.anchor, end)) {
return;
}
}
}
deleteForward(unit);
};
editor.insertBreak = function () {
var selection = editor.selection;
if (selection) {
var _a = __read(slate_1.Editor.nodes(editor, {
match: function (n) { return !slate_1.Editor.isEditor(n) && slate_1.Element.isElement(n) && n.type === 'table'; },
}), 1), table = _a[0];
if (table) {
return;
}
}
insertBreak();
};
return editor;
};
exports.withTables = withTables;
exports.default = {
toggleBlock: exports.toggleBlock,
toggleMark: exports.toggleMark,
isBlockActive: exports.isBlockActive,
isMarkActive: exports.isMarkActive,
getContext: exports.getContext,
withTables: exports.withTables,
};
//# sourceMappingURL=core.js.map