UNPKG

@20minutes/draft-convert

Version:

Extensibly serialize & deserialize Draft.js ContentState

56 lines (55 loc) 1.64 kB
"use strict"; 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 = { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#x27;', '`': '&#x60;', '\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 }; };