patronum
Version:
☄️ Effector utility library delivering modularity and convenience
32 lines • 592 B
JavaScript
import { is, sample, createStore } from 'effector';
export function once(unitOrConfig) {
var source;
var reset;
if (is.unit(unitOrConfig)) {
source = unitOrConfig;
} else {
({
source,
reset
} = unitOrConfig);
}
var $canTrigger = createStore(true, {
name: "$canTrigger",
sid: "ys2jl0"
});
var trigger = sample({
and: [{
source,
filter: $canTrigger
}],
or: {
name: "trigger",
sid: "e3xto3"
}
});
$canTrigger.on(trigger, () => false);
if (reset) {
$canTrigger.reset(reset);
}
return trigger;
}