Reference · Bus de eventos
El widget se comunica con el host por dos canales públicos sobre window:
- CustomEvent emitidos — el host se suscribe.
- CustomEvent escuchados — el host los emite.
No hay postMessage público para integradores externos.
Resumen
| Tipo | Dirección | Nombre | Payload |
|---|---|---|---|
| CustomEvent | widget → host | neuroon-theme-change | { theme: 'light' | 'dark', containerId?: string } |
| CustomEvent | host → widget | neuroon: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:
- Si hay operaciones del propio widget en vuelo, se descarta (no pisa el estado optimista).
- Aplica debounce de 300 ms.
- 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
- Widget → Eventos — versión narrativa con ejemplos.
- Widget → Integración de carrito.
- Widget → Theming.