transitionGenerator = function* (
view,
{ time = 1000, easing = Easing.Linear.None, states = getStates(view) } = {}
) {
if (!view.value) {
throw "Input must have a value set.";
}
const getWeights = makeGetWeights(states);
const getTransition = makeGetTransition(states);
let start = getWeights(view.value);
let tween = new TWEEN.Tween(start);
const inputted = () => {
tween
.stop()
.to(getWeights(view.value), time)
.easing(easing)
.start(undefined, true);
};
view.addEventListener("input", inputted);
while (true) {
tween.update();
yield getTransition(start);
}
return () => view.removeEventListener("input", inputted);
}