megadraft
Version:
Rich Text editor built on top of draft.js
70 lines (54 loc) • 2.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _immutable = _interopRequireDefault(require("immutable"));
var _draftJs = require("draft-js");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
/**
* Copyright (c) 2013-present, Facebook, Inc.
* Copyright (c) 2016, Globo.com (https://github.com/globocom)
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @providesModule AtomicBlockUtils
* @typechecks
* @flow
*/
var List = _immutable["default"].List,
Map = _immutable["default"].Map;
function insertDataBlock(editorState, data) {
var contentState = editorState.getCurrentContent();
var selectionState = editorState.getSelection();
var afterRemoval = _draftJs.Modifier.removeRange(contentState, selectionState, "backward");
var targetSelection = afterRemoval.getSelectionAfter();
var afterSplit = _draftJs.Modifier.splitBlock(afterRemoval, targetSelection);
var insertionTarget = afterSplit.getSelectionAfter();
var asAtomicBlock = _draftJs.Modifier.setBlockType(afterSplit, insertionTarget, "atomic");
var block = new _draftJs.ContentBlock({
key: (0, _draftJs.genKey)(),
type: "atomic",
text: "",
characterList: List(),
data: new Map(data)
});
var fragmentArray = [block, new _draftJs.ContentBlock({
key: (0, _draftJs.genKey)(),
type: "unstyled",
text: "",
characterList: List()
})];
var fragment = _draftJs.BlockMapBuilder.createFromArray(fragmentArray);
var withAtomicBlock = _draftJs.Modifier.replaceWithFragment(asAtomicBlock, insertionTarget, fragment);
var newContent = withAtomicBlock.merge({
selectionBefore: selectionState,
selectionAfter: withAtomicBlock.getSelectionAfter().set("hasFocus", true)
});
return _draftJs.EditorState.push(editorState, newContent, "insert-fragment");
}
var _default = insertDataBlock;
exports["default"] = _default;