draft-js#BlockMapBuilder JavaScript Examples
The following examples show how to use
draft-js#BlockMapBuilder.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: customHTML2Content.js From spring-boot-ecommerce with Apache License 2.0 | 5 votes |
// takes HTML string and returns DraftJS ContentState
export default function customHTML2Content(HTML, contentState) {
var tempDoc = new DOMParser().parseFromString(HTML, 'text/html');
// replace all <img /> with <blockquote /> elements
toArray(tempDoc.querySelectorAll('img')).forEach(imgReplacer);
// use DraftJS converter to do initial conversion. I don't provide DOMBuilder and
// blockRenderMap arguments here since it should fall back to its default ones, which are fine
var _convertFromHTML = convertFromHTML(tempDoc.body.innerHTML),
contentBlocks = _convertFromHTML.contentBlocks;
// now replace <blockquote /> ContentBlocks with 'atomic' ones
contentBlocks = contentBlocks.reduce(function (contentBlocks, block) {
if (block.getType() !== 'blockquote') {
return contentBlocks.concat(block);
}
var image = JSON.parse(block.getText());
contentState.createEntity('IMAGE-ENTITY', 'IMMUTABLE', image);
var entityKey = contentState.getLastCreatedEntityKey();
var charData = CharacterMetadata.create({ entity: entityKey });
// const blockSpec = Object.assign({ type: 'atomic', text: ' ' }, { entityData })
// const atomicBlock = createContentBlock(blockSpec)
// const spacerBlock = createContentBlock({});
var fragmentArray = [new ContentBlock({
key: genKey(),
type: 'image-block',
text: ' ',
characterList: List(Repeat(charData, charData.count()))
}), new ContentBlock({
key: genKey(),
type: 'unstyled',
text: '',
characterList: List()
})];
return contentBlocks.concat(fragmentArray);
}, []);
// console.log('>> customHTML2Content contentBlocks', contentBlocks);
tempDoc = null;
return BlockMapBuilder.createFromArray(contentBlocks);
}
Example #2
Source File: convertFromHTML.js From the-eye-knows-the-garbage with MIT License | 5 votes |
convertFromHTML = function convertFromHTML(_ref2) {
var _ref2$htmlToStyle = _ref2.htmlToStyle,
htmlToStyle = _ref2$htmlToStyle === void 0 ? defaultHTMLToStyle : _ref2$htmlToStyle,
_ref2$htmlToEntity = _ref2.htmlToEntity,
htmlToEntity = _ref2$htmlToEntity === void 0 ? defaultHTMLToEntity : _ref2$htmlToEntity,
_ref2$textToEntity = _ref2.textToEntity,
textToEntity = _ref2$textToEntity === void 0 ? defaultTextToEntity : _ref2$textToEntity,
_ref2$htmlToBlock = _ref2.htmlToBlock,
htmlToBlock = _ref2$htmlToBlock === void 0 ? defaultHTMLToBlock : _ref2$htmlToBlock;
return function (html) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
flat: false
};
var DOMBuilder = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getSafeBodyFromHTML;
var generateKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : genKey;
var contentState = ContentState.createFromText('');
var createEntityWithContentState = function createEntityWithContentState() {
if (contentState.createEntity) {
var _contentState;
contentState = (_contentState = contentState).createEntity.apply(_contentState, arguments);
return contentState.getLastCreatedEntityKey();
}
return Entity.create.apply(Entity, arguments);
};
var getEntityWithContentState = function getEntityWithContentState() {
if (contentState.getEntity) {
var _contentState2;
return (_contentState2 = contentState).getEntity.apply(_contentState2, arguments);
}
return Entity.get.apply(Entity, arguments);
};
var mergeEntityDataWithContentState = function mergeEntityDataWithContentState() {
if (contentState.mergeEntityData) {
var _contentState3;
contentState = (_contentState3 = contentState).mergeEntityData.apply(_contentState3, arguments);
return;
}
Entity.mergeData.apply(Entity, arguments);
};
var replaceEntityDataWithContentState = function replaceEntityDataWithContentState() {
if (contentState.replaceEntityData) {
var _contentState4;
contentState = (_contentState4 = contentState).replaceEntityData.apply(_contentState4, arguments);
return;
}
Entity.replaceData.apply(Entity, arguments);
};
var contentBlocks = convertFromHTMLtoContentBlocks(html, handleMiddleware(htmlToStyle, baseProcessInlineTag), handleMiddleware(htmlToEntity, defaultHTMLToEntity), handleMiddleware(textToEntity, defaultTextToEntity), handleMiddleware(htmlToBlock, baseCheckBlockType), createEntityWithContentState, getEntityWithContentState, mergeEntityDataWithContentState, replaceEntityDataWithContentState, options, DOMBuilder, generateKey);
var blockMap = BlockMapBuilder.createFromArray(contentBlocks);
var firstBlockKey = contentBlocks[0].getKey();
return contentState.merge({
blockMap: blockMap,
selectionBefore: SelectionState.createEmpty(firstBlockKey),
selectionAfter: SelectionState.createEmpty(firstBlockKey)
});
};
}