Saltar al contenido principal

Referencia de bloques

Esta página documenta cada tipo de bloque que trae el editor. Todo bloque tiene una forma JSON, un renderizador y una vía de inserción programática mediante editor.blocks.insert.

Todos los bloques comparten el mismo envoltorio al serializarse: id, type, data y un registro tunes opcional.

La forma del bloque

Cada bloque se serializa en el mismo sobre JSON. El id es asignado por el editor y puede omitirse al construir datos mediante programación.

JSON
{
  "id": "abc123",
  "type": "paragraph",
  "data": { "html": "Hello <b>world</b>" },
  "tunes": {}
}

alert

Cuadro de aviso destacado con 4 variantes.

CampoTipoObligatorioDescripción
htmlstringSíContenido HTML del mensaje de alerta. Se admite el marcado de herramientas en línea.
variant'error' | 'info' | 'success' | 'warning'SíEstilo visual de la alerta. Uno de: error, info, success, warning.
JSON
{
  "type": "alert",
  "data": { "html": "Your session will expire in 5 minutes.", "variant": "warning" }
}

audio

Bloque de audio. Se consume mediante el callback audioUploader en Editor.create.

CampoTipoObligatorioDescripción
urlstringSíURL del archivo de audio a incrustar.
captionstringNoLeyenda de texto sin formato que se muestra debajo del reproductor.
altstringNoEtiqueta accesible para el elemento de audio.
alignment'center' | 'left' | 'right'NoAlineación horizontal del reproductor. Uno de: center, left, right.
JSON
{
  "type": "audio",
  "data": { "url": "/media/podcast.mp3", "caption": "Episode 12", "alignment": "center" }
}

checklist

Lista de casillas de verificación interactiva con estado marcado por elemento.

CampoTipoObligatorioDescripción
itemsChecklistItem[]SíArray de elementos de lista de verificación, cada uno con text y estado checked.
items[].textstringSíContenido HTML de la etiqueta del elemento.
items[].checkedbooleanSíSi la casilla de verificación está marcada.
JSON
{
  "type": "checklist",
  "data": {
    "items": [
      { "text": "Install the package", "checked": true },
      { "text": "Mount the editor", "checked": false }
    ]
  }
}

code

Bloque de código con resaltado de sintaxis. Se admiten 50 lenguajes, entre ellos typescript, python, rust, go, ruby, swift y kotlin.

CampoTipoObligatorioDescripción
codestringSíLa cadena de código sin procesar a mostrar.
languageCodeLanguageNoLenguaje de resaltado de sintaxis. Por defecto typescript.
themeCodeThemeNoTema de color del editor. Por defecto github-dark.
showCopybooleanNoMostrar un botón de copia en la salida renderizada.
syncKeystringNoLos bloques que comparten una clave cambian de lenguaje juntos.
variantsCodeVariant[]NoSi no está vacío, renderiza una tira de pestañas de variantes y es la fuente autoritativa.
JSON
{
  "type": "code",
  "data": { "code": "const x = 42;", "language": "typescript", "theme": "github-dark", "showCopy": true }
}

collapsible

Una sección plegable con un título y bloques hijos anidados. Los tipos de bloques hijos desconocidos se conservan tal cual, así que los documentos más nuevos sobreviven en renderizadores más antiguos.

CampoTipoObligatorioDescripción
htmlstringSíTítulo de la sección como HTML en línea.
openbooleanNoSi la sección se muestra desplegada.
childrenBlock[]NoBloques hijos anidados.
JSON
{
  "type": "collapsible",
  "data": {
    "html": "Details",
    "open": true,
    "children": [{ "type": "paragraph", "data": { "html": "Hidden until opened." } }]
  }
}

collection

Incrusta una vista de colección en vivo por id. El bloque solo almacena la identidad de la colección; el servidor es dueño de la forma y de los datos.

CampoTipoObligatorioDescripción
collectionIdstringSíEl id de la colección incrustada. Lo único que se almacena.
JSON
{
  "type": "collection",
  "data": { "collectionId": "c-42" }
}

columns

Un diseño multicolumna de 2 a 4 columnas, cada una con su propia lista de bloques hijos.

CampoTipoObligatorioDescripción
columnsBlock[][]SíLas columnas, cada una una lista de bloques hijos. De dos a cuatro columnas.
JSON
{
  "type": "columns",
  "data": {
    "columns": [
      [{ "type": "paragraph", "data": { "html": "Left" } }],
      [{ "type": "paragraph", "data": { "html": "Right" } }]
    ]
  }
}

date

Una fecha de calendario, almacenada sin zona horaria para que todos los colaboradores coincidan en ella.

CampoTipoObligatorioDescripción
datestringSíFecha ISO en formato yyyy-MM-dd, sin zona horaria.
JSON
{
  "type": "date",
  "data": { "date": "2026-08-31" }
}

delimiter

Separador visual entre secciones.

