UNPKG

tracked

Version:

A 300 byte @tracked property decorator for Preact.

24 lines (21 loc) 489 B
function tracked(obj, key, desc) { var setter = {}; function initialize() { var this$1 = this; Object.defineProperty(this, key, { configurable: true, get: function () { return this$1.state[key]; }, set: function (v) { setter[key] = v; this$1.setState(setter); } }); return this.state[key] = desc.initializer(); } return { configurable: true, set: function set(v) { initialize.call(this); this[key] = v; }, get: initialize }; } export default tracked;