draft-js-modifiers
Version:
Modular state modifiers for Draft.js
42 lines (31 loc) • 1.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _draftJs = require('draft-js');
var _getCurrentBlock = require('./utils/getCurrentBlock');
var _getCurrentBlock2 = _interopRequireDefault(_getCurrentBlock);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var removeInlineStyles = function removeInlineStyles(editorState) {
var inlineStyles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var selection = editorState.getSelection();
var content = editorState.getCurrentContent();
var newContent = void 0;
if (selection.isCollapsed()) {
var block = (0, _getCurrentBlock2.default)(editorState);
var updatedCharacterList = block.getCharacterList().map(function (c) {
return inlineStyles.reduce(function (characterMetadata, style) {
return _draftJs.CharacterMetadata.removeStyle(characterMetadata, style);
}, c);
});
var updatedBlock = block.set('characterList', updatedCharacterList);
newContent = content.merge({ blockMap: content.getBlockMap().merge(_defineProperty({}, block.getKey(), updatedBlock)) });
} else {
newContent = inlineStyles.reduce(function (contentState, style) {
return _draftJs.Modifier.removeInlineStyle(contentState, selection, style);
}, content);
}
return _draftJs.EditorState.push(editorState, newContent, 'change-inline-style');
};
exports.default = removeInlineStyles;