UNPKG

react-css-transition

Version:
55 lines (53 loc) 2.15 kB
import { withHandlers, onWillReceiveProps, onDidUpdate, isolate, integrate } from "reassemble"; export var preventPhantomEvents = isolate(withHandlers(function () { var lastTriggerTime; var lastTriggerTimePerformance; var timeUpdateRequested = false; return { requestTimeUpdate: function () { return function () { timeUpdateRequested = true; }; }, handleTimeUpdateRequest: function () { return function () { if (timeUpdateRequested) { lastTriggerTime = Date.now(); if (typeof performance !== "undefined" && typeof performance.now !== "undefined") { lastTriggerTimePerformance = performance.now(); } timeUpdateRequested = false; } }; }, onTransitionEnd: function (_a) { var onTransitionEnd = _a.onTransitionEnd; return function (e) { if (!onTransitionEnd) { return; } if (e.target !== e.currentTarget) { onTransitionEnd(e); return; } // Skip transitionEnd that comes <= 10ms after (reversing) a transition. // In most cases this came from the previous transition. var compareWith = lastTriggerTime; if (e.timeStamp < 1000000000000 && lastTriggerTimePerformance) { compareWith = lastTriggerTimePerformance; } if (e.timeStamp - compareWith <= 10) { return; } onTransitionEnd(e); }; }, }; }), onWillReceiveProps(function (_a, _b) { var active = _a.active; var nextActive = _b.active, requestTimeUpdate = _b.requestTimeUpdate; if (active !== nextActive) { requestTimeUpdate(); } }), onDidUpdate(function (_a) { var handleTimeUpdateRequest = _a.handleTimeUpdateRequest; return handleTimeUpdateRequest(); }), integrate("onTransitionEnd")); //# sourceMappingURL=preventPhantomEvents.js.map