diff --git a/packages/forms/src/Components/RichEditor/RichContentRenderer.php b/packages/forms/src/Components/RichEditor/RichContentRenderer.php index f9240157c6..c456bef040 100644 --- a/packages/forms/src/Components/RichEditor/RichContentRenderer.php +++ b/packages/forms/src/Components/RichEditor/RichContentRenderer.php @@ -83,6 +83,11 @@ class RichContentRenderer implements Htmlable */ protected array $cachedMergeTagValues = []; + /** + * @var array + */ + protected array $nodeProcessors = []; + /** * @param string | array | null $content */ @@ -236,6 +241,20 @@ class RichContentRenderer implements Htmlable }); } + public function processNodesUsing(Closure $callback): static + { + $this->nodeProcessors[] = $callback; + + return $this; + } + + protected function processNodes(Editor $editor): void + { + foreach ($this->nodeProcessors as $processor) { + $editor->descendants($processor); + } + } + /** * @return array */ @@ -341,6 +360,7 @@ class RichContentRenderer implements Htmlable $this->processCustomBlocks($editor); $this->processFileAttachments($editor); $this->processMergeTags($editor); + $this->processNodes($editor); return $editor->getHTML(); } diff --git a/packages/forms/src/Components/RichEditor/TipTapExtensions/ImageExtension.php b/packages/forms/src/Components/RichEditor/TipTapExtensions/ImageExtension.php index 84463cb90a..3cf29e6540 100644 --- a/packages/forms/src/Components/RichEditor/TipTapExtensions/ImageExtension.php +++ b/packages/forms/src/Components/RichEditor/TipTapExtensions/ImageExtension.php @@ -32,6 +32,7 @@ class ImageExtension extends BaseImage 'parseHTML' => fn ($DOMNode) => $DOMNode->getAttribute('data-id') ?: null, 'renderHTML' => fn ($attributes) => ['data-id' => $attributes->id ?? null], ], + 'loading' => [], ]; } }