API Reference
Complete API documentation.
Quick Navigation
Configuration
- Configuration Options - Main configuration object
- Seat Styling - Seat appearance options
- Block Styling - Block appearance options
- Label Styling - Label appearance options
Methods
- Seatmap Methods - Instance methods
- Seat Methods - Seat manipulation
- Block Methods - Block operations
Events
- Seat Events - Seat interaction events
- Block Events - Block interaction events
- Zoom Events - Zoom level changes
Models
- Seat Model - Seat data structure
- Block Model - Block data structure
- Data Model - Root data structure
Core Concepts
Instance Creation
import { SeatmapCanvas } from '@alisaitteke/seatmap-canvas';
const seatmap = new SeatmapCanvas(selector, options);
Data Loading
const data = {
blocks: [
{
id: 1,
title: "Section A",
seats: [...]
}
]
};
seatmap.setData(data);
Event Handling
seatmap.addEventListener("seat_click", (seat) => {
// Handle seat click
});
TypeScript Support
Seatmap Canvas includes full TypeScript definitions:
import type {
SeatmapOptions,
BlockData,
SeatData,
DataModel
} from '@alisaitteke/seatmap-canvas';
Architecture
SeatMapCanvas (Main Class)
├── EventManager - Handles all events
├── WindowManager - Window resize handling
├── ZoomManager - Zoom and pan controls
├── DataModel - Data management
│ └── BlockModel[] - Seat blocks
│ └── SeatModel[] - Individual seats
└── Svg - D3.js rendering
├── Stage - Main stage area
├── Legend - Legend component
└── Tooltip - Hover tooltips
Common Patterns
Seat Selection
// Select a seat
seatmap.addEventListener("seat_click", (seat) => {
if (seat.item.salable) {
if (seat.isSelected()) {
seat.unSelect();
} else {
seat.select();
}
}
});
Get Selected Seats
const selectedSeats = seatmap.getSelectedSeats();
console.log(`Selected ${selectedSeats.length} seats`);
Zoom Control
// Zoom to venue view
seatmap.zoomManager.zoomToVenue();
// Zoom to specific block
seatmap.zoomManager.zoomToBlock(blockId);
// Zoom to specific seat
seatmap.zoomManager.zoomToSeat(seatId, blockId);
Dynamic Data Updates
// Update seat availability
const seat = seatmap.data.blocks[0].seats[0];
seat.salable = false;
// Refresh the seatmap
seatmap.refresh();
Best Practices
Performance
- Use reasonable seat counts (< 10,000 seats for optimal performance)
- Optimize background images (< 500KB recommended)
- Leverage event delegation instead of individual listeners
Data Management
- Always provide unique IDs for seats and blocks
- Use
custom_datafor business logic - Keep coordinates as integers for pixel-perfect positioning
Event Handling
- Use the centralized
EventManagerfor communication - Clean up event listeners when destroying instances
- Leverage built-in events instead of DOM events
TypeScript
- Use provided type definitions for better IDE support
- Extend types for custom data structures
- Enable strict mode for type safety
Next Steps
- Explore Configuration Options
- Learn about Event System
- Check Examples