@20minutes/draft-convert
Version:
Extensibly serialize & deserialize Draft.js ContentState
56 lines (55 loc) • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return _default;
}
});
const _rangeSort = /*#__PURE__*/ _interop_require_default(require("./util/rangeSort.js"));
const _updateMutation = /*#__PURE__*/ _interop_require_default(require("./util/updateMutation.js"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
const ENTITY_MAP = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'`': '`',
'\n': '<br/>'
};
const _default = (block)=>{
const blockText = [
...block.text
];
let entities = block.entityRanges.sort(_rangeSort.default);
let styles = block.inlineStyleRanges.sort(_rangeSort.default);
let resultText = '';
for(let index = 0; index < blockText.length; index += 1){
const char = blockText[index];
if (ENTITY_MAP[char] !== undefined) {
const encoded = ENTITY_MAP[char];
const resultIndex = [
...resultText
].length;
resultText += encoded;
const updateForChar = (mutation)=>(0, _updateMutation.default)(mutation, resultIndex, char.length, encoded.length, 0, 0);
entities = entities.map(updateForChar);
styles = styles.map(updateForChar);
} else {
resultText += char;
}
}
return {
...block,
text: resultText,
inlineStyleRanges: styles,
entityRanges: entities
};
};