fluxel
Version:
An ultra-lightweight, high-performance library for efficient DOM building and dynamic web UIs
47 lines (46 loc) • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return ReactiveDependency;
}
});
function _define_property(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
let ReactiveDependency = class ReactiveDependency {
get value() {
return this._accessor.get();
}
set value(val) {
this._accessor.set(val);
}
derive(fn) {
const derivedAccessor = {
get: ()=>fn(this.value),
set: (val)=>{
throw new TypeError("Cannot set value of derived dependency");
}
};
return new ReactiveDependency(derivedAccessor, this.addDependency);
}
constructor(_accessor, addDependency){
_define_property(this, "_accessor", void 0);
_define_property(this, "addDependency", void 0);
this._accessor = _accessor;
this.addDependency = addDependency;
}
};