UNPKG

@exmg/lit-base

Version:
28 lines 1.18 kB
export const observer = (observer) => (proto, propName) => { // if we haven't wrapped `updated` in this class, do so if (!proto.constructor._observers) { proto.constructor._observers = new Map(); const userUpdated = proto.updated; proto.updated = function (changedProperties) { userUpdated.call(this, changedProperties); changedProperties.forEach((v, k) => { const o = this.constructor._observers.get(k); if (o !== undefined) { o.call(this, this[k], v); } }); }; // clone any existing observers (superclasses) // eslint-disable-next-line no-prototype-builtins } else if (!proto.constructor.hasOwnProperty('_observers')) { const observers = proto.constructor._observers; proto.constructor._observers = new Map(); observers.forEach( // eslint-disable-next-line @typescript-eslint/no-explicit-any (v, k) => proto.constructor._observers.set(k, v)); } // set this method proto.constructor._observers.set(propName, observer); }; //# sourceMappingURL=observer.js.map