tracked
Version:
A 300 byte @tracked property decorator for Preact.
24 lines (21 loc) • 489 B
JavaScript
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;