pico-signals
Version:
A very simple signal library inspired by the 'signals' package
29 lines (21 loc) • 691 B
JavaScript
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
class PicoSignals {
constructor() {
_defineProperty(this, "listeners", new Set());
}
add(listener) {
this.listeners.add(listener);
return () => this.delete(listener);
}
delete(listener) {
return this.listeners.delete(listener);
}
clear() {
this.listeners.clear();
}
dispatch(...args) {
this.listeners.forEach(listener => listener(...args));
}
}
const createPicoSignals = () => new PicoSignals();
export default createPicoSignals;