draft-js-modifiers
Version:
Modular state modifiers for Draft.js
59 lines (50 loc) • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _draftJs = require("draft-js");
var _immutable = require("immutable");
var _getCurrentBlock = _interopRequireDefault(require("./utils/getCurrentBlock"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var insertNewBlock = function insertNewBlock(editorState) {
var blockType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unstyled';
var text = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
var data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
var content = editorState.getCurrentContent();
var selection = editorState.getSelection();
var currentBlock = (0, _getCurrentBlock.default)(editorState);
var emptyBlockKey = (0, _draftJs.genKey)();
var emptyBlock = new _draftJs.ContentBlock({
key: emptyBlockKey,
type: blockType,
text: text,
characterList: (0, _immutable.List)((0, _immutable.Repeat)(_draftJs.CharacterMetadata.create(), text.length)),
data: (0, _immutable.Map)().merge(data)
});
var blockMap = content.getBlockMap();
var blocksBefore = blockMap.toSeq().takeUntil(function (value) {
return value === currentBlock;
});
var blocksAfter = blockMap.toSeq().skipUntil(function (value) {
return value === currentBlock;
}).rest();
var augmentedBlocks = [[currentBlock.getKey(), currentBlock], [emptyBlockKey, emptyBlock]];
var newBlocks = blocksBefore.concat(augmentedBlocks, blocksAfter).toOrderedMap();
var focusKey = emptyBlockKey;
var newContent = content.merge({
blockMap: newBlocks,
selectionBefore: selection,
selectionAfter: selection.merge({
anchorKey: focusKey,
anchorOffset: 0,
focusKey: focusKey,
focusOffset: 0,
isBackward: false
})
});
var newState = _draftJs.EditorState.push(editorState, newContent, 'split-block');
return _draftJs.EditorState.forceSelection(newState, newContent.getSelectionAfter());
};
var _default = insertNewBlock;
exports.default = _default;