@benev/slate
Version:
frontend web stuff
40 lines • 927 B
JavaScript
import { Op } from "../op/op.js";
import { Signal } from "./signal.js";
export class OpSignal extends Signal {
#relevant = 0;
constructor(op) {
super(op);
}
async load(fn) {
const id = ++this.#relevant;
return Op.load(op => {
if (this.#relevant === id)
this.value = op;
}, fn);
}
setLoading() {
this.value = Op.loading();
}
setError(reason) {
this.value = Op.error(reason);
}
setReady(payload) {
this.value = Op.ready(payload);
}
isLoading() {
return Op.is.loading(this.value);
}
isError() {
return Op.is.error(this.value);
}
isReady() {
return Op.is.ready(this.value);
}
get payload() {
return Op.payload(this.value);
}
select(choices) {
return Op.select(this.value, choices);
}
}
//# sourceMappingURL=op_signal.js.map