Skip to content

Instantly share code, notes, and snippets.

@pakastin
Forked from joona/store_factory.js
Created December 15, 2016 11:48
Show Gist options
  • Save pakastin/6d63b019021b636fb5369d136825e257 to your computer and use it in GitHub Desktop.
Save pakastin/6d63b019021b636fb5369d136825e257 to your computer and use it in GitHub Desktop.
Store factory, to be used with flux implementation, using CustomEvents
export default function storeFactory(obj) {
var element = document.createElement('div');
element.setAttribute('data-store', true);
var store = {};
store._element = element;
store._listeners = {};
store.listen = (name, callback) => {
element.addEventListener(name, e => {
callback(e, e.details);
});
store._listeners[name] || (store._listeners[name] = []);
store._listeners[name].push(callback);
};
store.dispatch = (name, details) => {
var event = new CustomEvent(name);
event.details = details;
element.dispatchEvent(event);
};
Object.assign(store, obj);
return store;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment