dphelper
Version:
dphelper devtools for developers
134 lines (100 loc) • 3.2 kB
Markdown
Custom event trigger system for application-wide event handling.
| Function | Description | Example |
|----------|-------------|---------|
| `add` | Add event listener | `dphelper.triggers.add(event, callback)` |
| `on` | Listen for event (alias for add) | `dphelper.triggers.on(event, callback)` |
| `emit` | Trigger an event with data | `dphelper.triggers.emit(event, data)` |
| `remove` | Remove all listeners for event | `dphelper.triggers.remove(event)` |
| `off` | Remove specific callback | `dphelper.triggers.off(event, callback)` |
| `clear` | Clear all triggers | `dphelper.triggers.clear()` |
| `list` | List all registered events | `dphelper.triggers.list()` |
## Description
Custom event system:
- **Event Listeners** - Add/remove custom event listeners
- **Event Emission** - Emit events with data payloads
- **Namespacing** - Organize events by name
- **Error Handling** - Safe callback execution
## Usage Examples
### Add Event Listeners
```javascript
// Listen for custom events
dphelper.triggers.add('user:login', (user) => {
console.log('User logged in:', user);
});
dphelper.triggers.on('data:loaded', (data) => {
console.log('Data received:', data);
});
```
```javascript
// Emit events with data
dphelper.triggers.emit('user:login', { id: 1, name: 'John' });
dphelper.triggers.emit('notification', {
type: 'success',
message: 'Operation complete!'
});
```
```javascript
// Remove all listeners for an event
dphelper.triggers.remove('user:login');
// Remove specific callback
const handler = (data) => console.log(data);
dphelper.triggers.on('event', handler);
// ... later
dphelper.triggers.off('event', handler);
```
```javascript
// See all registered events
const events = dphelper.triggers.list();
console.log(events); // ['user:login', 'data:loaded', ...]
// Clear all triggers
dphelper.triggers.clear();
```
```javascript
// Pub/Sub event system
class EventBus {
constructor() {
this.triggers = dphelper.triggers;
}
subscribe(event, callback) {
this.triggers.on(event, callback);
return () => this.triggers.off(event, callback);
}
publish(event, data) {
this.triggers.emit(event, data);
}
}
const bus = new EventBus();
// Subscribe
const unsubscribe = bus.subscribe('order:created', (order) => {
console.log('Order created:', order.id);
});
// Publish
bus.publish('order:created', { id: 123, total: 99.99 });
// Unsubscribe
unsubscribe();
```
```javascript
// Component A - Sender
function notifyUser(userId, message) {
dphelper.triggers.emit('notification', { userId, message });
}
// Component B - Receiver
dphelper.triggers.on('notification', ({ userId, message }) => {
showToast(`User ${userId}: ${message}`);
});
```
- **Author:** Dario Passariello
- **Version:** 0.0.1
- **Creation Date:** 20250220
- **Last Modified:** 20250220
- **Environment:** client (browser)
---
*Automatically generated document*