sobs
Version:
React observables
31 lines • 1.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../utils");
exports.default = (constructor) => class extends constructor {
constructor(...args) {
super(...args);
this.__sobs_listeners = {};
this.__sobs_addListener = (callback) => {
const id = utils_1.newId();
this.__sobs_listeners[id] = callback;
return id;
};
this.__sobs_removeListener = (id) => {
delete this.__sobs_listeners[id];
};
this.didChange = () => {
const listeners = Object.values(this.__sobs_listeners);
for (const listener of listeners)
listener();
};
return new Proxy(this, {
set: (target, key, value) => {
target[key] = value;
if (target[`__sobs_isPublished_${key}`])
target.didChange();
return true;
}
});
}
};
//# sourceMappingURL=ObservableObject.js.map