UNPKG

draft-js-modifiers

Version:
59 lines (49 loc) 2.14 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _draftJs = require('draft-js'); var _immutable = require('immutable'); var _getCurrentBlock = require('./utils/getCurrentBlock'); var _getCurrentBlock2 = _interopRequireDefault(_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, _getCurrentBlock2.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()); }; exports.default = insertNewBlock;