UNPKG

sobs

Version:
31 lines 1.05 kB
"use strict"; 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