react-css-transition
Version:
CSS Transition Component for React
36 lines (34 loc) • 1.58 kB
JavaScript
import { withHandlers, isolate, onWillReceiveProps, onDidUpdate, onWillUnmount } from "reassemble";
export var timeoutMultiplier = 3;
export var withTimeout = isolate(withHandlers(function () {
var timeoutID;
return {
timeoutIn: function (_a) {
var timeout = _a.timeout;
return function (ms) { return timeoutID = setTimeout(timeout, ms); };
},
cancel: function () { return function () { return clearTimeout(timeoutID); }; },
};
}), onWillReceiveProps(function (_a, _b) {
var inTransition = _a.transitionState.inTransition, active = _a.active;
var nextInTransition = _b.transitionState.inTransition, cancel = _b.cancel, nextActive = _b.active;
var inTransitionChanged = inTransition !== nextInTransition;
var interrupted = nextInTransition && active !== nextActive;
if (inTransitionChanged || interrupted) {
cancel();
}
}), onDidUpdate(function (_a, _b) {
var inTransition = _a.transitionState.inTransition, active = _a.active;
var nextInTransition = _b.transitionState.inTransition, totalDuration = _b.transitionInfo.totalDuration, timeoutIn = _b.timeoutIn, nextActive = _b.active;
var newTransition = !inTransition && nextInTransition;
var interrupted = nextInTransition && active !== nextActive;
if (newTransition || interrupted) {
if (nextInTransition) {
timeoutIn(totalDuration * timeoutMultiplier);
}
}
}), onWillUnmount(function (_a) {
var cancel = _a.cancel;
return cancel();
}));
//# sourceMappingURL=withTimeout.js.map