react-lz-editor
Version:
An open source react rich-text editor (mordern react editor includes media support such as texts, images, videos, audios, links etc.), development based on Draft-Js and Ant-design, good support html, markdown, draft-raw mode.
66 lines (48 loc) • 2.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ALIGNMENT_DATA_KEY = exports.ALIGNMENTS = undefined;
var _draftJs = require('draft-js');
var _getCurrentlySelectedBlock = require('./getCurrentlySelectedBlock');
var _getCurrentlySelectedBlock2 = _interopRequireDefault(_getCurrentlySelectedBlock);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var ALIGNMENTS = exports.ALIGNMENTS = {
CENTER: 'center',
JUSTIFY: 'justify',
LEFT: 'left',
RIGHT: 'right'
};
var ALIGNMENT_DATA_KEY = exports.ALIGNMENT_DATA_KEY = 'textAlignment';
var ExtendedRichUtils = Object.assign({}, _draftJs.RichUtils, {
toggleAlignment: function toggleAlignment(editorState, alignment) {
var _getCurrentlySelected = (0, _getCurrentlySelectedBlock2.default)(editorState),
content = _getCurrentlySelected.content,
currentBlock = _getCurrentlySelected.currentBlock,
hasAtomicBlock = _getCurrentlySelected.hasAtomicBlock,
target = _getCurrentlySelected.target;
if (hasAtomicBlock) {
return editorState;
}
var blockData = currentBlock.getData();
var keyName = blockData.get(ALIGNMENT_DATA_KEY);
var alignmentToSet = !!blockData && keyName === alignment ? undefined : alignment;
var alignBlockData = new Map();
alignBlockData.set(ALIGNMENT_DATA_KEY, alignmentToSet);
var newBlockData = _draftJs.Modifier.setBlockData(content, target, alignBlockData);
return _draftJs.EditorState.push(editorState, newBlockData, 'change-block-type');
},
splitBlock: function splitBlock(editorState) {
var contentState = _draftJs.Modifier.splitBlock(editorState.getCurrentContent(), editorState.getSelection());
var splitState = _draftJs.EditorState.push(editorState, contentState, 'split-block');
var _getCurrentlySelected2 = (0, _getCurrentlySelectedBlock2.default)(editorState),
currentBlock = _getCurrentlySelected2.currentBlock;
var alignment = currentBlock.getData().get(ALIGNMENT_DATA_KEY);
if (alignment) {
return ExtendedRichUtils.toggleAlignment(splitState, alignment);
} else {
return splitState;
}
}
});
exports.default = ExtendedRichUtils;