UNPKG

tracked

Version:

A 300 byte @tracked property decorator for Preact.

20 lines (19 loc) 413 B
export default function tracked(obj, key, desc) { let setter = {}; function initialize() { Object.defineProperty(this, key, { configurable: true, get: () => this.state[key], set: v => { setter[key] = v; this.setState(setter); } }); return this.state[key] = desc.initializer(); } return { configurable: true, set(v) { initialize.call(this); this[key] = v; }, get: initialize }; }