Skip to content
This plugin is new and currently in beta. For the stable version, please use the previous version of the plugin.

BlockRenderer

Base class for creating custom block renderers in the Stripo Email Editor Extensions SDK.

typescript
class BlockRenderer

Description

The BlockRenderer class enables custom visual representation of blocks in the editor that differs from their actual HTML content. This is particularly useful for displaying merge tags as preview values, showing placeholder content for empty blocks, or creating interactive editing experiences.

When a block uses a custom renderer, the editor displays the renderer's output instead of the actual HTML content, while the underlying template remains unchanged.

Import

typescript
import { BlockRenderer } from '@stripoinc/ui-editor-extensions';

Properties

api

Provides access to editor functionalities for the renderer.

typescript
api!: BlockRendererApi

Type

BlockRendererApi

Usage Notes

  • Automatically injected by the editor
  • Provides access to translation and configuration
  • Available when rendering methods are called

Methods

getPreviewInnerHtml()

Returns custom content to be displayed inside the block's root TD element.

typescript
public getPreviewInnerHtml(node: ImmutableHtmlNode): string

Parameters

ParameterTypeDescription
nodeImmutableHtmlNodeThe current block node to render

Returns

string - HTML string to display in the editor

Usage Notes

  • Called whenever the block needs to be rendered in the editor
  • The returned HTML is displayed instead of the actual node content
  • Should return valid HTML that fits within a TD element
  • Can access node attributes and configuration via the node parameter

Example

typescript
public getPreviewInnerHtml(node: ImmutableHtmlNode): string {
    const config = node.getNodeConfig();

    if (!config.initialized) {
        return '<div style="padding: 20px; text-align: center;">Click to configure this block</div>';
    }

    // Replace merge tags with preview values
    const content = node.getInnerHTML();
    return content.replace(/\{\{name\}\}/g, 'John Doe')
                  .replace(/\{\{email\}\}/g, 'john@example.com');
}