UNPKG

d2-ui

Version:
72 lines (57 loc) 2.65 kB
/** * Copyright (c) 2013-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * * @providesModule convertFromRawToDraftState * */ 'use strict'; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var ContentBlock = require('./ContentBlock'); var ContentState = require('./ContentState'); var DraftEntity = require('./DraftEntity'); var createCharacterList = require('./createCharacterList'); var decodeEntityRanges = require('./decodeEntityRanges'); var decodeInlineStyleRanges = require('./decodeInlineStyleRanges'); var generateRandomKey = require('./generateRandomKey'); function convertFromRawToDraftState(rawState) { var blocks = rawState.blocks; var entityMap = rawState.entityMap; var fromStorageToLocal = {}; Object.keys(entityMap).forEach(function (storageKey) { var encodedEntity = entityMap[storageKey]; var type = encodedEntity.type; var mutability = encodedEntity.mutability; var data = encodedEntity.data; var newKey = DraftEntity.create(type, mutability, data || {}); fromStorageToLocal[storageKey] = newKey; }); var contentBlocks = blocks.map(function (block) { var key = block.key; var type = block.type; var text = block.text; var depth = block.depth; var inlineStyleRanges = block.inlineStyleRanges; var entityRanges = block.entityRanges; key = key || generateRandomKey(); depth = depth || 0; inlineStyleRanges = inlineStyleRanges || []; entityRanges = entityRanges || []; var inlineStyles = decodeInlineStyleRanges(text, inlineStyleRanges); // Translate entity range keys to the DraftEntity map. var filteredEntityRanges = entityRanges.filter(function (range) { return fromStorageToLocal.hasOwnProperty(range.key); }).map(function (range) { return _extends({}, range, { key: fromStorageToLocal[range.key] }); }); var entities = decodeEntityRanges(text, filteredEntityRanges); var characterList = createCharacterList(inlineStyles, entities); return new ContentBlock({ key: key, type: type, text: text, depth: depth, characterList: characterList }); }); return ContentState.createFromBlockArray(contentBlocks); } module.exports = convertFromRawToDraftState;