1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.createContext = void 0;
|
4 | exports.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 |
|
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 | };
|