Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- insertMedia(type, src, cb) {
- let editorState = this.state.editorState
- let contentState = editorState.getCurrentContent();
- let selectionState = editorState.getSelection();
- let afterRemoval = Modifier.removeRange(contentState, selectionState, 'backward');
- let targetSelection = afterRemoval.getSelectionAfter();
- let afterSplit = Modifier.splitBlock(afterRemoval, targetSelection);
- let insertionTarget = afterSplit.getSelectionAfter();
- let asMedia = Modifier.setBlockType(afterSplit, insertionTarget, `media-${type}`);
- let entityKey = Entity.create('TOKEN', 'IMMUTABLE', {
- src: src
- });
- let charData = CharacterMetadata.create({entity: entityKey});
- let fragmentArray = [
- new ContentBlock({
- key: genKey(),
- type: `media-${type}`,
- text: '',
- characterList: List(Repeat(charData, 1))
- }),
- new ContentBlock({
- key: genKey(),
- type: 'unstyled',
- text: '',
- characterList: List()
- })
- ];
- let fragment = BlockMapBuilder.createFromArray(fragmentArray);
- let withMedia = Modifier.replaceWithFragment(asMedia, insertionTarget, fragment);
- let newContent = withMedia.merge({
- selectionBefore: selectionState,
- selectionAfter: withMedia.getSelectionAfter().set('hasFocus', true)
- });
- this.onChange(EditorState.push(editorState, newContent, 'insert-fragment'), cb);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement