Canvas
Chaque survol, clic et zoom est un événement.
Abonnez-vous aux événements place, bloc, objet, section, étage et zoom avec une seule API d'écoute, et retrouvez vos métadonnées de place dans chaque payload.
Ça vous parle ?
Un plan qui ne parle pas
Scraper le DOM d'un widget pour savoir ce que l'utilisateur a cliqué, c'est de l'archéologie fragile. Une vraie API d'événements rapporte chaque interaction.
Polling de l'état
Lire la sélection dans une boucle timeout, c'est une condition de course déguisée. Les événements poussent dès que ça change.
Payloads sans contexte
Un clic qui dit « place 42 » et rien d'autre vous force à tout recalculer. custom_data renvoie vos ids, prix et refs.
Le plan est un composant, pas une boîte noire
01Un seul appel subscribeaddEventListener avec des noms d'événements simples, seat_click, zoom_level_change, changements d'étage, et consorts.
02La surface complètePlaces, blocs, objets, sections, étages, niveaux de zoom et ready. Chaque interaction se signale.
03Props natives au frameworkReact reçoit onSeatClick et consorts ; Vue émet @seat-click, mêmes événements, forme idiomatique.
04Métadonnées dans le payloadVotre custom_data revient avec chaque événement. L'intégration panier s'écrit toute seule.
05Granularité au survolMouse enter et leave sur les places alimentent tooltips et aperçus sans deviner.
06Conscient du cycle de vieREADY indique quand le plan est vraiment interactif, pas de course contre le rendu.
Brancher en quelques minutes
seatmap.ts
seatmap.addEventListener("ready", () => {console.log("plan en ligne");});seatmap.addEventListener("seat_click", (seat) => {// vos métadonnées reviennent à chaque événementcart.preview({priceId: seat.custom_data.priceId,label: seat.label,});});seatmap.addEventListener("zoom_level_change", (level) => {breadcrumbs.sync(level); // "venue" | "block" | "seat"});
TypeScript · seatmap-canvasseat_click · zoom_level_change
Écoutez le plan
Événements avec vos métadonnées, en direct en démo.