CampoTipoObligatorioDescripción
variant'line' | 'stars'SíEstilo visual del divisor. Uno de: line, stars.
JSON
{
  "type": "delimiter",
  "data": { "variant": "line" }
}

doc_card

Una tarjeta de enlace enriquecida hacia otro documento. Almacena el id de la página referenciada y una instantánea de presentación que los hosts refrescan al renombrar.

CampoTipoObligatorioDescripción
pageIdstringSíEl id de la página referenciada; la identidad de la tarjeta.
titlestringSíInstantánea de presentación del título de la página.
iconstringNoIcono opcional mostrado en la tarjeta.
descriptionstringNoDescripción opcional mostrada bajo el título.
JSON
{
  "type": "doc_card",
  "data": { "pageId": "p-7", "title": "Release notes", "icon": "📄" }
}

embed

Un enlace incrustado. El bloque almacena la URL; el proveedor y el marcado de incrustación se derivan al renderizar, con los campos de unfurl como tarjeta de respaldo.

CampoTipoObligatorioDescripción
urlstringSíEl enlace incrustado. El proveedor y el marcado de incrustación se derivan de él al renderizar.
titlestringNoInstantánea de unfurl para la tarjeta de enlace.
descriptionstringNoDescripción de unfurl para la tarjeta de enlace.
imageUrlstringNoImagen de vista previa de unfurl para la tarjeta de enlace.
display'card'No"card" para mostrar una tarjeta de enlace incluso donde existe una vista en directo.
fileobjectNoNombre, tipo e icono de un archivo de Drive, desde la cuenta de Google de quien pegó el enlace.
gistobjectNoLos archivos del gist tal como se pegaron, dibujados como código donde la vista de GitHub no puede cargarse.
reasonstringNoPor qué no se muestra la vista en directo: connect_google, no_access, provider_unreachable o switched_off.
issueobjectNoUn enlace de incidencia mostrado como tarjeta: la última instantánea leída (tool, key, title, stateName, category, assigneeName, updatedAt, reason).
JSON
{
  "type": "embed",
  "data": { "url": "https://www.youtube.com/watch?v=abc123" }
}

file

Un archivo adjunto con enlace de descarga, nombre, y tamaño y tipo de contenido opcionales.

CampoTipoObligatorioDescripción
urlstringSíDe dónde se sirve el archivo.
namestringSíNombre de archivo mostrado en el adjunto.
sizenumberNoTamaño del archivo en bytes.
contentTypestringNoTipo MIME del archivo.
JSON
{
  "type": "file",
  "data": { "url": "/files/notes.pdf", "name": "notes.pdf", "size": 2048, "contentType": "application/pdf" }
}

glance

Un panel de resumen de etiquetas y valores: filas de datos que se leen de un vistazo, con leyenda y variante de fondo opcionales.

CampoTipoObligatorioDescripción
rowsGlanceRow[]SíLos datos a mostrar: cada fila es una etiqueta y un valor HTML en línea.
captionstringNoLeyenda opcional encima de las filas.
variant'plain' | 'error' | 'info' | 'success' | 'warning'NoVariante de fondo; plain no tiene estilo, el resto sigue la paleta de alertas.
JSON
{
  "type": "glance",
  "data": {
    "caption": "Facts",
    "rows": [{ "label": "Version", "html": "<b>1.0</b>" }],
    "variant": "plain"
  }
}

Títulos de nivel superior y de sección (h1 a h6). Las herramientas en línea funcionan dentro de la carga útil html.

CampoTipoObligatorioDescripción
htmlstringSíContenido HTML del encabezado. Se admite el marcado de herramientas en línea.
level'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'NoNivel de encabezado. Uno de: h1, h2, h3, h4, h5, h6. Por defecto h1.
JSON
{
  "type": "header",
  "data": { "html": "Getting started", "level": "h2" }
}

image

Bloque de imagen con leyenda y texto alt. Se consume mediante el callback imageUploader en Editor.create.

CampoTipoObligatorioDescripción
urlstringSíURL de la imagen a incrustar.
captionstringNoLeyenda de texto sin formato que se muestra debajo de la imagen.
altstringNoTexto alt para el elemento de imagen.
alignment'center' | 'left' | 'right'NoAlineación horizontal de la imagen. Uno de: center, left, right.
JSON
{
  "type": "image",
  "data": { "url": "/img/hero.jpg", "caption": "Hero image", "alt": "A hero", "alignment": "center" }
}

issues

Una tabla de las incidencias enlazadas derivada al renderizar de las fichas y tarjetas de incidencias de la página (incidencia, título, estado, responsable). No almacena datos propios.

Este bloque no almacena campos; las filas se derivan de las fichas y tarjetas de incidencias de la página al renderizar.

JSON
{
  "type": "issues",
  "data": {}
}

latex

Matemáticas LaTeX, almacenadas como fuente y compuestas al renderizar. Un mejor renderizador después mejora cada documento que ya existe.

