Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. insertMedia(type, src, cb) {
  2. let editorState = this.state.editorState
  3. let contentState = editorState.getCurrentContent();
  4. let selectionState = editorState.getSelection();
  5.  
  6. let afterRemoval = Modifier.removeRange(contentState, selectionState, 'backward');
  7. let targetSelection = afterRemoval.getSelectionAfter();
  8. let afterSplit = Modifier.splitBlock(afterRemoval, targetSelection);
  9. let insertionTarget = afterSplit.getSelectionAfter();
  10.  
  11. let asMedia = Modifier.setBlockType(afterSplit, insertionTarget, `media-${type}`);
  12. let entityKey = Entity.create('TOKEN', 'IMMUTABLE', {
  13. src: src
  14. });
  15.  
  16. let charData = CharacterMetadata.create({entity: entityKey});
  17.  
  18. let fragmentArray = [
  19. new ContentBlock({
  20. key: genKey(),
  21. type: `media-${type}`,
  22. text: '',
  23. characterList: List(Repeat(charData, 1))
  24. }),
  25. new ContentBlock({
  26. key: genKey(),
  27. type: 'unstyled',
  28. text: '',
  29. characterList: List()
  30. })
  31. ];
  32. let fragment = BlockMapBuilder.createFromArray(fragmentArray);
  33. let withMedia = Modifier.replaceWithFragment(asMedia, insertionTarget, fragment);
  34.  
  35. let newContent = withMedia.merge({
  36. selectionBefore: selectionState,
  37. selectionAfter: withMedia.getSelectionAfter().set('hasFocus', true)
  38. });
  39.  
  40. this.onChange(EditorState.push(editorState, newContent, 'insert-fragment'), cb);
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement