Guía de la API v6
Mind Elixir Core 6.0 se publicó el 2026-11-02. Esta página recoge la API actual para selectores del DOM, operaciones con nodos, payloads de operación, tipos TypeScript y eventos del bus, además de las novedades de v6. El formato del documento no cambia.
1. Selectores del DOM
Los elementos internos del mapa son elementos <div> con clases me-*. Usa siempre selectores de clase:
.me-tpc { ... }
.me-main.lhs { ... }
.me-main.rhs { ... }
.me-main.down { ... }
const root = map.querySelector('.me-root')
Las clases disponibles son .me-main, .me-wrapper, .me-parent, .me-children, .me-tpc, .me-epd, .me-nodes y .me-root. Las clases de dirección están en .me-main.
Un id de nodo como id: 'me-root' en tus datos no es un selector CSS.
Consulta Estilos de rama personalizados para usar querySelector dentro de un generador de ramas.
2. Copiar y mover nodos
mind.copyNodes([node], to)
mind.moveNodesIn(nodes, to)
mind.moveNodesBefore(nodes, to)
mind.moveNodesAfter(nodes, to)
mind.moveUpNode(el)
mind.moveDownNode(el)
Cada método por lotes recibe un array de elementos Topic más un Topic de destino. Los nombres de operación correspondientes son copyNodes, moveNodesIn, moveNodesBefore y moveNodesAfter. Consulta Operaciones con nodos para ver la lista completa de firmas.
3. Payloads de operación
mind.bus.addListener('operation', operation => {
console.log(operation.name, operation.target)
if (['moveNodesIn', 'moveNodesBefore', 'moveNodesAfter'].includes(operation.name)) {
console.log(operation.destination)
}
})
operation es una unión discriminada sobre name. target es un único NodeObj para operaciones de un solo destino y un NodeObj[] para operaciones por lotes. destination contiene el destino del movimiento, position es 'before' | 'after' para insertSibling, y origin lleva el estado anterior para reshapeNode / finishEdit. Plegar y desplegar llegan como expandNode / collapseNode en el mismo evento.
4. Genéricos de TypeScript
import MindElixir, { type NodeObj, type Options } from 'mind-elixir'
type Metadata = { owner?: string; due?: string }
const options: Options<Metadata> = { el: '#map' }
const mind = new MindElixir<Metadata>(options)
const root: NodeObj<Metadata> = mind.nodeData
const Ctor: typeof MindElixir = MindElixir
const anotherMind = new Ctor<Metadata>({ el: '#map' })
Options, MindElixirData, NodeObj, NodeObjExport y Theme aceptan el mismo parámetro de tipo para metadatos. Consulta Compatibilidad con TypeScript.
5. Compilación ligera
import MindElixir from 'mind-elixir/lite'
// the built file is named MindElixirLite.js
6. Eventos de plegado y desplegado
mind.bus.addListener('operation', op => {
if (op.name === 'expandNode' || op.name === 'collapseNode') {
console.log('node: ', op.target)
console.log('silent: ', op.silent)
}
})
Plegar es un cambio en el documento y llega en operation. target es el NodeObj plegado; silent es true para los desplegados silenciosos internos y las llamadas { silent: true }, que no crean entradas en el historial. expandNode y expandNodeAll aceptan { silent: true }.
Novedades de v6
- Texto de derecha a izquierda. Pasa
rtl: trueaOptionspara cambiar a RTL los temas de los nodos, el editor, las etiquetas y el menú contextual (árabe, hebreo, persa, urdu). El eje de disposición de las ramas no se ve afectado. La configuración regionalarestá disponible enmind-elixir/i18n. - Outliner como punto de entrada propio.
import { Outliner } from 'mind-elixir/outliner'junto conmind-elixir/outliner/style.css. El punto de entrada principal sigue reexportándolo. Consulta Outliner. - Actualización incremental.
mind.diffRefresh(data)aplica solo la diferencia y conserva los elementos, los listeners y el estado de foco de los nodos que no cambian. Consulta Importación y exportación de datos. - Plegado deshacible.
Ctrl + Zrestaura el estado de plegado anterior; el mapa y el outliner comparten una única línea de tiempo de deshacer.expandNode/expandNodeAllaceptan{ silent: true }para omitir la entrada en el historial. - Navegación entre ramas.
ArrowDowndesde el último hijo yArrowUpdesde el primero saltan a la rama hermana más cercana. Consulta Atajos de teclado. - Renderizador Markdown en todas partes. La opción
markdownrenderiza los temas tanto en el mapa como en el outliner. Consulta Markdown y LaTeX. - Tema y foco. Llama explícitamente a
changeTheme(data.theme)para cambiar de tema;refresh(data)sale del modo enfoque y emite un eventorefresh;focusNode/cancelFocusvacían la pila de deshacer/rehacer.