fluidstate-preact
Version:
Library for using fine-grained reactivity state management library fluidstate in Preact
34 lines (32 loc) • 1.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Effect = void 0;
var _reactiveLayerHackyUtils = require("./reactive-layer-hacky-utils");
const PreactEffect = (0, _reactiveLayerHackyUtils.getPreactEffectClass)();
const callbackPropertyName = (0, _reactiveLayerHackyUtils.getCallbackName)();
/**
* Extension of `@preact/signals-core` Effect in order to add
* the ability to schedule effects. A variety of hacky deductions
* are made in order to extend the preact's Effect class
*/
class Effect extends PreactEffect {
constructor(fn, options) {
super(fn);
this.options = options;
this[callbackPropertyName]();
}
[callbackPropertyName]() {
if (this.options?.scheduler) {
this.options.scheduler(PreactEffect.prototype[callbackPropertyName].bind(this));
} else {
PreactEffect.prototype[callbackPropertyName].call(this);
}
}
stop() {
return this[(0, _reactiveLayerHackyUtils.getDisposePropertyName)()]();
}
}
exports.Effect = Effect;
//# sourceMappingURL=relative-layer-effect.js.map