CampoTipoObligatorioDescripción
sourcestringSíLa fuente LaTeX. Se almacena como fuente, nunca como salida renderizada.
JSON
{
  "type": "latex",
  "data": { "source": "\\frac{a}{b}" }
}

list

Lista ordenada o desordenada. Cada elemento es html.

CampoTipoObligatorioDescripción
type'ordered' | 'unordered'SíTipo de lista. Uno de: ordered, unordered.
itemsstring[]SíArray de cadenas HTML, una por elemento de lista.
JSON
{
  "type": "list",
  "data": { "type": "unordered", "items": ["First item", "Second item"] }
}

mermaid

Un diagrama Mermaid, almacenado como fuente y dibujado al mostrarse, nunca como ráster.

CampoTipoObligatorioDescripción
sourcestringSíLa fuente Mermaid. Se almacena como fuente, nunca como salida dibujada.
JSON
{
  "type": "mermaid",
  "data": { "source": "flowchart TD\n  A --> B" }
}

openapi

Renderiza una referencia de API interactiva a partir de un documento OpenAPI 3.x, en línea o traído de una URL, con selectores de servidor y fragmentos de código.

CampoTipoObligatorioDescripción
specobjectNoUn documento OpenAPI 3.x en línea. Gana sobre url cuando ambos están definidos.
urlstringNoDe dónde traer el documento OpenAPI al renderizar.
includeOpenApiFilterNoFiltro de qué operaciones renderizar.
excludeOpenApiFilterNoFiltro de qué operaciones ocultar.
defaultServerstringNoQué servidor selecciona la referencia por defecto.
snippetLanguagesCodeLanguage[]NoLenguajes ofrecidos para los fragmentos de solicitud.
JSON
{
  "type": "openapi",
  "data": { "url": "/api/openapi.json", "defaultServer": "https://api.example.com" }
}

paragraph

Párrafo de texto enriquecido. Acepta marcado de herramientas en línea como bold, italic, code, link, marker y tooltip.

CampoTipoObligatorioDescripción
htmlstringSíContenido HTML del párrafo. Se admite el marcado de herramientas en línea.
JSON
{
  "type": "paragraph",
  "data": { "html": "This is a <b>paragraph</b> with inline markup." }
}

quote

Cita en bloque con atribución de autor opcional.

CampoTipoObligatorioDescripción
htmlstringSíContenido HTML del cuerpo de la cita. Se admite el marcado de herramientas en línea.
authorstringNoAtribución de texto sin formato o HTML que se muestra debajo de la cita.
JSON
{
  "type": "quote",
  "data": { "html": "The best way to predict the future is to invent it.", "author": "Alan Kay" }
}

sketch

Un dibujo a mano alzada almacenado como trazos, nunca como ráster, así que sigue siendo editable y escala con nitidez.

CampoTipoObligatorioDescripción
strokesSketchStroke[]SíEl dibujo como trazos: cada trazo es una lista de puntos con color y ancho opcionales.
JSON
{
  "type": "sketch",
  "data": { "strokes": [{ "points": [0, 0, 10, 10], "color": "#ff0000", "width": 3 }] }
}

table

Cuadrícula de datos. La primera fila puede usarse como encabezado; cada celda es html.

CampoTipoObligatorioDescripción
datastring[][]SíArray bidimensional de cadenas de celdas HTML. La primera fila es la fila de encabezado.
captionstringNoLeyenda de texto sin formato o HTML que se muestra debajo de la tabla.
showDownloadbooleanNoMostrar un botón de descarga en la salida renderizada.
JSON
{
  "type": "table",
  "data": {
    "data": [["Name", "Type"], ["html", "string"], ["variant", "AlertVariant"]],
    "caption": "AlertData fields",
    "showDownload": false
  }
}

toc

Una tabla de contenidos derivada de los encabezados del documento al renderizar. No almacena datos propios.

Este bloque no almacena campos; la lista se deriva de los encabezados del documento al renderizar.

JSON
{
  "type": "toc",
  "data": {}
}

updates

Un feed de actividad en vivo para un documento. Almacena identidad, nunca una instantánea, así que sigue mostrando la actividad actual.

CampoTipoObligatorioDescripción
pageIdstringNoLa actividad de qué documento mostrar. Ausente significa el documento donde está el bloque.
JSON
{
  "type": "updates",
  "data": { "pageId": "p-7" }
}

video

Bloque de vídeo. Se consume mediante el callback videoUploader en Editor.create.

CampoTipoObligatorioDescripción
urlstringSíURL del archivo de video o enlace de incrustación de YouTube/Vimeo.
captionstringNoLeyenda de texto sin formato que se muestra debajo del reproductor.
altstringNoEtiqueta accesible para el elemento de video.
alignment'center' | 'left' | 'right'NoAlineación horizontal del reproductor. Uno de: center, left, right.
JSON
{
  "type": "video",
  "data": { "url": "/media/demo.mp4", "caption": "Product demo", "alignment": "center" }
}