UNPKG

1 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.createContext = void 0;
4exports.createContext = function (initial) {
5 var root = initial || {};
6 var callbacks = {};
7 return {
8 stateOf: function (key) {
9 return root[key];
10 },
11 update: function (key, newV, caller) {
12 var oldV = root[key];
13 root[key] = newV;
14 setTimeout(function () {
15 // run listeners after next cycle
16 var cbs = callbacks[key] || [];
17 cbs.forEach(function (cb) {
18 cb(newV, oldV, caller);
19 });
20 }, 0);
21 },
22 subscribe: function (key, cb) {
23 var cbs = callbacks[key];
24 if (!cbs) {
25 cbs = [];
26 callbacks[key] = cbs;
27 }
28 cbs.push(cb);
29 return function () {
30 cbs.splice(cbs.indexOf(cb), 1);
31 };
32 }
33 };
34};