Skip to content

Commit

Permalink
Merge pull request #514 from awcodes/fix/handle-string-block-data-in-…
Browse files Browse the repository at this point in the history
…render

Fix: handle string data during block render
  • Loading branch information
awcodes authored Nov 29, 2024
2 parents 0d29282 + bc981b1 commit 0ea1c11
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions src/TiptapEditor.php
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,10 @@ public function renderBlockPreviews(array $document, TiptapEditor $component): a

foreach ($content as $k => $block) {
if ($block['type'] === 'tiptapBlock') {
if (is_string($block['attrs']['data'])) {
$block['attrs']['data'] = $this->parseDataAsString($block['attrs']['data']);
}

$instance = $this->getBlock($block['attrs']['type']);
$orderedAttrs = [
'preview' => $instance->getPreview($block['attrs']['data'], $component),
Expand All @@ -222,12 +226,7 @@ public function decodeBlocksBeforeSave(array $document): array
foreach ($content as $k => $block) {
if ($block['type'] === 'tiptapBlock') {
if (is_string($block['attrs']['data'])) {
$data = Str::of(json_decode('"' . $block['attrs']['data'] . '"'))
->after('JSON.parse(\'')
->beforeLast('\')')
->toString();

$content[$k]['attrs']['data'] = json_decode($data, true);
$content[$k]['attrs']['data'] = $this->parseDataAsString($block['attrs']['data']);
}
unset($content[$k]['attrs']['statePath']);
unset($content[$k]['attrs']['preview']);
Expand All @@ -242,6 +241,16 @@ public function decodeBlocksBeforeSave(array $document): array
return $document;
}

public function parseDataAsString(string $data): array
{
$data = Str::of(json_decode('"' . $data . '"'))
->after('JSON.parse(\'')
->beforeLast('\')')
->toString();

return json_decode($data, true);
}

public function getInsertBlockAction(): Action
{
return Action::make('insertBlock')
Expand Down

0 comments on commit 0ea1c11

Please sign in to comment.