UNPKG

draft-convert-greger

Version:

Extensibly serialize & deserialize Draft.js ContentState

95 lines (71 loc) 3.62 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _updateMutation = _interopRequireDefault(require("./util/updateMutation")); var _rangeSort = _interopRequireDefault(require("./util/rangeSort")); var _getElementHTML = _interopRequireDefault(require("./util/getElementHTML")); var _getElementTagLength = _interopRequireDefault(require("./util/getElementTagLength")); var converter = function converter() { var entity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var originalText = arguments.length > 1 ? arguments[1] : undefined; return originalText; }; var _default = function _default(block, entityMap) { var entityConverter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : converter; var resultText = (0, _toConsumableArray2["default"])(block.text); var getEntityHTML = entityConverter; if (entityConverter.__isMiddleware) { getEntityHTML = entityConverter(converter); } if (Object.prototype.hasOwnProperty.call(block, 'entityRanges') && block.entityRanges.length > 0) { var entities = block.entityRanges.sort(_rangeSort["default"]); var styles = block.inlineStyleRanges; var _loop = function _loop(index) { var entityRange = entities[index]; var entity = entityMap[entityRange.key]; var originalText = resultText.slice(entityRange.offset, entityRange.offset + entityRange.length).join(''); var entityHTML = getEntityHTML(entity, originalText, block); var elementHTML = (0, _getElementHTML["default"])(entityHTML, originalText, true); var converted = void 0; if (!!elementHTML || elementHTML === '') { converted = (0, _toConsumableArray2["default"])(elementHTML); } else { converted = originalText; } var prefixLength = (0, _getElementTagLength["default"])(entityHTML, 'start'); var suffixLength = (0, _getElementTagLength["default"])(entityHTML, 'end'); var updateLaterMutation = function updateLaterMutation(mutation, mutationIndex) { if (mutationIndex > index || Object.prototype.hasOwnProperty.call(mutation, 'style')) { return (0, _updateMutation["default"])(mutation, entityRange.offset, entityRange.length, converted.length, prefixLength, suffixLength); } return mutation; }; var updateLaterMutations = function updateLaterMutations(mutationList) { return mutationList.reduce(function (acc, mutation, mutationIndex) { var updatedMutation = updateLaterMutation(mutation, mutationIndex); if (Array.isArray(updatedMutation)) { return acc.concat(updatedMutation); } return acc.concat([updatedMutation]); }, []); }; entities = updateLaterMutations(entities); styles = updateLaterMutations(styles); resultText = [].concat((0, _toConsumableArray2["default"])(resultText.slice(0, entityRange.offset)), (0, _toConsumableArray2["default"])(converted), (0, _toConsumableArray2["default"])(resultText.slice(entityRange.offset + entityRange.length))); }; for (var index = 0; index < entities.length; index++) { _loop(index); } return Object.assign({}, block, { text: resultText.join(''), inlineStyleRanges: styles, entityRanges: entities }); } return block; }; exports["default"] = _default;