+/**
+ * @param {String} attrName
+ * @param {String} attrValue
+ * @return {PmCommandHandler}
+ */
export function setBlockAttr(attrName, attrValue) {
return function (state, dispatch) {
const ref = state.selection;
const nodeAttrs = Object.assign({}, node.attrs);
if (node.attrs[attrName] !== undefined) {
nodeAttrs[attrName] = attrValue;
- tr.setBlockType(pos, pos+1, node.type, nodeAttrs)
+ tr.setBlockType(pos, pos + 1, node.type, nodeAttrs)
}
});
}
}
+/**
+ * @param {PmNodeType} blockType
+ * @return {PmCommandHandler}
+ */
export function insertBlockBefore(blockType) {
return function (state, dispatch) {
const startPosition = state.selection.$from.before(1);
return true
}
+}
+
+/**
+ * @param {Number} rows
+ * @param {Number} columns
+ * @param {Object} tableAttrs
+ * @return {PmCommandHandler}
+ */
+export function insertTable(rows, columns, tableAttrs) {
+ return function (state, dispatch) {
+ if (!dispatch) return true;
+
+ const tr = state.tr;
+ const nodes = state.schema.nodes;
+
+ const rowNodes = [];
+ for (let y = 0; y < rows; y++) {
+ const rowCells = [];
+ for (let x = 0; x < columns; x++) {
+ const cellText = nodes.paragraph.create(null);
+ rowCells.push(nodes.table_cell.create(null, cellText));
+ }
+ rowNodes.push(nodes.table_row.create(null, rowCells));
+ }
+
+ const table = nodes.table.create(tableAttrs, rowNodes);
+ tr.replaceSelectionWith(table);
+ dispatch(tr);
+
+ return true;
+ }
+}
+
+/**
+ * @return {PmCommandHandler}
+ */
+export function removeMarks() {
+ return function (state, dispatch) {
+ if (dispatch) {
+ dispatch(state.tr.removeMark(state.selection.from, state.selection.to, null));
+ }
+ return true;
+ }
}
\ No newline at end of file