scheduler
Advanced tools
Comparing version 0.0.0-8b3c1e4-1d1a717 to 0.0.0-9ebe1768a
@@ -1,2 +0,2 @@ | ||
/** @license React v16.6.1 | ||
/** @license React v0.0.0-9ebe1768a | ||
* scheduler-tracing.development.js | ||
@@ -43,7 +43,16 @@ * | ||
// Only used in www builds. | ||
// TODO: true? Here it might just be false. | ||
// Only used in www builds. | ||
// Only used in www builds. | ||
// Disable javascript: URL strings in href for XSS protection. | ||
// Disables yielding during render in Concurrent Mode. Used for debugging only. | ||
// React Fire: prevent the value and checked attributes from syncing | ||
@@ -56,2 +65,14 @@ // with their related DOM properties | ||
// See https://github.com/react-native-community/discussions-and-proposals/issues/72 for more information | ||
// This is a flag so we can fix warnings in RN core before turning it on | ||
// Experimental React Events support. Only used in www builds for now. | ||
// New API for JSX transforms to target - https://github.com/reactjs/rfcs/pull/107 | ||
var DEFAULT_THREAD_ID = 0; | ||
@@ -58,0 +79,0 @@ |
@@ -1,2 +0,2 @@ | ||
/** @license React v16.6.1 | ||
/** @license React v0.0.0-9ebe1768a | ||
* scheduler-tracing.production.min.js | ||
@@ -3,0 +3,0 @@ * |
@@ -1,2 +0,2 @@ | ||
/** @license React v16.6.1 | ||
/** @license React v0.0.0-9ebe1768a | ||
* scheduler-tracing.profiling.min.js | ||
@@ -3,0 +3,0 @@ * |
@@ -1,2 +0,2 @@ | ||
/** @license React v16.6.1 | ||
/** @license React v0.0.0-9ebe1768a | ||
* scheduler.development.js | ||
@@ -20,2 +20,242 @@ * | ||
var enableSchedulerDebugging = false; | ||
// The DOM Scheduler implementation is similar to requestIdleCallback. It | ||
// works by scheduling a requestAnimationFrame, storing the time for the start | ||
// of the frame, then scheduling a postMessage which gets scheduled after paint. | ||
// Within the postMessage handler do as much work as possible until time + frame | ||
// rate. By separating the idle call into a separate event tick we ensure that | ||
// layout, paint and other browser work is counted against the available time. | ||
// The frame rate is dynamically adjusted. | ||
var requestHostCallback = void 0; | ||
var cancelHostCallback = void 0; | ||
var shouldYieldToHost = void 0; | ||
exports.unstable_now = void 0; | ||
var hasNativePerformanceNow = typeof performance === 'object' && typeof performance.now === 'function'; | ||
// We capture a local reference to any global, in case it gets polyfilled after | ||
// this module is initially evaluated. We want to be using a | ||
// consistent implementation. | ||
var localDate = Date; | ||
// This initialization code may run even on server environments if a component | ||
// just imports ReactDOM (e.g. for findDOMNode). Some environments might not | ||
// have setTimeout or clearTimeout. However, we always expect them to be defined | ||
// on the client. https://github.com/facebook/react/pull/13088 | ||
var localSetTimeout = typeof setTimeout === 'function' ? setTimeout : undefined; | ||
var localClearTimeout = typeof clearTimeout === 'function' ? clearTimeout : undefined; | ||
// We don't expect either of these to necessarily be defined, but we will error | ||
// later if they are missing on the client. | ||
var localRequestAnimationFrame = typeof requestAnimationFrame === 'function' ? requestAnimationFrame : undefined; | ||
var localCancelAnimationFrame = typeof cancelAnimationFrame === 'function' ? cancelAnimationFrame : undefined; | ||
// requestAnimationFrame does not run when the tab is in the background. If | ||
// we're backgrounded we prefer for that work to happen so that the page | ||
// continues to load in the background. So we also schedule a 'setTimeout' as | ||
// a fallback. | ||
// TODO: Need a better heuristic for backgrounded work. | ||
var ANIMATION_FRAME_TIMEOUT = 100; | ||
var rAFID = void 0; | ||
var rAFTimeoutID = void 0; | ||
var requestAnimationFrameWithTimeout = function (callback) { | ||
// schedule rAF and also a setTimeout | ||
rAFID = localRequestAnimationFrame(function (timestamp) { | ||
// cancel the setTimeout | ||
localClearTimeout(rAFTimeoutID); | ||
callback(timestamp); | ||
}); | ||
rAFTimeoutID = localSetTimeout(function () { | ||
// cancel the requestAnimationFrame | ||
localCancelAnimationFrame(rAFID); | ||
callback(exports.unstable_now()); | ||
}, ANIMATION_FRAME_TIMEOUT); | ||
}; | ||
if (hasNativePerformanceNow) { | ||
var Performance = performance; | ||
exports.unstable_now = function () { | ||
return Performance.now(); | ||
}; | ||
} else { | ||
exports.unstable_now = function () { | ||
return localDate.now(); | ||
}; | ||
} | ||
if ( | ||
// If Scheduler runs in a non-DOM environment, it falls back to a naive | ||
// implementation using setTimeout. | ||
typeof window === 'undefined' || | ||
// Check if MessageChannel is supported, too. | ||
typeof MessageChannel !== 'function') { | ||
// If this accidentally gets imported in a non-browser environment, e.g. JavaScriptCore, | ||
// fallback to a naive implementation. | ||
var _callback = null; | ||
var _flushCallback = function (didTimeout) { | ||
if (_callback !== null) { | ||
try { | ||
_callback(didTimeout); | ||
} finally { | ||
_callback = null; | ||
} | ||
} | ||
}; | ||
requestHostCallback = function (cb, ms) { | ||
if (_callback !== null) { | ||
// Protect against re-entrancy. | ||
setTimeout(requestHostCallback, 0, cb); | ||
} else { | ||
_callback = cb; | ||
setTimeout(_flushCallback, 0, false); | ||
} | ||
}; | ||
cancelHostCallback = function () { | ||
_callback = null; | ||
}; | ||
shouldYieldToHost = function () { | ||
return false; | ||
}; | ||
} else { | ||
if (typeof console !== 'undefined') { | ||
// TODO: Remove fb.me link | ||
if (typeof localRequestAnimationFrame !== 'function') { | ||
console.error("This browser doesn't support requestAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills'); | ||
} | ||
if (typeof localCancelAnimationFrame !== 'function') { | ||
console.error("This browser doesn't support cancelAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills'); | ||
} | ||
} | ||
var scheduledHostCallback = null; | ||
var isMessageEventScheduled = false; | ||
var timeoutTime = -1; | ||
var isAnimationFrameScheduled = false; | ||
var isFlushingHostCallback = false; | ||
var frameDeadline = 0; | ||
// We start out assuming that we run at 30fps but then the heuristic tracking | ||
// will adjust this value to a faster fps if we get more frequent animation | ||
// frames. | ||
var previousFrameTime = 33; | ||
var activeFrameTime = 33; | ||
shouldYieldToHost = function () { | ||
return frameDeadline <= exports.unstable_now(); | ||
}; | ||
// We use the postMessage trick to defer idle work until after the repaint. | ||
var channel = new MessageChannel(); | ||
var port = channel.port2; | ||
channel.port1.onmessage = function (event) { | ||
isMessageEventScheduled = false; | ||
var prevScheduledCallback = scheduledHostCallback; | ||
var prevTimeoutTime = timeoutTime; | ||
scheduledHostCallback = null; | ||
timeoutTime = -1; | ||
var currentTime = exports.unstable_now(); | ||
var didTimeout = false; | ||
if (frameDeadline - currentTime <= 0) { | ||
// There's no time left in this idle period. Check if the callback has | ||
// a timeout and whether it's been exceeded. | ||
if (prevTimeoutTime !== -1 && prevTimeoutTime <= currentTime) { | ||
// Exceeded the timeout. Invoke the callback even though there's no | ||
// time left. | ||
didTimeout = true; | ||
} else { | ||
// No timeout. | ||
if (!isAnimationFrameScheduled) { | ||
// Schedule another animation callback so we retry later. | ||
isAnimationFrameScheduled = true; | ||
requestAnimationFrameWithTimeout(animationTick); | ||
} | ||
// Exit without invoking the callback. | ||
scheduledHostCallback = prevScheduledCallback; | ||
timeoutTime = prevTimeoutTime; | ||
return; | ||
} | ||
} | ||
if (prevScheduledCallback !== null) { | ||
isFlushingHostCallback = true; | ||
try { | ||
prevScheduledCallback(didTimeout); | ||
} finally { | ||
isFlushingHostCallback = false; | ||
} | ||
} | ||
}; | ||
var animationTick = function (rafTime) { | ||
if (scheduledHostCallback !== null) { | ||
// Eagerly schedule the next animation callback at the beginning of the | ||
// frame. If the scheduler queue is not empty at the end of the frame, it | ||
// will continue flushing inside that callback. If the queue *is* empty, | ||
// then it will exit immediately. Posting the callback at the start of the | ||
// frame ensures it's fired within the earliest possible frame. If we | ||
// waited until the end of the frame to post the callback, we risk the | ||
// browser skipping a frame and not firing the callback until the frame | ||
// after that. | ||
requestAnimationFrameWithTimeout(animationTick); | ||
} else { | ||
// No pending work. Exit. | ||
isAnimationFrameScheduled = false; | ||
return; | ||
} | ||
var nextFrameTime = rafTime - frameDeadline + activeFrameTime; | ||
if (nextFrameTime < activeFrameTime && previousFrameTime < activeFrameTime) { | ||
if (nextFrameTime < 8) { | ||
// Defensive coding. We don't support higher frame rates than 120hz. | ||
// If the calculated frame time gets lower than 8, it is probably a bug. | ||
nextFrameTime = 8; | ||
} | ||
// If one frame goes long, then the next one can be short to catch up. | ||
// If two frames are short in a row, then that's an indication that we | ||
// actually have a higher frame rate than what we're currently optimizing. | ||
// We adjust our heuristic dynamically accordingly. For example, if we're | ||
// running on 120hz display or 90hz VR display. | ||
// Take the max of the two in case one of them was an anomaly due to | ||
// missed frame deadlines. | ||
activeFrameTime = nextFrameTime < previousFrameTime ? previousFrameTime : nextFrameTime; | ||
} else { | ||
previousFrameTime = nextFrameTime; | ||
} | ||
frameDeadline = rafTime + activeFrameTime; | ||
if (!isMessageEventScheduled) { | ||
isMessageEventScheduled = true; | ||
port.postMessage(undefined); | ||
} | ||
}; | ||
requestHostCallback = function (callback, absoluteTimeout) { | ||
scheduledHostCallback = callback; | ||
timeoutTime = absoluteTimeout; | ||
if (isFlushingHostCallback || absoluteTimeout < 0) { | ||
// Don't wait for the next frame. Continue working ASAP, in a new event. | ||
port.postMessage(undefined); | ||
} else if (!isAnimationFrameScheduled) { | ||
// If rAF didn't already schedule one, we need to schedule a frame. | ||
// TODO: If this rAF doesn't materialize because the browser throttles, we | ||
// might want to still have setTimeout trigger rIC as a backup to ensure | ||
// that we keep performing work. | ||
isAnimationFrameScheduled = true; | ||
requestAnimationFrameWithTimeout(animationTick); | ||
} | ||
}; | ||
cancelHostCallback = function () { | ||
scheduledHostCallback = null; | ||
isMessageEventScheduled = false; | ||
timeoutTime = -1; | ||
}; | ||
} | ||
/* eslint-disable no-var */ | ||
@@ -47,3 +287,6 @@ | ||
var currentDidTimeout = false; | ||
var currentHostCallbackDidTimeout = false; | ||
// Pausing the scheduler is useful for debugging. | ||
var isSchedulerPaused = false; | ||
var currentPriorityLevel = NormalPriority; | ||
@@ -53,27 +296,27 @@ var currentEventStartTime = -1; | ||
// This is set when a callback is being executed, to prevent re-entrancy. | ||
var isExecutingCallback = false; | ||
// This is set while performing work, to prevent re-entrancy. | ||
var isPerformingWork = false; | ||
var isHostCallbackScheduled = false; | ||
var hasNativePerformanceNow = typeof performance === 'object' && typeof performance.now === 'function'; | ||
function ensureHostCallbackIsScheduled() { | ||
if (isExecutingCallback) { | ||
function scheduleHostCallbackIfNeeded() { | ||
if (isPerformingWork) { | ||
// Don't schedule work yet; wait until the next time we yield. | ||
return; | ||
} | ||
// Schedule the host callback using the earliest expiration in the list. | ||
var expirationTime = firstCallbackNode.expirationTime; | ||
if (!isHostCallbackScheduled) { | ||
isHostCallbackScheduled = true; | ||
} else { | ||
// Cancel the existing host callback. | ||
cancelHostCallback(); | ||
if (firstCallbackNode !== null) { | ||
// Schedule the host callback using the earliest expiration in the list. | ||
var expirationTime = firstCallbackNode.expirationTime; | ||
if (isHostCallbackScheduled) { | ||
// Cancel the existing host callback. | ||
cancelHostCallback(); | ||
} else { | ||
isHostCallbackScheduled = true; | ||
} | ||
requestHostCallback(flushWork, expirationTime); | ||
} | ||
requestHostCallback(flushWork, expirationTime); | ||
} | ||
function flushFirstCallback() { | ||
var flushedNode = firstCallbackNode; | ||
var currentlyFlushingCallback = firstCallbackNode; | ||
@@ -93,8 +336,8 @@ // Remove the node from the list before calling the callback. That way the | ||
flushedNode.next = flushedNode.previous = null; | ||
currentlyFlushingCallback.next = currentlyFlushingCallback.previous = null; | ||
// Now it's safe to call the callback. | ||
var callback = flushedNode.callback; | ||
var expirationTime = flushedNode.expirationTime; | ||
var priorityLevel = flushedNode.priorityLevel; | ||
var callback = currentlyFlushingCallback.callback; | ||
var expirationTime = currentlyFlushingCallback.expirationTime; | ||
var priorityLevel = currentlyFlushingCallback.priorityLevel; | ||
var previousPriorityLevel = currentPriorityLevel; | ||
@@ -106,3 +349,8 @@ var previousExpirationTime = currentExpirationTime; | ||
try { | ||
continuationCallback = callback(); | ||
var didUserCallbackTimeout = currentHostCallbackDidTimeout || | ||
// Immediate priority callbacks are always called as if they timed out | ||
priorityLevel === ImmediatePriority; | ||
continuationCallback = callback(didUserCallbackTimeout); | ||
} catch (error) { | ||
throw error; | ||
} finally { | ||
@@ -151,3 +399,3 @@ currentPriorityLevel = previousPriorityLevel; | ||
firstCallbackNode = continuationNode; | ||
ensureHostCallbackIsScheduled(); | ||
scheduleHostCallbackIfNeeded(); | ||
} | ||
@@ -163,33 +411,19 @@ | ||
function flushImmediateWork() { | ||
if ( | ||
// Confirm we've exited the outer most event handler | ||
currentEventStartTime === -1 && firstCallbackNode !== null && firstCallbackNode.priorityLevel === ImmediatePriority) { | ||
isExecutingCallback = true; | ||
try { | ||
do { | ||
flushFirstCallback(); | ||
} while ( | ||
// Keep flushing until there are no more immediate callbacks | ||
firstCallbackNode !== null && firstCallbackNode.priorityLevel === ImmediatePriority); | ||
} finally { | ||
isExecutingCallback = false; | ||
if (firstCallbackNode !== null) { | ||
// There's still work remaining. Request another callback. | ||
ensureHostCallbackIsScheduled(); | ||
} else { | ||
isHostCallbackScheduled = false; | ||
} | ||
} | ||
function flushWork(didUserCallbackTimeout) { | ||
// Exit right away if we're currently paused | ||
if (enableSchedulerDebugging && isSchedulerPaused) { | ||
return; | ||
} | ||
} | ||
function flushWork(didTimeout) { | ||
isExecutingCallback = true; | ||
var previousDidTimeout = currentDidTimeout; | ||
currentDidTimeout = didTimeout; | ||
// We'll need a new host callback the next time work is scheduled. | ||
isHostCallbackScheduled = false; | ||
isPerformingWork = true; | ||
var previousDidTimeout = currentHostCallbackDidTimeout; | ||
currentHostCallbackDidTimeout = didUserCallbackTimeout; | ||
try { | ||
if (didTimeout) { | ||
if (didUserCallbackTimeout) { | ||
// Flush all the expired callbacks without yielding. | ||
while (firstCallbackNode !== null) { | ||
while (firstCallbackNode !== null && !(enableSchedulerDebugging && isSchedulerPaused)) { | ||
// TODO Wrap in feature flag | ||
// Read the current time. Flush all the callbacks that expire at or | ||
@@ -202,3 +436,3 @@ // earlier than that time. Then read the current time again and repeat. | ||
flushFirstCallback(); | ||
} while (firstCallbackNode !== null && firstCallbackNode.expirationTime <= currentTime); | ||
} while (firstCallbackNode !== null && firstCallbackNode.expirationTime <= currentTime && !(enableSchedulerDebugging && isSchedulerPaused)); | ||
continue; | ||
@@ -212,2 +446,5 @@ } | ||
do { | ||
if (enableSchedulerDebugging && isSchedulerPaused) { | ||
break; | ||
} | ||
flushFirstCallback(); | ||
@@ -218,12 +455,6 @@ } while (firstCallbackNode !== null && !shouldYieldToHost()); | ||
} finally { | ||
isExecutingCallback = false; | ||
currentDidTimeout = previousDidTimeout; | ||
if (firstCallbackNode !== null) { | ||
// There's still work remaining. Request another callback. | ||
ensureHostCallbackIsScheduled(); | ||
} else { | ||
isHostCallbackScheduled = false; | ||
} | ||
// Before exiting, flush all the immediate work that was scheduled. | ||
flushImmediateWork(); | ||
isPerformingWork = false; | ||
currentHostCallbackDidTimeout = previousDidTimeout; | ||
// There's still work remaining. Request another callback. | ||
scheduleHostCallbackIfNeeded(); | ||
} | ||
@@ -251,9 +482,42 @@ } | ||
return eventHandler(); | ||
} catch (error) { | ||
// There's still work remaining. Request another callback. | ||
scheduleHostCallbackIfNeeded(); | ||
throw error; | ||
} finally { | ||
currentPriorityLevel = previousPriorityLevel; | ||
currentEventStartTime = previousEventStartTime; | ||
} | ||
} | ||
// Before exiting, flush all the immediate work that was scheduled. | ||
flushImmediateWork(); | ||
function unstable_next(eventHandler) { | ||
var priorityLevel = void 0; | ||
switch (currentPriorityLevel) { | ||
case ImmediatePriority: | ||
case UserBlockingPriority: | ||
case NormalPriority: | ||
// Shift down to normal priority | ||
priorityLevel = NormalPriority; | ||
break; | ||
default: | ||
// Anything lower than normal priority should remain at the current level. | ||
priorityLevel = currentPriorityLevel; | ||
break; | ||
} | ||
var previousPriorityLevel = currentPriorityLevel; | ||
var previousEventStartTime = currentEventStartTime; | ||
currentPriorityLevel = priorityLevel; | ||
currentEventStartTime = exports.unstable_now(); | ||
try { | ||
return eventHandler(); | ||
} catch (error) { | ||
// There's still work remaining. Request another callback. | ||
scheduleHostCallbackIfNeeded(); | ||
throw error; | ||
} finally { | ||
currentPriorityLevel = previousPriorityLevel; | ||
currentEventStartTime = previousEventStartTime; | ||
} | ||
} | ||
@@ -272,6 +536,9 @@ | ||
return callback.apply(this, arguments); | ||
} catch (error) { | ||
// There's still work remaining. Request another callback. | ||
scheduleHostCallbackIfNeeded(); | ||
throw error; | ||
} finally { | ||
currentPriorityLevel = previousPriorityLevel; | ||
currentEventStartTime = previousEventStartTime; | ||
flushImmediateWork(); | ||
} | ||
@@ -281,3 +548,3 @@ }; | ||
function unstable_scheduleCallback(callback, deprecated_options) { | ||
function unstable_scheduleCallback(priorityLevel, callback, deprecated_options) { | ||
var startTime = currentEventStartTime !== -1 ? currentEventStartTime : exports.unstable_now(); | ||
@@ -290,3 +557,3 @@ | ||
} else { | ||
switch (currentPriorityLevel) { | ||
switch (priorityLevel) { | ||
case ImmediatePriority: | ||
@@ -312,3 +579,3 @@ expirationTime = startTime + IMMEDIATE_PRIORITY_TIMEOUT; | ||
callback: callback, | ||
priorityLevel: currentPriorityLevel, | ||
priorityLevel: priorityLevel, | ||
expirationTime: expirationTime, | ||
@@ -325,3 +592,3 @@ next: null, | ||
firstCallbackNode = newNode.next = newNode.previous = newNode; | ||
ensureHostCallbackIsScheduled(); | ||
scheduleHostCallbackIfNeeded(); | ||
} else { | ||
@@ -346,3 +613,3 @@ var next = null; | ||
firstCallbackNode = newNode; | ||
ensureHostCallbackIsScheduled(); | ||
scheduleHostCallbackIfNeeded(); | ||
} | ||
@@ -359,2 +626,17 @@ | ||
function unstable_pauseExecution() { | ||
isSchedulerPaused = true; | ||
} | ||
function unstable_continueExecution() { | ||
isSchedulerPaused = false; | ||
if (firstCallbackNode !== null) { | ||
scheduleHostCallbackIfNeeded(); | ||
} | ||
} | ||
function unstable_getFirstCallbackNode() { | ||
return firstCallbackNode; | ||
} | ||
function unstable_cancelCallback(callbackNode) { | ||
@@ -388,259 +670,5 @@ var next = callbackNode.next; | ||
function unstable_shouldYield() { | ||
return !currentDidTimeout && (firstCallbackNode !== null && firstCallbackNode.expirationTime < currentExpirationTime || shouldYieldToHost()); | ||
return !currentHostCallbackDidTimeout && (firstCallbackNode !== null && firstCallbackNode.expirationTime < currentExpirationTime || shouldYieldToHost()); | ||
} | ||
// The remaining code is essentially a polyfill for requestIdleCallback. It | ||
// works by scheduling a requestAnimationFrame, storing the time for the start | ||
// of the frame, then scheduling a postMessage which gets scheduled after paint. | ||
// Within the postMessage handler do as much work as possible until time + frame | ||
// rate. By separating the idle call into a separate event tick we ensure that | ||
// layout, paint and other browser work is counted against the available time. | ||
// The frame rate is dynamically adjusted. | ||
// We capture a local reference to any global, in case it gets polyfilled after | ||
// this module is initially evaluated. We want to be using a | ||
// consistent implementation. | ||
var localDate = Date; | ||
// This initialization code may run even on server environments if a component | ||
// just imports ReactDOM (e.g. for findDOMNode). Some environments might not | ||
// have setTimeout or clearTimeout. However, we always expect them to be defined | ||
// on the client. https://github.com/facebook/react/pull/13088 | ||
var localSetTimeout = typeof setTimeout === 'function' ? setTimeout : undefined; | ||
var localClearTimeout = typeof clearTimeout === 'function' ? clearTimeout : undefined; | ||
// We don't expect either of these to necessarily be defined, but we will error | ||
// later if they are missing on the client. | ||
var localRequestAnimationFrame = typeof requestAnimationFrame === 'function' ? requestAnimationFrame : undefined; | ||
var localCancelAnimationFrame = typeof cancelAnimationFrame === 'function' ? cancelAnimationFrame : undefined; | ||
// requestAnimationFrame does not run when the tab is in the background. If | ||
// we're backgrounded we prefer for that work to happen so that the page | ||
// continues to load in the background. So we also schedule a 'setTimeout' as | ||
// a fallback. | ||
// TODO: Need a better heuristic for backgrounded work. | ||
var ANIMATION_FRAME_TIMEOUT = 100; | ||
var rAFID; | ||
var rAFTimeoutID; | ||
var requestAnimationFrameWithTimeout = function (callback) { | ||
// schedule rAF and also a setTimeout | ||
rAFID = localRequestAnimationFrame(function (timestamp) { | ||
// cancel the setTimeout | ||
localClearTimeout(rAFTimeoutID); | ||
callback(timestamp); | ||
}); | ||
rAFTimeoutID = localSetTimeout(function () { | ||
// cancel the requestAnimationFrame | ||
localCancelAnimationFrame(rAFID); | ||
callback(exports.unstable_now()); | ||
}, ANIMATION_FRAME_TIMEOUT); | ||
}; | ||
if (hasNativePerformanceNow) { | ||
var Performance = performance; | ||
exports.unstable_now = function () { | ||
return Performance.now(); | ||
}; | ||
} else { | ||
exports.unstable_now = function () { | ||
return localDate.now(); | ||
}; | ||
} | ||
var requestHostCallback; | ||
var cancelHostCallback; | ||
var shouldYieldToHost; | ||
if (typeof window !== 'undefined' && window._schedMock) { | ||
// Dynamic injection, only for testing purposes. | ||
var impl = window._schedMock; | ||
requestHostCallback = impl[0]; | ||
cancelHostCallback = impl[1]; | ||
shouldYieldToHost = impl[2]; | ||
} else if ( | ||
// If Scheduler runs in a non-DOM environment, it falls back to a naive | ||
// implementation using setTimeout. | ||
typeof window === 'undefined' || | ||
// "addEventListener" might not be available on the window object | ||
// if this is a mocked "window" object. So we need to validate that too. | ||
typeof window.addEventListener !== 'function') { | ||
var _callback = null; | ||
var _currentTime = -1; | ||
var _flushCallback = function (didTimeout, ms) { | ||
if (_callback !== null) { | ||
var cb = _callback; | ||
_callback = null; | ||
try { | ||
_currentTime = ms; | ||
cb(didTimeout); | ||
} finally { | ||
_currentTime = -1; | ||
} | ||
} | ||
}; | ||
requestHostCallback = function (cb, ms) { | ||
if (_currentTime !== -1) { | ||
// Protect against re-entrancy. | ||
setTimeout(requestHostCallback, 0, cb, ms); | ||
} else { | ||
_callback = cb; | ||
setTimeout(_flushCallback, ms, true, ms); | ||
setTimeout(_flushCallback, maxSigned31BitInt, false, maxSigned31BitInt); | ||
} | ||
}; | ||
cancelHostCallback = function () { | ||
_callback = null; | ||
}; | ||
shouldYieldToHost = function () { | ||
return false; | ||
}; | ||
exports.unstable_now = function () { | ||
return _currentTime === -1 ? 0 : _currentTime; | ||
}; | ||
} else { | ||
if (typeof console !== 'undefined') { | ||
// TODO: Remove fb.me link | ||
if (typeof localRequestAnimationFrame !== 'function') { | ||
console.error("This browser doesn't support requestAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills'); | ||
} | ||
if (typeof localCancelAnimationFrame !== 'function') { | ||
console.error("This browser doesn't support cancelAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills'); | ||
} | ||
} | ||
var scheduledHostCallback = null; | ||
var isMessageEventScheduled = false; | ||
var timeoutTime = -1; | ||
var isAnimationFrameScheduled = false; | ||
var isFlushingHostCallback = false; | ||
var frameDeadline = 0; | ||
// We start out assuming that we run at 30fps but then the heuristic tracking | ||
// will adjust this value to a faster fps if we get more frequent animation | ||
// frames. | ||
var previousFrameTime = 33; | ||
var activeFrameTime = 33; | ||
shouldYieldToHost = function () { | ||
return frameDeadline <= exports.unstable_now(); | ||
}; | ||
// We use the postMessage trick to defer idle work until after the repaint. | ||
var messageKey = '__reactIdleCallback$' + Math.random().toString(36).slice(2); | ||
var idleTick = function (event) { | ||
if (event.source !== window || event.data !== messageKey) { | ||
return; | ||
} | ||
isMessageEventScheduled = false; | ||
var prevScheduledCallback = scheduledHostCallback; | ||
var prevTimeoutTime = timeoutTime; | ||
scheduledHostCallback = null; | ||
timeoutTime = -1; | ||
var currentTime = exports.unstable_now(); | ||
var didTimeout = false; | ||
if (frameDeadline - currentTime <= 0) { | ||
// There's no time left in this idle period. Check if the callback has | ||
// a timeout and whether it's been exceeded. | ||
if (prevTimeoutTime !== -1 && prevTimeoutTime <= currentTime) { | ||
// Exceeded the timeout. Invoke the callback even though there's no | ||
// time left. | ||
didTimeout = true; | ||
} else { | ||
// No timeout. | ||
if (!isAnimationFrameScheduled) { | ||
// Schedule another animation callback so we retry later. | ||
isAnimationFrameScheduled = true; | ||
requestAnimationFrameWithTimeout(animationTick); | ||
} | ||
// Exit without invoking the callback. | ||
scheduledHostCallback = prevScheduledCallback; | ||
timeoutTime = prevTimeoutTime; | ||
return; | ||
} | ||
} | ||
if (prevScheduledCallback !== null) { | ||
isFlushingHostCallback = true; | ||
try { | ||
prevScheduledCallback(didTimeout); | ||
} finally { | ||
isFlushingHostCallback = false; | ||
} | ||
} | ||
}; | ||
// Assumes that we have addEventListener in this environment. Might need | ||
// something better for old IE. | ||
window.addEventListener('message', idleTick, false); | ||
var animationTick = function (rafTime) { | ||
if (scheduledHostCallback !== null) { | ||
// Eagerly schedule the next animation callback at the beginning of the | ||
// frame. If the scheduler queue is not empty at the end of the frame, it | ||
// will continue flushing inside that callback. If the queue *is* empty, | ||
// then it will exit immediately. Posting the callback at the start of the | ||
// frame ensures it's fired within the earliest possible frame. If we | ||
// waited until the end of the frame to post the callback, we risk the | ||
// browser skipping a frame and not firing the callback until the frame | ||
// after that. | ||
requestAnimationFrameWithTimeout(animationTick); | ||
} else { | ||
// No pending work. Exit. | ||
isAnimationFrameScheduled = false; | ||
return; | ||
} | ||
var nextFrameTime = rafTime - frameDeadline + activeFrameTime; | ||
if (nextFrameTime < activeFrameTime && previousFrameTime < activeFrameTime) { | ||
if (nextFrameTime < 8) { | ||
// Defensive coding. We don't support higher frame rates than 120hz. | ||
// If the calculated frame time gets lower than 8, it is probably a bug. | ||
nextFrameTime = 8; | ||
} | ||
// If one frame goes long, then the next one can be short to catch up. | ||
// If two frames are short in a row, then that's an indication that we | ||
// actually have a higher frame rate than what we're currently optimizing. | ||
// We adjust our heuristic dynamically accordingly. For example, if we're | ||
// running on 120hz display or 90hz VR display. | ||
// Take the max of the two in case one of them was an anomaly due to | ||
// missed frame deadlines. | ||
activeFrameTime = nextFrameTime < previousFrameTime ? previousFrameTime : nextFrameTime; | ||
} else { | ||
previousFrameTime = nextFrameTime; | ||
} | ||
frameDeadline = rafTime + activeFrameTime; | ||
if (!isMessageEventScheduled) { | ||
isMessageEventScheduled = true; | ||
window.postMessage(messageKey, '*'); | ||
} | ||
}; | ||
requestHostCallback = function (callback, absoluteTimeout) { | ||
scheduledHostCallback = callback; | ||
timeoutTime = absoluteTimeout; | ||
if (isFlushingHostCallback || absoluteTimeout < 0) { | ||
// Don't wait for the next frame. Continue working ASAP, in a new event. | ||
window.postMessage(messageKey, '*'); | ||
} else if (!isAnimationFrameScheduled) { | ||
// If rAF didn't already schedule one, we need to schedule a frame. | ||
// TODO: If this rAF doesn't materialize because the browser throttles, we | ||
// might want to still have setTimeout trigger rIC as a backup to ensure | ||
// that we keep performing work. | ||
isAnimationFrameScheduled = true; | ||
requestAnimationFrameWithTimeout(animationTick); | ||
} | ||
}; | ||
cancelHostCallback = function () { | ||
scheduledHostCallback = null; | ||
isMessageEventScheduled = false; | ||
timeoutTime = -1; | ||
}; | ||
} | ||
exports.unstable_ImmediatePriority = ImmediatePriority; | ||
@@ -652,2 +680,3 @@ exports.unstable_UserBlockingPriority = UserBlockingPriority; | ||
exports.unstable_runWithPriority = unstable_runWithPriority; | ||
exports.unstable_next = unstable_next; | ||
exports.unstable_scheduleCallback = unstable_scheduleCallback; | ||
@@ -658,3 +687,6 @@ exports.unstable_cancelCallback = unstable_cancelCallback; | ||
exports.unstable_shouldYield = unstable_shouldYield; | ||
exports.unstable_continueExecution = unstable_continueExecution; | ||
exports.unstable_pauseExecution = unstable_pauseExecution; | ||
exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode; | ||
})(); | ||
} |
@@ -1,2 +0,2 @@ | ||
/** @license React v16.6.1 | ||
/** @license React v0.0.0-9ebe1768a | ||
* scheduler.production.min.js | ||
@@ -10,13 +10,12 @@ * | ||
'use strict';Object.defineProperty(exports,"__esModule",{value:!0});var d=null,f=!1,h=3,k=-1,l=-1,m=!1,n=!1;function p(){if(!m){var a=d.expirationTime;n?q():n=!0;r(t,a)}} | ||
function u(){var a=d,b=d.next;if(d===b)d=null;else{var c=d.previous;d=c.next=b;b.previous=c}a.next=a.previous=null;c=a.callback;b=a.expirationTime;a=a.priorityLevel;var e=h,Q=l;h=a;l=b;try{var g=c()}finally{h=e,l=Q}if("function"===typeof g)if(g={callback:g,priorityLevel:a,expirationTime:b,next:null,previous:null},null===d)d=g.next=g.previous=g;else{c=null;a=d;do{if(a.expirationTime>=b){c=a;break}a=a.next}while(a!==d);null===c?c=d:c===d&&(d=g,p());b=c.previous;b.next=c.previous=g;g.next=c;g.previous= | ||
b}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1,null!==d?p():n=!1}}}function t(a){m=!0;var b=f;f=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1,f=b,null!==d?p():n=!1,v()}} | ||
var x=Date,y="function"===typeof setTimeout?setTimeout:void 0,z="function"===typeof clearTimeout?clearTimeout:void 0,A="function"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B="function"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)} | ||
if("object"===typeof performance&&"function"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w; | ||
if("undefined"!==typeof window&&window._schedMock){var G=window._schedMock;r=G[0];q=G[1];w=G[2]}else if("undefined"===typeof window||"function"!==typeof window.addEventListener){var H=null,I=-1,J=function(a,b){if(null!==H){var c=H;H=null;try{I=b,c(a)}finally{I=-1}}};r=function(a,b){-1!==I?setTimeout(r,0,a,b):(H=a,setTimeout(J,b,!0,b),setTimeout(J,1073741823,!1,1073741823))};q=function(){H=null};w=function(){return!1};exports.unstable_now=function(){return-1===I?0:I}}else{"undefined"!==typeof console&& | ||
("function"!==typeof A&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!==typeof B&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T="__reactIdleCallback$"+Math.random().toString(36).slice(2); | ||
window.addEventListener("message",function(a){if(a.source===window&&a.data===T){L=!1;a=K;var b=M;K=null;M=-1;var c=exports.unstable_now(),e=!1;if(0>=P-c)if(-1!==b&&b<=c)e=!0;else{N||(N=!0,E(U));K=a;M=b;return}if(null!==a){O=!0;try{a(e)}finally{O=!1}}}},!1);var U=function(a){if(null!==K){E(U);var b=a-P+S;b<S&&R<S?(8>b&&(b=8),S=b<R?R:b):R=b;P=a+S;L||(L=!0,window.postMessage(T,"*"))}else N=!1};r=function(a,b){K=a;M=b;O||0>b?window.postMessage(T,"*"):N||(N=!0,E(U))};q=function(){K=null;L=!1;M=-1}} | ||
exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=h,e=k;h=a;k=exports.unstable_now();try{return b()}finally{h=c,k=e,v()}}; | ||
exports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if("object"===typeof b&&null!==b&&"number"===typeof b.timeout)b=c+b.timeout;else switch(h){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3}a={callback:a,priorityLevel:h,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a,p();else{c=null;var e=d;do{if(e.expirationTime>b){c=e;break}e=e.next}while(e!==d);null===c?c=d:c===d&&(d=a,p()); | ||
b=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=h;return function(){var c=h,e=k;h=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{h=c,k=e,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return h}; | ||
exports.unstable_shouldYield=function(){return!f&&(null!==d&&d.expirationTime<l||w())}; | ||
'use strict';Object.defineProperty(exports,"__esModule",{value:!0});var d=void 0,f=void 0,g=void 0;exports.unstable_now=void 0;var k=Date,m="function"===typeof setTimeout?setTimeout:void 0,n="function"===typeof clearTimeout?clearTimeout:void 0,p="function"===typeof requestAnimationFrame?requestAnimationFrame:void 0,q="function"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,r=void 0,t=void 0;function u(a){r=p(function(b){n(t);a(b)});t=m(function(){q(r);a(exports.unstable_now())},100)} | ||
if("object"===typeof performance&&"function"===typeof performance.now){var v=performance;exports.unstable_now=function(){return v.now()}}else exports.unstable_now=function(){return k.now()}; | ||
if("undefined"===typeof window||"function"!==typeof MessageChannel){var w=null,x=function(a){if(null!==w)try{w(a)}finally{w=null}};d=function(a){null!==w?setTimeout(d,0,a):(w=a,setTimeout(x,0,!1))};f=function(){w=null};g=function(){return!1}}else{"undefined"!==typeof console&&("function"!==typeof p&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!==typeof q&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")); | ||
var y=null,z=!1,A=-1,B=!1,C=!1,D=0,E=33,F=33;g=function(){return D<=exports.unstable_now()};var G=new MessageChannel,H=G.port2;G.port1.onmessage=function(){z=!1;var a=y,b=A;y=null;A=-1;var c=exports.unstable_now(),e=!1;if(0>=D-c)if(-1!==b&&b<=c)e=!0;else{B||(B=!0,u(I));y=a;A=b;return}if(null!==a){C=!0;try{a(e)}finally{C=!1}}};var I=function(a){if(null!==y){u(I);var b=a-D+F;b<F&&E<F?(8>b&&(b=8),F=b<E?E:b):E=b;D=a+F;z||(z=!0,H.postMessage(void 0))}else B=!1};d=function(a,b){y=a;A=b;C||0>b?H.postMessage(void 0): | ||
B||(B=!0,u(I))};f=function(){y=null;z=!1;A=-1}}var J=null,K=!1,L=3,M=-1,N=-1,O=!1,P=!1;function Q(){if(!O&&null!==J){var a=J.expirationTime;P?f():P=!0;d(R,a)}} | ||
function S(){var a=J,b=J.next;if(J===b)J=null;else{var c=J.previous;J=c.next=b;b.previous=c}a.next=a.previous=null;c=a.callback;b=a.expirationTime;a=a.priorityLevel;var e=L,l=N;L=a;N=b;try{var h=c(K||1===a)}catch(T){throw T;}finally{L=e,N=l}if("function"===typeof h)if(h={callback:h,priorityLevel:a,expirationTime:b,next:null,previous:null},null===J)J=h.next=h.previous=h;else{c=null;a=J;do{if(a.expirationTime>=b){c=a;break}a=a.next}while(a!==J);null===c?c=J:c===J&&(J=h,Q());b=c.previous;b.next=c.previous= | ||
h;h.next=c;h.previous=b}}function R(a){P=!1;O=!0;var b=K;K=a;try{if(a)for(;null!==J;){var c=exports.unstable_now();if(J.expirationTime<=c){do S();while(null!==J&&J.expirationTime<=c)}else break}else if(null!==J){do S();while(null!==J&&!g())}}finally{O=!1,K=b,Q()}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4; | ||
exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=L,e=M;L=a;M=exports.unstable_now();try{return b()}catch(l){throw Q(),l;}finally{L=c,M=e}};exports.unstable_next=function(a){switch(L){case 1:case 2:case 3:var b=3;break;default:b=L}var c=L,e=M;L=b;M=exports.unstable_now();try{return a()}catch(l){throw Q(),l;}finally{L=c,M=e}}; | ||
exports.unstable_scheduleCallback=function(a,b,c){var e=-1!==M?M:exports.unstable_now();if("object"===typeof c&&null!==c&&"number"===typeof c.timeout)c=e+c.timeout;else switch(a){case 1:c=e+-1;break;case 2:c=e+250;break;case 5:c=e+1073741823;break;case 4:c=e+1E4;break;default:c=e+5E3}a={callback:b,priorityLevel:a,expirationTime:c,next:null,previous:null};if(null===J)J=a.next=a.previous=a,Q();else{b=null;e=J;do{if(e.expirationTime>c){b=e;break}e=e.next}while(e!==J);null===b?b=J:b===J&&(J=a,Q());c= | ||
b.previous;c.next=b.previous=a;a.next=b;a.previous=c}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)J=null;else{a===J&&(J=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=L;return function(){var c=L,e=M;L=b;M=exports.unstable_now();try{return a.apply(this,arguments)}catch(l){throw Q(),l;}finally{L=c,M=e}}};exports.unstable_getCurrentPriorityLevel=function(){return L}; | ||
exports.unstable_shouldYield=function(){return!K&&(null!==J&&J.expirationTime<N||g())};exports.unstable_continueExecution=function(){null!==J&&Q()};exports.unstable_pauseExecution=function(){};exports.unstable_getFirstCallbackNode=function(){return J}; |
{ | ||
"name": "scheduler", | ||
"version": "0.0.0-8b3c1e4-1d1a717", | ||
"version": "0.0.0-9ebe1768a", | ||
"description": "Cooperative scheduler for the browser environment.", | ||
"main": "index.js", | ||
"repository": "facebook/react", | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/facebook/react.git", | ||
"directory": "packages/scheduler" | ||
}, | ||
"license": "MIT", | ||
@@ -22,5 +26,7 @@ "keywords": [ | ||
"README.md", | ||
"build-info.json", | ||
"index.js", | ||
"tracing.js", | ||
"tracing-profiling.js", | ||
"unstable_mock.js", | ||
"cjs/", | ||
@@ -33,20 +39,3 @@ "umd/" | ||
] | ||
}, | ||
"buildInfo": { | ||
"buildID": "8b3c1e4-1d1a717", | ||
"checksum": "d49ca941a51ddc0dec608acd2ce521b9a71397fc", | ||
"unstable": true, | ||
"partial": false, | ||
"packages": [ | ||
"create-subscription", | ||
"jest-react", | ||
"react", | ||
"react-art", | ||
"react-dom", | ||
"react-is", | ||
"react-reconciler", | ||
"react-test-renderer", | ||
"scheduler" | ||
] | ||
} | ||
} | ||
} |
@@ -57,2 +57,9 @@ /** | ||
function unstable_next() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_next.apply( | ||
this, | ||
arguments | ||
); | ||
} | ||
function unstable_wrapCallback() { | ||
@@ -72,2 +79,23 @@ return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_wrapCallback.apply( | ||
function unstable_getFirstCallbackNode() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_getFirstCallbackNode.apply( | ||
this, | ||
arguments | ||
); | ||
} | ||
function unstable_pauseExecution() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_pauseExecution.apply( | ||
this, | ||
arguments | ||
); | ||
} | ||
function unstable_continueExecution() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_continueExecution.apply( | ||
this, | ||
arguments | ||
); | ||
} | ||
return Object.freeze({ | ||
@@ -79,5 +107,29 @@ unstable_now: unstable_now, | ||
unstable_runWithPriority: unstable_runWithPriority, | ||
unstable_next: unstable_next, | ||
unstable_wrapCallback: unstable_wrapCallback, | ||
unstable_getCurrentPriorityLevel: unstable_getCurrentPriorityLevel, | ||
unstable_continueExecution: unstable_continueExecution, | ||
unstable_pauseExecution: unstable_pauseExecution, | ||
unstable_getFirstCallbackNode: unstable_getFirstCallbackNode, | ||
get unstable_IdlePriority() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED | ||
.Scheduler.unstable_IdlePriority; | ||
}, | ||
get unstable_ImmediatePriority() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED | ||
.Scheduler.unstable_ImmediatePriority; | ||
}, | ||
get unstable_LowPriority() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED | ||
.Scheduler.unstable_LowPriority; | ||
}, | ||
get unstable_NormalPriority() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED | ||
.Scheduler.unstable_NormalPriority; | ||
}, | ||
get unstable_UserBlockingPriority() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED | ||
.Scheduler.unstable_UserBlockingPriority; | ||
}, | ||
}); | ||
}); |
@@ -57,2 +57,9 @@ /** | ||
function unstable_next() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_next.apply( | ||
this, | ||
arguments | ||
); | ||
} | ||
function unstable_wrapCallback() { | ||
@@ -72,2 +79,17 @@ return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_wrapCallback.apply( | ||
function unstable_getFirstCallbackNode() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_getFirstCallbackNode.apply( | ||
this, | ||
arguments | ||
); | ||
} | ||
function unstable_pauseExecution() { | ||
return undefined; | ||
} | ||
function unstable_continueExecution() { | ||
return undefined; | ||
} | ||
return Object.freeze({ | ||
@@ -79,5 +101,29 @@ unstable_now: unstable_now, | ||
unstable_runWithPriority: unstable_runWithPriority, | ||
unstable_next: unstable_next, | ||
unstable_wrapCallback: unstable_wrapCallback, | ||
unstable_getCurrentPriorityLevel: unstable_getCurrentPriorityLevel, | ||
unstable_continueExecution: unstable_continueExecution, | ||
unstable_pauseExecution: unstable_pauseExecution, | ||
unstable_getFirstCallbackNode: unstable_getFirstCallbackNode, | ||
get unstable_IdlePriority() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED | ||
.Scheduler.unstable_IdlePriority; | ||
}, | ||
get unstable_ImmediatePriority() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED | ||
.Scheduler.unstable_ImmediatePriority; | ||
}, | ||
get unstable_LowPriority() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED | ||
.Scheduler.unstable_LowPriority; | ||
}, | ||
get unstable_NormalPriority() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED | ||
.Scheduler.unstable_NormalPriority; | ||
}, | ||
get unstable_UserBlockingPriority() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED | ||
.Scheduler.unstable_UserBlockingPriority; | ||
}, | ||
}); | ||
}); |
@@ -57,2 +57,9 @@ /** | ||
function unstable_next() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_next.apply( | ||
this, | ||
arguments | ||
); | ||
} | ||
function unstable_wrapCallback() { | ||
@@ -72,2 +79,17 @@ return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_wrapCallback.apply( | ||
function unstable_getFirstCallbackNode() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.Scheduler.unstable_getFirstCallbackNode.apply( | ||
this, | ||
arguments | ||
); | ||
} | ||
function unstable_pauseExecution() { | ||
return undefined; | ||
} | ||
function unstable_continueExecution() { | ||
return undefined; | ||
} | ||
return Object.freeze({ | ||
@@ -79,5 +101,29 @@ unstable_now: unstable_now, | ||
unstable_runWithPriority: unstable_runWithPriority, | ||
unstable_next: unstable_next, | ||
unstable_wrapCallback: unstable_wrapCallback, | ||
unstable_getCurrentPriorityLevel: unstable_getCurrentPriorityLevel, | ||
unstable_continueExecution: unstable_continueExecution, | ||
unstable_pauseExecution: unstable_pauseExecution, | ||
unstable_getFirstCallbackNode: unstable_getFirstCallbackNode, | ||
get unstable_IdlePriority() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED | ||
.Scheduler.unstable_IdlePriority; | ||
}, | ||
get unstable_ImmediatePriority() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED | ||
.Scheduler.unstable_ImmediatePriority; | ||
}, | ||
get unstable_LowPriority() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED | ||
.Scheduler.unstable_LowPriority; | ||
}, | ||
get unstable_NormalPriority() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED | ||
.Scheduler.unstable_NormalPriority; | ||
}, | ||
get unstable_UserBlockingPriority() { | ||
return global.React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED | ||
.Scheduler.unstable_UserBlockingPriority; | ||
}, | ||
}); | ||
}); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
87705
21
2114