예제 #1
0
 public static function convertFromRaw(array $rawState)
 {
     $fromStorageToLocal = [];
     if (isset($rawState['entityMap'])) {
         foreach ($rawState['entityMap'] as $storageKey => $encodedEntity) {
             $newKey = DraftEntity::create($encodedEntity['type'], $encodedEntity['mutability'], isset($encodedEntity['data']) ? $encodedEntity['data'] : null);
             $fromStorageToLocal[$storageKey] = $newKey;
         }
     }
     return array_map(function ($block) use($fromStorageToLocal) {
         $key = isset($block['key']) ? $block['key'] : Keys::generateRandomKey();
         $depth = isset($block['depth']) ? $block['depth'] : 0;
         $inlineStyleRanges = isset($block['inlineStyleRanges']) ? $block['inlineStyleRanges'] : [];
         $entityRanges = isset($block['entityRanges']) ? $block['entityRanges'] : [];
         $inlineStyles = Encoding::decodeInlineStyleRanges($block['text'], $inlineStyleRanges);
         $filteredEntityRanges = array_map(function ($entityRange) use($fromStorageToLocal) {
             return array_merge($entityRange, ['key' => $fromStorageToLocal[$entityRange['key']]]);
         }, array_filter($entityRanges, function ($entityRange) use($fromStorageToLocal) {
             return isset($fromStorageToLocal[$entityRange['key']]);
         }));
         $entities = Encoding::decodeEntityRanges($block['text'], $filteredEntityRanges);
         $characterList = Encoding::createCharacterList($inlineStyles, $entities);
         return new ContentBlock($key, $block['type'], $block['text'], $characterList, $depth);
     }, $rawState['blocks']);
 }
예제 #2
0
 /**
  * @param string $text
  * @param string $delimiter
  *
  * @return self
  */
 public static function createFromText($text, $delimiter = '/\\r\\n?|\\n/')
 {
     $blocks = [];
     $characterMetadata = new CharacterMetadata();
     foreach (preg_split($delimiter, $text) as $string) {
         $blockKey = Keys::generateRandomKey();
         $blocks[$blockKey] = new ContentBlock($blockKey, 'unstyled', $string, array_fill(0, count($blocks), $characterMetadata));
     }
     return self::createFromBlockArray($blocks);
 }