UNPKG

1.02 kBJavaScriptView Raw
1/**
2 * Observer class providing two methods: watch and dispatch.
3 * It also exposes a method for setting state: `setState`.
4 * `setState` works just like the same method on Composi class components.
5 * When you use `setState` it sends a message to an instance of DataStoreComponent to update itself.
6 */
7export class Observer {
8 constructor() {
9 this.events = {};
10 }
11
12 /**
13 * Method to subscribe to a publishing event.
14 * @param {string} event
15 * @param {Function} callback
16 * @return {Object.<string, any>} events
17 */
18 watch(event, callback) {
19 if (!this.events.hasOwnProperty(event)) {
20 this.events[event] = [];
21 }
22 return this.events[event].push(callback);
23 }
24
25 /**
26 *
27 * @param {string} event
28 * @param {any} data
29 * @return {any[]} events
30 */
31 dispatch(event, data = {}) {
32 // There's no event to dispatch to, so bail out:
33 if (!this.events.hasOwnProperty(event)) {
34 return [];
35 }
36 return this.events[event].map(callback => callback(data));
37 }
38}