Saltar al contenido principal

Reference · Bus de eventos

El widget se comunica con el host por dos canales públicos sobre window:

  1. CustomEvent emitidos — el host se suscribe.
  2. CustomEvent escuchados — el host los emite.

No hay postMessage público para integradores externos.

Resumen

TipoDirecciónNombrePayload
CustomEventwidget → hostneuroon-theme-change{ theme: 'light' | 'dark', containerId?: string }
CustomEventhost → widgetneuroon:cart-update(sin detail)

neuroon-theme-change (widget → host)

Se emite cuando el tema activo del widget cambia, sea porque el sistema cambió bajo theme="auto" o porque el host llamó widget.setTheme(...).

type NeuroonThemeChangeDetail = {
theme: 'light' | 'dark'
containerId?: string // sólo presente en cambios automáticos por sistema
}

window.addEventListener('neuroon-theme-change', (e) => {
const {theme, containerId} = (e as CustomEvent<NeuroonThemeChangeDetail>).detail
document.documentElement.dataset.theme = theme
// Si tienes múltiples instancias, filtra por containerId.
})

neuroon:cart-update (host → widget)

El host lo emite tras cualquier mutación del carrito fuera del widget (mini-cart, página de carrito, otro plugin). El listener ignora event.detail — al recibirlo, el widget llama a config.cart.onGetCart() para releer el carrito desde tu host.

// El listener ignora event.detail. Dispara sin payload.
window.dispatchEvent(new CustomEvent('neuroon:cart-update'))

Comportamiento:

  1. Si hay operaciones del propio widget en vuelo, se descarta (no pisa el estado optimista).
  2. Aplica debounce de 300 ms.
  3. Llama a config.cart.onGetCart() y actualiza su estado interno.

El nombre del evento es configurable vía cart.externalUpdateEvent (default 'neuroon:cart-update').

Reaccionar a búsquedas, clicks o conversiones

Suscríbete a los eventos DOM listados arriba o consume el endpoint de tracking server-side. Para casos avanzados, los callbacks onTokenExpiring / onTokenRefreshed de NeuroonWidgetConfig.callbacks te permiten orquestar la rotación del token desde el host.

Próximas lecturas