react-tangle
Version:
A Simple State Management Library in React
35 lines (34 loc) • 1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createContext = function (initial) {
var root = initial || {};
var callbacks = {};
return {
stateOf: function (key) {
return root[key];
},
update: function (key, newV, caller) {
var oldV = root[key];
root[key] = newV;
setTimeout(function () {
// run listeners after next cycle
var cbs = callbacks[key] || [];
cbs.forEach(function (cb) {
cb(newV, oldV, caller);
});
}, 0);
},
subscribe: function (key, cb) {
var cbs = callbacks[key];
if (!cbs) {
cbs = [];
// fix this typing
callbacks[key] = cbs;
}
cbs.push(cb);
return function () {
cbs.splice(cbs.indexOf(cb), 1);
};
}
};
};