scheduler
Advanced tools
Comparing version 0.0.0-experimental-38dd17ab9 to 0.0.0-experimental-3d0895557
{ | ||
"branch": "master", | ||
"buildNumber": "57981", | ||
"checksum": "7604c6f", | ||
"commit": "38dd17ab9", | ||
"buildNumber": "188118", | ||
"checksum": "6e54c59", | ||
"commit": "3d0895557", | ||
"environment": "ci", | ||
"reactVersion": "16.11.0-experimental-38dd17ab9" | ||
"reactVersion": "17.0.0-alpha.0-experimental-3d0895557" | ||
} |
@@ -1,2 +0,2 @@ | ||
/** @license React v0.0.0-experimental-38dd17ab9 | ||
/** @license React v0.0.0-experimental-3d0895557 | ||
* scheduler-tracing.development.js | ||
@@ -12,4 +12,2 @@ * | ||
if (process.env.NODE_ENV !== "production") { | ||
@@ -19,56 +17,2 @@ (function() { | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
// Helps identify side effects in render-phase lifecycle hooks and setState | ||
// reducers by double invoking them in Strict Mode. | ||
// To preserve the "Pause on caught exceptions" behavior of the debugger, we | ||
// replay the begin phase of a failed component inside invokeGuardedCallback. | ||
// Warn about deprecated, async-unsafe lifecycles; relates to RFC #6: | ||
// Gather advanced timing metrics for Profiler subtrees. | ||
// Trace which interactions trigger each commit. | ||
var enableSchedulerTracing = true; // SSR experiments | ||
// Only used in www builds. | ||
// Only used in www builds. | ||
// Disable javascript: URL strings in href for XSS protection. | ||
// React Fire: prevent the value and checked attributes from syncing | ||
// with their related DOM properties | ||
// These APIs will no longer be "unstable" in the upcoming 16.7 release, | ||
// Control this behavior with a flag to support 16.6 minor releases in the meanwhile. | ||
// Experimental React Flare event system and event components support. | ||
// Experimental Host Component support. | ||
// Experimental Scope support. | ||
// New API for JSX transforms to target - https://github.com/reactjs/rfcs/pull/107 | ||
// We will enforce mocking scheduler with scheduler/unstable_mock at some point. (v17?) | ||
// Till then, we warn about the missing mock, but still fallback to a legacy mode compatible version | ||
// For tests, we flush suspense fallbacks in an act scope; | ||
// *except* in some of our own tests, where we test incremental loading states. | ||
// Add a callback property to suspense to notify which promises are currently | ||
// in the update queue. This allows reporting and tracing of what is causing | ||
// the user to see a loading state. | ||
// Also allows hydration callbacks to fire when a dehydrated boundary gets | ||
// hydrated or deleted. | ||
// Part of the simplification of React.createElement so we can eventually move | ||
// from React.createElement to React.jsx | ||
// https://github.com/reactjs/rfcs/blob/createlement-rfc/text/0000-create-element-changes.md | ||
var DEFAULT_THREAD_ID = 0; // Counters used to generate unique IDs. | ||
@@ -86,3 +30,3 @@ | ||
if (enableSchedulerTracing) { | ||
{ | ||
exports.__interactionsRef = { | ||
@@ -95,7 +39,3 @@ current: new Set() | ||
} | ||
function unstable_clear(callback) { | ||
if (!enableSchedulerTracing) { | ||
return callback(); | ||
} | ||
@@ -112,5 +52,3 @@ var prevInteractions = exports.__interactionsRef.current; | ||
function unstable_getCurrent() { | ||
if (!enableSchedulerTracing) { | ||
return null; | ||
} else { | ||
{ | ||
return exports.__interactionsRef.current; | ||
@@ -125,6 +63,2 @@ } | ||
if (!enableSchedulerTracing) { | ||
return callback(); | ||
} | ||
var interaction = { | ||
@@ -182,6 +116,2 @@ __count: 1, | ||
if (!enableSchedulerTracing) { | ||
return callback; | ||
} | ||
var wrappedInteractions = exports.__interactionsRef.current; | ||
@@ -272,3 +202,3 @@ var subscriber = exports.__subscriberRef.current; | ||
if (enableSchedulerTracing) { | ||
{ | ||
subscribers = new Set(); | ||
@@ -278,3 +208,3 @@ } | ||
function unstable_subscribe(subscriber) { | ||
if (enableSchedulerTracing) { | ||
{ | ||
subscribers.add(subscriber); | ||
@@ -295,3 +225,3 @@ | ||
function unstable_unsubscribe(subscriber) { | ||
if (enableSchedulerTracing) { | ||
{ | ||
subscribers.delete(subscriber); | ||
@@ -422,7 +352,7 @@ | ||
exports.unstable_getThreadID = unstable_getThreadID; | ||
exports.unstable_subscribe = unstable_subscribe; | ||
exports.unstable_trace = unstable_trace; | ||
exports.unstable_unsubscribe = unstable_unsubscribe; | ||
exports.unstable_wrap = unstable_wrap; | ||
exports.unstable_subscribe = unstable_subscribe; | ||
exports.unstable_unsubscribe = unstable_unsubscribe; | ||
})(); | ||
} |
@@ -1,2 +0,2 @@ | ||
/** @license React v0.0.0-experimental-38dd17ab9 | ||
/** @license React v0.0.0-experimental-3d0895557 | ||
* scheduler-tracing.production.min.js | ||
@@ -9,3 +9,2 @@ * | ||
*/ | ||
'use strict';Object.defineProperty(exports,"__esModule",{value:!0});var b=0;exports.__interactionsRef=null;exports.__subscriberRef=null;exports.unstable_clear=function(a){return a()};exports.unstable_getCurrent=function(){return null};exports.unstable_getThreadID=function(){return++b};exports.unstable_trace=function(a,d,c){return c()};exports.unstable_wrap=function(a){return a};exports.unstable_subscribe=function(){};exports.unstable_unsubscribe=function(){}; | ||
'use strict';var b=0;exports.__interactionsRef=null;exports.__subscriberRef=null;exports.unstable_clear=function(a){return a()};exports.unstable_getCurrent=function(){return null};exports.unstable_getThreadID=function(){return++b};exports.unstable_subscribe=function(){};exports.unstable_trace=function(a,d,c){return c()};exports.unstable_unsubscribe=function(){};exports.unstable_wrap=function(a){return a}; |
@@ -1,2 +0,2 @@ | ||
/** @license React v0.0.0-experimental-38dd17ab9 | ||
/** @license React v0.0.0-experimental-3d0895557 | ||
* scheduler-tracing.profiling.min.js | ||
@@ -9,9 +9,9 @@ * | ||
*/ | ||
'use strict';Object.defineProperty(exports,"__esModule",{value:!0});var g=0,l=0;exports.__interactionsRef=null;exports.__subscriberRef=null;exports.__interactionsRef={current:new Set};exports.__subscriberRef={current:null};var m=null;m=new Set;function n(e){var d=!1,a=null;m.forEach(function(c){try{c.onInteractionTraced(e)}catch(b){d||(d=!0,a=b)}});if(d)throw a;} | ||
function p(e){var d=!1,a=null;m.forEach(function(c){try{c.onInteractionScheduledWorkCompleted(e)}catch(b){d||(d=!0,a=b)}});if(d)throw a;}function q(e,d){var a=!1,c=null;m.forEach(function(b){try{b.onWorkScheduled(e,d)}catch(f){a||(a=!0,c=f)}});if(a)throw c;}function r(e,d){var a=!1,c=null;m.forEach(function(b){try{b.onWorkStarted(e,d)}catch(f){a||(a=!0,c=f)}});if(a)throw c;}function t(e,d){var a=!1,c=null;m.forEach(function(b){try{b.onWorkStopped(e,d)}catch(f){a||(a=!0,c=f)}});if(a)throw c;} | ||
function u(e,d){var a=!1,c=null;m.forEach(function(b){try{b.onWorkCanceled(e,d)}catch(f){a||(a=!0,c=f)}});if(a)throw c;}exports.unstable_clear=function(e){var d=exports.__interactionsRef.current;exports.__interactionsRef.current=new Set;try{return e()}finally{exports.__interactionsRef.current=d}};exports.unstable_getCurrent=function(){return exports.__interactionsRef.current};exports.unstable_getThreadID=function(){return++l}; | ||
'use strict';var g=0,l=0;exports.__interactionsRef=null;exports.__subscriberRef=null;exports.__interactionsRef={current:new Set};exports.__subscriberRef={current:null};var m=null;m=new Set;function n(e){var d=!1,a=null;m.forEach(function(c){try{c.onInteractionTraced(e)}catch(b){d||(d=!0,a=b)}});if(d)throw a;}function p(e){var d=!1,a=null;m.forEach(function(c){try{c.onInteractionScheduledWorkCompleted(e)}catch(b){d||(d=!0,a=b)}});if(d)throw a;} | ||
function q(e,d){var a=!1,c=null;m.forEach(function(b){try{b.onWorkScheduled(e,d)}catch(f){a||(a=!0,c=f)}});if(a)throw c;}function r(e,d){var a=!1,c=null;m.forEach(function(b){try{b.onWorkStarted(e,d)}catch(f){a||(a=!0,c=f)}});if(a)throw c;}function t(e,d){var a=!1,c=null;m.forEach(function(b){try{b.onWorkStopped(e,d)}catch(f){a||(a=!0,c=f)}});if(a)throw c;}function u(e,d){var a=!1,c=null;m.forEach(function(b){try{b.onWorkCanceled(e,d)}catch(f){a||(a=!0,c=f)}});if(a)throw c;} | ||
exports.unstable_clear=function(e){var d=exports.__interactionsRef.current;exports.__interactionsRef.current=new Set;try{return e()}finally{exports.__interactionsRef.current=d}};exports.unstable_getCurrent=function(){return exports.__interactionsRef.current};exports.unstable_getThreadID=function(){return++l}; | ||
exports.unstable_subscribe=function(e){m.add(e);1===m.size&&(exports.__subscriberRef.current={onInteractionScheduledWorkCompleted:p,onInteractionTraced:n,onWorkCanceled:u,onWorkScheduled:q,onWorkStarted:r,onWorkStopped:t})}; | ||
exports.unstable_trace=function(e,d,a){var c=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,b={__count:1,id:g++,name:e,timestamp:d},f=exports.__interactionsRef.current,k=new Set(f);k.add(b);exports.__interactionsRef.current=k;var h=exports.__subscriberRef.current;try{if(null!==h)h.onInteractionTraced(b)}finally{try{if(null!==h)h.onWorkStarted(k,c)}finally{try{var v=a()}finally{exports.__interactionsRef.current=f;try{if(null!==h)h.onWorkStopped(k,c)}finally{if(b.__count--,null!==h&&0===b.__count)h.onInteractionScheduledWorkCompleted(b)}}}}return v}; | ||
exports.unstable_unsubscribe=function(e){m.delete(e);0===m.size&&(exports.__subscriberRef.current=null)}; | ||
exports.unstable_wrap=function(e){function d(){var d=exports.__interactionsRef.current;exports.__interactionsRef.current=c;b=exports.__subscriberRef.current;try{try{if(null!==b)b.onWorkStarted(c,a)}finally{try{var h=e.apply(void 0,arguments)}finally{if(exports.__interactionsRef.current=d,null!==b)b.onWorkStopped(c,a)}}return h}finally{f||(f=!0,c.forEach(function(a){a.__count--;if(null!==b&&0===a.__count)b.onInteractionScheduledWorkCompleted(a)}))}}var a=1<arguments.length&&void 0!==arguments[1]?arguments[1]: | ||
0,c=exports.__interactionsRef.current,b=exports.__subscriberRef.current;if(null!==b)b.onWorkScheduled(c,a);c.forEach(function(a){a.__count++});var f=!1;d.cancel=function(){b=exports.__subscriberRef.current;try{if(null!==b)b.onWorkCanceled(c,a)}finally{c.forEach(function(a){a.__count--;if(b&&0===a.__count)b.onInteractionScheduledWorkCompleted(a)})}};return d}; | ||
exports.unstable_subscribe=function(e){m.add(e);1===m.size&&(exports.__subscriberRef.current={onInteractionScheduledWorkCompleted:p,onInteractionTraced:n,onWorkCanceled:u,onWorkScheduled:q,onWorkStarted:r,onWorkStopped:t})};exports.unstable_unsubscribe=function(e){m.delete(e);0===m.size&&(exports.__subscriberRef.current=null)}; |
@@ -1,2 +0,2 @@ | ||
/** @license React v0.0.0-experimental-38dd17ab9 | ||
/** @license React v0.0.0-experimental-3d0895557 | ||
* scheduler-unstable_mock.development.js | ||
@@ -12,4 +12,2 @@ * | ||
if (process.env.NODE_ENV !== "production") { | ||
@@ -19,6 +17,3 @@ (function() { | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
var enableSchedulerDebugging = false; | ||
var enableProfiling = true; | ||
@@ -39,3 +34,2 @@ | ||
} | ||
function requestHostTimeout(callback, ms) { | ||
@@ -63,3 +57,2 @@ scheduledTimeout = callback; | ||
} | ||
// Should only be used via an assertion helper that inspects the yielded values. | ||
@@ -190,2 +183,9 @@ function unstable_flushNumberOfYields(count) { | ||
function unstable_yieldValue(value) { | ||
// eslint-disable-next-line react-internal/no-production-logging | ||
if (console.log.name === 'disabledLog') { | ||
// If console.log has been patched, we assume we're in render | ||
// replaying and we ignore any values yielding in the second pass. | ||
return; | ||
} | ||
if (yieldedValues === null) { | ||
@@ -198,12 +198,15 @@ yieldedValues = [value]; | ||
function unstable_advanceTime(ms) { | ||
// eslint-disable-next-line react-internal/no-production-logging | ||
if (console.log.name === 'disabledLog') { | ||
// If console.log has been patched, we assume we're in render | ||
// replaying and we ignore any time advancing in the second pass. | ||
return; | ||
} | ||
currentTime += ms; | ||
if (!isFlushing) { | ||
if (scheduledTimeout !== null && timeoutTime <= currentTime) { | ||
scheduledTimeout(currentTime); | ||
timeoutTime = -1; | ||
scheduledTimeout = null; | ||
} | ||
unstable_flushExpired(); | ||
if (scheduledTimeout !== null && timeoutTime <= currentTime) { | ||
scheduledTimeout(currentTime); | ||
timeoutTime = -1; | ||
scheduledTimeout = null; | ||
} | ||
@@ -245,3 +248,3 @@ } | ||
while (true) { | ||
var parentIndex = Math.floor((index - 1) / 2); | ||
var parentIndex = index - 1 >>> 1; | ||
var parent = heap[parentIndex]; | ||
@@ -309,7 +312,7 @@ | ||
var profilingStateSize = 4; | ||
var sharedProfilingBuffer = enableProfiling ? // $FlowFixMe Flow doesn't know about SharedArrayBuffer | ||
var sharedProfilingBuffer = // $FlowFixMe Flow doesn't know about SharedArrayBuffer | ||
typeof SharedArrayBuffer === 'function' ? new SharedArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : // $FlowFixMe Flow doesn't know about ArrayBuffer | ||
typeof ArrayBuffer === 'function' ? new ArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : null // Don't crash the init path on IE9 | ||
: null; | ||
var profilingState = enableProfiling && sharedProfilingBuffer !== null ? new Int32Array(sharedProfilingBuffer) : []; // We can't read this but it helps save bytes for null checks | ||
; | ||
var profilingState = sharedProfilingBuffer !== null ? new Int32Array(sharedProfilingBuffer) : []; // We can't read this but it helps save bytes for null checks | ||
@@ -321,3 +324,3 @@ var PRIORITY = 0; | ||
if (enableProfiling) { | ||
{ | ||
profilingState[PRIORITY] = NoPriority; // This is maintained with a counter, because the size of the priority queue | ||
@@ -356,3 +359,4 @@ // array might include canceled tasks. | ||
if (eventLogSize > MAX_EVENT_LOG_SIZE) { | ||
console.error("Scheduler Profiling: Event log exceeded maximum size. Don't " + 'forget to call `stopLoggingProfilingEvents()`.'); | ||
// Using console['error'] to evade Babel and ESLint | ||
console['error']("Scheduler Profiling: Event log exceeded maximum size. Don't " + 'forget to call `stopLoggingProfilingEvents()`.'); | ||
stopLoggingProfilingEvents(); | ||
@@ -387,3 +391,3 @@ return; | ||
function markTaskStart(task, ms) { | ||
if (enableProfiling) { | ||
{ | ||
profilingState[QUEUE_SIZE]++; | ||
@@ -400,3 +404,3 @@ | ||
function markTaskCompleted(task, ms) { | ||
if (enableProfiling) { | ||
{ | ||
profilingState[PRIORITY] = NoPriority; | ||
@@ -412,3 +416,3 @@ profilingState[CURRENT_TASK_ID] = 0; | ||
function markTaskCanceled(task, ms) { | ||
if (enableProfiling) { | ||
{ | ||
profilingState[QUEUE_SIZE]--; | ||
@@ -422,3 +426,3 @@ | ||
function markTaskErrored(task, ms) { | ||
if (enableProfiling) { | ||
{ | ||
profilingState[PRIORITY] = NoPriority; | ||
@@ -434,3 +438,3 @@ profilingState[CURRENT_TASK_ID] = 0; | ||
function markTaskRun(task, ms) { | ||
if (enableProfiling) { | ||
{ | ||
runIdCounter++; | ||
@@ -447,3 +451,3 @@ profilingState[PRIORITY] = task.priorityLevel; | ||
function markTaskYield(task, ms) { | ||
if (enableProfiling) { | ||
{ | ||
profilingState[PRIORITY] = NoPriority; | ||
@@ -459,3 +463,3 @@ profilingState[CURRENT_TASK_ID] = 0; | ||
function markSchedulerSuspended(ms) { | ||
if (enableProfiling) { | ||
{ | ||
mainThreadIdCounter++; | ||
@@ -469,3 +473,3 @@ | ||
function markSchedulerUnsuspended(ms) { | ||
if (enableProfiling) { | ||
{ | ||
if (eventLog !== null) { | ||
@@ -485,7 +489,7 @@ logEvent([SchedulerResumeEvent, ms * 1000, mainThreadIdCounter]); | ||
var USER_BLOCKING_PRIORITY = 250; | ||
var USER_BLOCKING_PRIORITY_TIMEOUT = 250; | ||
var NORMAL_PRIORITY_TIMEOUT = 5000; | ||
var LOW_PRIORITY_TIMEOUT = 10000; // Never times out | ||
var IDLE_PRIORITY = maxSigned31BitInt; // Tasks are stored on a min heap | ||
var IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap | ||
@@ -496,4 +500,2 @@ var taskQueue = []; | ||
var taskIdCounter = 1; // Pausing the scheduler is useful for debugging. | ||
var isSchedulerPaused = false; | ||
var currentTask = null; | ||
@@ -520,3 +522,3 @@ var currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrancy. | ||
if (enableProfiling) { | ||
{ | ||
markTaskStart(timer, currentTime); | ||
@@ -553,3 +555,3 @@ timer.isQueued = true; | ||
function flushWork(hasTimeRemaining, initialTime) { | ||
if (enableProfiling) { | ||
{ | ||
markSchedulerUnsuspended(initialTime); | ||
@@ -584,3 +586,3 @@ } // We'll need a host callback the next time work is scheduled. | ||
} else { | ||
// No catch in prod codepath. | ||
// No catch in prod code path. | ||
return workLoop(hasTimeRemaining, initialTime); | ||
@@ -593,3 +595,3 @@ } | ||
if (enableProfiling) { | ||
{ | ||
var _currentTime = getCurrentTime(); | ||
@@ -607,3 +609,3 @@ | ||
while (currentTask !== null && !(enableSchedulerDebugging && isSchedulerPaused)) { | ||
while (currentTask !== null && !(enableSchedulerDebugging )) { | ||
if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) { | ||
@@ -616,3 +618,3 @@ // This currentTask hasn't expired, and we've reached the deadline. | ||
if (callback !== null) { | ||
if (typeof callback === 'function') { | ||
currentTask.callback = null; | ||
@@ -629,3 +631,3 @@ currentPriorityLevel = currentTask.priorityLevel; | ||
} else { | ||
if (enableProfiling) { | ||
{ | ||
markTaskCompleted(currentTask, currentTime); | ||
@@ -727,26 +729,5 @@ currentTask.isQueued = false; | ||
function timeoutForPriorityLevel(priorityLevel) { | ||
switch (priorityLevel) { | ||
case ImmediatePriority: | ||
return IMMEDIATE_PRIORITY_TIMEOUT; | ||
case UserBlockingPriority: | ||
return USER_BLOCKING_PRIORITY; | ||
case IdlePriority: | ||
return IDLE_PRIORITY; | ||
case LowPriority: | ||
return LOW_PRIORITY_TIMEOUT; | ||
case NormalPriority: | ||
default: | ||
return NORMAL_PRIORITY_TIMEOUT; | ||
} | ||
} | ||
function unstable_scheduleCallback(priorityLevel, callback, options) { | ||
var currentTime = getCurrentTime(); | ||
var startTime; | ||
var timeout; | ||
@@ -761,9 +742,31 @@ if (typeof options === 'object' && options !== null) { | ||
} | ||
timeout = typeof options.timeout === 'number' ? options.timeout : timeoutForPriorityLevel(priorityLevel); | ||
} else { | ||
timeout = timeoutForPriorityLevel(priorityLevel); | ||
startTime = currentTime; | ||
} | ||
var timeout; | ||
switch (priorityLevel) { | ||
case ImmediatePriority: | ||
timeout = IMMEDIATE_PRIORITY_TIMEOUT; | ||
break; | ||
case UserBlockingPriority: | ||
timeout = USER_BLOCKING_PRIORITY_TIMEOUT; | ||
break; | ||
case IdlePriority: | ||
timeout = IDLE_PRIORITY_TIMEOUT; | ||
break; | ||
case LowPriority: | ||
timeout = LOW_PRIORITY_TIMEOUT; | ||
break; | ||
case NormalPriority: | ||
default: | ||
timeout = NORMAL_PRIORITY_TIMEOUT; | ||
break; | ||
} | ||
var expirationTime = startTime + timeout; | ||
@@ -779,3 +782,3 @@ var newTask = { | ||
if (enableProfiling) { | ||
{ | ||
newTask.isQueued = false; | ||
@@ -805,3 +808,3 @@ } | ||
if (enableProfiling) { | ||
{ | ||
markTaskStart(newTask, currentTime); | ||
@@ -823,7 +826,5 @@ newTask.isQueued = true; | ||
function unstable_pauseExecution() { | ||
isSchedulerPaused = true; | ||
} | ||
function unstable_continueExecution() { | ||
isSchedulerPaused = false; | ||
@@ -841,3 +842,3 @@ if (!isHostCallbackScheduled && !isPerformingWork) { | ||
function unstable_cancelCallback(task) { | ||
if (enableProfiling) { | ||
{ | ||
if (task.isQueued) { | ||
@@ -868,36 +869,36 @@ var currentTime = getCurrentTime(); | ||
var unstable_requestPaint = requestPaint; | ||
var unstable_Profiling = enableProfiling ? { | ||
var unstable_Profiling = { | ||
startLoggingProfilingEvents: startLoggingProfilingEvents, | ||
stopLoggingProfilingEvents: stopLoggingProfilingEvents, | ||
sharedProfilingBuffer: sharedProfilingBuffer | ||
} : null; | ||
} ; | ||
exports.unstable_IdlePriority = IdlePriority; | ||
exports.unstable_ImmediatePriority = ImmediatePriority; | ||
exports.unstable_LowPriority = LowPriority; | ||
exports.unstable_NormalPriority = NormalPriority; | ||
exports.unstable_Profiling = unstable_Profiling; | ||
exports.unstable_UserBlockingPriority = UserBlockingPriority; | ||
exports.unstable_advanceTime = unstable_advanceTime; | ||
exports.unstable_cancelCallback = unstable_cancelCallback; | ||
exports.unstable_clearYields = unstable_clearYields; | ||
exports.unstable_continueExecution = unstable_continueExecution; | ||
exports.unstable_flushAll = unstable_flushAll; | ||
exports.unstable_flushAllWithoutAsserting = unstable_flushAllWithoutAsserting; | ||
exports.unstable_flushExpired = unstable_flushExpired; | ||
exports.unstable_flushNumberOfYields = unstable_flushNumberOfYields; | ||
exports.unstable_flushExpired = unstable_flushExpired; | ||
exports.unstable_clearYields = unstable_clearYields; | ||
exports.unstable_flushUntilNextPaint = unstable_flushUntilNextPaint; | ||
exports.unstable_flushAll = unstable_flushAll; | ||
exports.unstable_yieldValue = unstable_yieldValue; | ||
exports.unstable_advanceTime = unstable_advanceTime; | ||
exports.unstable_ImmediatePriority = ImmediatePriority; | ||
exports.unstable_UserBlockingPriority = UserBlockingPriority; | ||
exports.unstable_NormalPriority = NormalPriority; | ||
exports.unstable_IdlePriority = IdlePriority; | ||
exports.unstable_LowPriority = LowPriority; | ||
exports.unstable_forceFrameRate = forceFrameRate; | ||
exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel; | ||
exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode; | ||
exports.unstable_next = unstable_next; | ||
exports.unstable_now = getCurrentTime; | ||
exports.unstable_pauseExecution = unstable_pauseExecution; | ||
exports.unstable_requestPaint = unstable_requestPaint; | ||
exports.unstable_runWithPriority = unstable_runWithPriority; | ||
exports.unstable_next = unstable_next; | ||
exports.unstable_scheduleCallback = unstable_scheduleCallback; | ||
exports.unstable_cancelCallback = unstable_cancelCallback; | ||
exports.unstable_shouldYield = unstable_shouldYield; | ||
exports.unstable_wrapCallback = unstable_wrapCallback; | ||
exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel; | ||
exports.unstable_shouldYield = unstable_shouldYield; | ||
exports.unstable_requestPaint = unstable_requestPaint; | ||
exports.unstable_continueExecution = unstable_continueExecution; | ||
exports.unstable_pauseExecution = unstable_pauseExecution; | ||
exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode; | ||
exports.unstable_now = getCurrentTime; | ||
exports.unstable_forceFrameRate = forceFrameRate; | ||
exports.unstable_Profiling = unstable_Profiling; | ||
exports.unstable_yieldValue = unstable_yieldValue; | ||
})(); | ||
} |
@@ -1,2 +0,2 @@ | ||
/** @license React v0.0.0-experimental-38dd17ab9 | ||
/** @license React v0.0.0-experimental-3d0895557 | ||
* scheduler-unstable_mock.production.min.js | ||
@@ -9,13 +9,12 @@ * | ||
*/ | ||
'use strict';Object.defineProperty(exports,"__esModule",{value:!0});var f=0,g=null,h=null,k=-1,l=null,m=-1,n=!1,p=!1,q=!1,r=!1;function t(){return-1!==m&&null!==l&&l.length>=m||r&&q?n=!0:!1}function x(){if(p)throw Error("Already flushing work.");if(null!==g){p=!0;try{g(!1,f)||(g=null)}finally{p=!1}}}function z(){if(p)throw Error("Already flushing work.");if(null!==g){var a=g;p=!0;try{var b=!0;do b=a(!0,f);while(b);b||(g=null);return!0}finally{p=!1}}else return!1} | ||
function A(a,b){var c=a.length;a.push(b);a:for(;;){var d=Math.floor((c-1)/2),e=a[d];if(void 0!==e&&0<B(e,b))a[d]=b,a[c]=e,c=d;else break a}}function C(a){a=a[0];return void 0===a?null:a}function D(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var u=2*(d+1)-1,v=a[u],w=u+1,y=a[w];if(void 0!==v&&0>B(v,c))void 0!==y&&0>B(y,v)?(a[d]=y,a[w]=c,d=w):(a[d]=v,a[u]=c,d=u);else if(void 0!==y&&0>B(y,c))a[d]=y,a[w]=c,d=w;else break a}}return b}return null} | ||
function B(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var E=[],F=[],G=1,H=null,I=3,J=!1,K=!1,L=!1;function M(a){for(var b=C(F);null!==b;){if(null===b.callback)D(F);else if(b.startTime<=a)D(F),b.sortIndex=b.expirationTime,A(E,b);else break;b=C(F)}}function N(a){L=!1;M(a);if(!K)if(null!==C(E))K=!0,g=O;else{var b=C(F);null!==b&&(a=b.startTime-a,h=N,k=f+a)}} | ||
function O(a,b){K=!1;L&&(L=!1,h=null,k=-1);J=!0;var c=I;try{M(b);for(H=C(E);null!==H&&(!(H.expirationTime>b)||a&&!t());){var d=H.callback;if(null!==d){H.callback=null;I=H.priorityLevel;var e=d(H.expirationTime<=b);b=f;"function"===typeof e?H.callback=e:H===C(E)&&D(E);M(b)}else D(E);H=C(E)}if(null!==H)var u=!0;else{var v=C(F);if(null!==v){var w=v.startTime-b;h=N;k=f+w}u=!1}return u}finally{H=null,I=c,J=!1}} | ||
function P(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}exports.unstable_flushAllWithoutAsserting=z;exports.unstable_flushNumberOfYields=function(a){if(p)throw Error("Already flushing work.");if(null!==g){var b=g;m=a;p=!0;try{a=!0;do a=b(!0,f);while(a&&!n);a||(g=null)}finally{m=-1,p=n=!1}}};exports.unstable_flushExpired=x;exports.unstable_clearYields=function(){if(null===l)return[];var a=l;l=null;return a}; | ||
exports.unstable_flushUntilNextPaint=function(){if(p)throw Error("Already flushing work.");if(null!==g){var a=g;r=!0;q=!1;p=!0;try{var b=!0;do b=a(!0,f);while(b&&!n);b||(g=null)}finally{p=n=r=!1}}}; | ||
exports.unstable_flushAll=function(){if(null!==l)throw Error("Log is not empty. Assert on the log of yielded values before flushing additional work.");z();if(null!==l)throw Error("While flushing work, something yielded a value. Use an assertion helper to assert on the log of yielded values, e.g. expect(Scheduler).toFlushAndYield([...])");};exports.unstable_yieldValue=function(a){null===l?l=[a]:l.push(a)};exports.unstable_advanceTime=function(a){f+=a;p||(null!==h&&k<=f&&(h(f),k=-1,h=null),x())}; | ||
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=I;I=a;try{return b()}finally{I=c}};exports.unstable_next=function(a){switch(I){case 1:case 2:case 3:var b=3;break;default:b=I}var c=I;I=b;try{return a()}finally{I=c}}; | ||
exports.unstable_scheduleCallback=function(a,b,c){var d=f;if("object"===typeof c&&null!==c){var e=c.delay;e="number"===typeof e&&0<e?d+e:d;c="number"===typeof c.timeout?c.timeout:P(a)}else c=P(a),e=d;c=e+c;a={id:G++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,A(F,a),null===C(E)&&a===C(F)&&(L?(h=null,k=-1):L=!0,h=N,k=f+(e-d))):(a.sortIndex=c,A(E,a),K||J||(K=!0,g=O));return a};exports.unstable_cancelCallback=function(a){a.callback=null}; | ||
exports.unstable_wrapCallback=function(a){var b=I;return function(){var c=I;I=b;try{return a.apply(this,arguments)}finally{I=c}}};exports.unstable_getCurrentPriorityLevel=function(){return I};exports.unstable_shouldYield=function(){var a=f;M(a);var b=C(E);return b!==H&&null!==H&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<H.expirationTime||t()};exports.unstable_requestPaint=function(){q=!0};exports.unstable_continueExecution=function(){K||J||(K=!0,g=O)}; | ||
exports.unstable_pauseExecution=function(){};exports.unstable_getFirstCallbackNode=function(){return C(E)};exports.unstable_now=function(){return f};exports.unstable_forceFrameRate=function(){};exports.unstable_Profiling=null; | ||
'use strict';var f=0,g=null,h=null,k=-1,l=null,m=-1,n=!1,p=!1,q=!1,r=!1;function t(){return-1!==m&&null!==l&&l.length>=m||r&&q?n=!0:!1}function x(){if(p)throw Error("Already flushing work.");if(null!==g){var a=g;p=!0;try{var b=!0;do b=a(!0,f);while(b);b||(g=null);return!0}finally{p=!1}}else return!1}function z(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<A(e,b))a[d]=b,a[c]=e,c=d;else break a}}function B(a){a=a[0];return void 0===a?null:a} | ||
function C(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var u=2*(d+1)-1,v=a[u],w=u+1,y=a[w];if(void 0!==v&&0>A(v,c))void 0!==y&&0>A(y,v)?(a[d]=y,a[w]=c,d=w):(a[d]=v,a[u]=c,d=u);else if(void 0!==y&&0>A(y,c))a[d]=y,a[w]=c,d=w;else break a}}return b}return null}function A(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var D=[],E=[],F=1,G=null,H=3,I=!1,J=!1,K=!1; | ||
function L(a){for(var b=B(E);null!==b;){if(null===b.callback)C(E);else if(b.startTime<=a)C(E),b.sortIndex=b.expirationTime,z(D,b);else break;b=B(E)}}function M(a){K=!1;L(a);if(!J)if(null!==B(D))J=!0,g=N;else{var b=B(E);null!==b&&(a=b.startTime-a,h=M,k=f+a)}} | ||
function N(a,b){J=!1;K&&(K=!1,h=null,k=-1);I=!0;var c=H;try{L(b);for(G=B(D);null!==G&&(!(G.expirationTime>b)||a&&!t());){var d=G.callback;if("function"===typeof d){G.callback=null;H=G.priorityLevel;var e=d(G.expirationTime<=b);b=f;"function"===typeof e?G.callback=e:G===B(D)&&C(D);L(b)}else C(D);G=B(D)}if(null!==G)var u=!0;else{var v=B(E);if(null!==v){var w=v.startTime-b;h=M;k=f+w}u=!1}return u}finally{G=null,H=c,I=!1}}exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1; | ||
exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_advanceTime=function(a){"disabledLog"!==console.log.name&&(f+=a,null!==h&&k<=f&&(h(f),k=-1,h=null))};exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_clearYields=function(){if(null===l)return[];var a=l;l=null;return a};exports.unstable_continueExecution=function(){J||I||(J=!0,g=N)}; | ||
exports.unstable_flushAll=function(){if(null!==l)throw Error("Log is not empty. Assert on the log of yielded values before flushing additional work.");x();if(null!==l)throw Error("While flushing work, something yielded a value. Use an assertion helper to assert on the log of yielded values, e.g. expect(Scheduler).toFlushAndYield([...])");};exports.unstable_flushAllWithoutAsserting=x; | ||
exports.unstable_flushExpired=function(){if(p)throw Error("Already flushing work.");if(null!==g){p=!0;try{g(!1,f)||(g=null)}finally{p=!1}}};exports.unstable_flushNumberOfYields=function(a){if(p)throw Error("Already flushing work.");if(null!==g){var b=g;m=a;p=!0;try{a=!0;do a=b(!0,f);while(a&&!n);a||(g=null)}finally{m=-1,p=n=!1}}}; | ||
exports.unstable_flushUntilNextPaint=function(){if(p)throw Error("Already flushing work.");if(null!==g){var a=g;r=!0;q=!1;p=!0;try{var b=!0;do b=a(!0,f);while(b&&!n);b||(g=null)}finally{p=n=r=!1}}};exports.unstable_forceFrameRate=function(){};exports.unstable_getCurrentPriorityLevel=function(){return H};exports.unstable_getFirstCallbackNode=function(){return B(D)};exports.unstable_next=function(a){switch(H){case 1:case 2:case 3:var b=3;break;default:b=H}var c=H;H=b;try{return a()}finally{H=c}}; | ||
exports.unstable_now=function(){return f};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=function(){q=!0};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;H=a;try{return b()}finally{H=c}}; | ||
exports.unstable_scheduleCallback=function(a,b,c){var d=f;"object"===typeof c&&null!==c?(c=c.delay,c="number"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:F++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,z(E,a),null===B(D)&&a===B(E)&&(K?(h=null,k=-1):K=!0,h=M,k=f+(c-d))):(a.sortIndex=e,z(D,a),J||I||(J=!0,g=N));return a}; | ||
exports.unstable_shouldYield=function(){var a=f;L(a);var b=B(D);return b!==G&&null!==G&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<G.expirationTime||t()};exports.unstable_wrapCallback=function(a){var b=H;return function(){var c=H;H=b;try{return a.apply(this,arguments)}finally{H=c}}};exports.unstable_yieldValue=function(a){"disabledLog"!==console.log.name&&(null===l?l=[a]:l.push(a))}; |
@@ -1,2 +0,2 @@ | ||
/** @license React v0.0.0-experimental-38dd17ab9 | ||
/** @license React v0.0.0-experimental-3d0895557 | ||
* scheduler.development.js | ||
@@ -12,4 +12,2 @@ * | ||
if (process.env.NODE_ENV !== "production") { | ||
@@ -19,10 +17,6 @@ (function() { | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
var enableSchedulerDebugging = false; | ||
var enableIsInputPending = false; | ||
var enableProfiling = true; | ||
var requestHostCallback; | ||
var requestHostTimeout; | ||
@@ -33,4 +27,2 @@ var cancelHostTimeout; | ||
if ( // If Scheduler runs in a non-DOM environment, it falls back to a naive | ||
@@ -105,7 +97,9 @@ // implementation using setTimeout. | ||
if (typeof requestAnimationFrame !== 'function') { | ||
console.error("This browser doesn't support requestAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills'); | ||
// Using console['error'] to evade Babel and ESLint | ||
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 cancelAnimationFrame !== 'function') { | ||
console.error("This browser doesn't support cancelAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills'); | ||
// Using console['error'] to evade Babel and ESLint | ||
console['error']("This browser doesn't support cancelAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills'); | ||
} | ||
@@ -135,40 +129,4 @@ } | ||
var deadline = 0; // TODO: Make this configurable | ||
// TODO: Adjust this based on priority? | ||
var maxYieldInterval = 300; | ||
var needsPaint = false; | ||
if (enableIsInputPending && navigator !== undefined && navigator.scheduling !== undefined && navigator.scheduling.isInputPending !== undefined) { | ||
var scheduling = navigator.scheduling; | ||
shouldYieldToHost = function () { | ||
var currentTime = exports.unstable_now(); | ||
if (currentTime >= deadline) { | ||
// There's no time left. We may want to yield control of the main | ||
// thread, so the browser can perform high priority tasks. The main ones | ||
// are painting and user input. If there's a pending paint or a pending | ||
// input, then we should yield. But if there's neither, then we can | ||
// yield less often while remaining responsive. We'll eventually yield | ||
// regardless, since there could be a pending paint that wasn't | ||
// accompanied by a call to `requestPaint`, or other main thread tasks | ||
// like network events. | ||
if (needsPaint || scheduling.isInputPending()) { | ||
// There is either a pending paint or a pending input. | ||
return true; | ||
} // There's no pending input. Only yield if we've reached the max | ||
// yield interval. | ||
return currentTime >= maxYieldInterval; | ||
} else { | ||
// There's still time left in the frame. | ||
return false; | ||
} | ||
}; | ||
requestPaint = function () { | ||
needsPaint = true; | ||
}; | ||
} else { | ||
{ | ||
// `isInputPending` is not available. Since we have no way of knowing if | ||
@@ -186,3 +144,4 @@ // there's pending input, always yield at the end of the frame. | ||
if (fps < 0 || fps > 125) { | ||
console.error('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing framerates higher than 125 fps is not unsupported'); | ||
// Using console['error'] to evade Babel and ESLint | ||
console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing frame rates higher than 125 fps is not supported'); | ||
return; | ||
@@ -228,6 +187,2 @@ } | ||
} // Yielding to the browser will give it a chance to paint, so we can | ||
// reset this. | ||
needsPaint = false; | ||
}; | ||
@@ -291,3 +246,3 @@ | ||
while (true) { | ||
var parentIndex = Math.floor((index - 1) / 2); | ||
var parentIndex = index - 1 >>> 1; | ||
var parent = heap[parentIndex]; | ||
@@ -355,7 +310,7 @@ | ||
var profilingStateSize = 4; | ||
var sharedProfilingBuffer = enableProfiling ? // $FlowFixMe Flow doesn't know about SharedArrayBuffer | ||
var sharedProfilingBuffer = // $FlowFixMe Flow doesn't know about SharedArrayBuffer | ||
typeof SharedArrayBuffer === 'function' ? new SharedArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : // $FlowFixMe Flow doesn't know about ArrayBuffer | ||
typeof ArrayBuffer === 'function' ? new ArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : null // Don't crash the init path on IE9 | ||
: null; | ||
var profilingState = enableProfiling && sharedProfilingBuffer !== null ? new Int32Array(sharedProfilingBuffer) : []; // We can't read this but it helps save bytes for null checks | ||
; | ||
var profilingState = sharedProfilingBuffer !== null ? new Int32Array(sharedProfilingBuffer) : []; // We can't read this but it helps save bytes for null checks | ||
@@ -367,3 +322,3 @@ var PRIORITY = 0; | ||
if (enableProfiling) { | ||
{ | ||
profilingState[PRIORITY] = NoPriority; // This is maintained with a counter, because the size of the priority queue | ||
@@ -402,3 +357,4 @@ // array might include canceled tasks. | ||
if (eventLogSize > MAX_EVENT_LOG_SIZE) { | ||
console.error("Scheduler Profiling: Event log exceeded maximum size. Don't " + 'forget to call `stopLoggingProfilingEvents()`.'); | ||
// Using console['error'] to evade Babel and ESLint | ||
console['error']("Scheduler Profiling: Event log exceeded maximum size. Don't " + 'forget to call `stopLoggingProfilingEvents()`.'); | ||
stopLoggingProfilingEvents(); | ||
@@ -433,3 +389,3 @@ return; | ||
function markTaskStart(task, ms) { | ||
if (enableProfiling) { | ||
{ | ||
profilingState[QUEUE_SIZE]++; | ||
@@ -446,3 +402,3 @@ | ||
function markTaskCompleted(task, ms) { | ||
if (enableProfiling) { | ||
{ | ||
profilingState[PRIORITY] = NoPriority; | ||
@@ -458,3 +414,3 @@ profilingState[CURRENT_TASK_ID] = 0; | ||
function markTaskCanceled(task, ms) { | ||
if (enableProfiling) { | ||
{ | ||
profilingState[QUEUE_SIZE]--; | ||
@@ -468,3 +424,3 @@ | ||
function markTaskErrored(task, ms) { | ||
if (enableProfiling) { | ||
{ | ||
profilingState[PRIORITY] = NoPriority; | ||
@@ -480,3 +436,3 @@ profilingState[CURRENT_TASK_ID] = 0; | ||
function markTaskRun(task, ms) { | ||
if (enableProfiling) { | ||
{ | ||
runIdCounter++; | ||
@@ -493,3 +449,3 @@ profilingState[PRIORITY] = task.priorityLevel; | ||
function markTaskYield(task, ms) { | ||
if (enableProfiling) { | ||
{ | ||
profilingState[PRIORITY] = NoPriority; | ||
@@ -505,3 +461,3 @@ profilingState[CURRENT_TASK_ID] = 0; | ||
function markSchedulerSuspended(ms) { | ||
if (enableProfiling) { | ||
{ | ||
mainThreadIdCounter++; | ||
@@ -515,3 +471,3 @@ | ||
function markSchedulerUnsuspended(ms) { | ||
if (enableProfiling) { | ||
{ | ||
if (eventLog !== null) { | ||
@@ -531,7 +487,7 @@ logEvent([SchedulerResumeEvent, ms * 1000, mainThreadIdCounter]); | ||
var USER_BLOCKING_PRIORITY = 250; | ||
var USER_BLOCKING_PRIORITY_TIMEOUT = 250; | ||
var NORMAL_PRIORITY_TIMEOUT = 5000; | ||
var LOW_PRIORITY_TIMEOUT = 10000; // Never times out | ||
var IDLE_PRIORITY = maxSigned31BitInt; // Tasks are stored on a min heap | ||
var IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap | ||
@@ -542,4 +498,2 @@ var taskQueue = []; | ||
var taskIdCounter = 1; // Pausing the scheduler is useful for debugging. | ||
var isSchedulerPaused = false; | ||
var currentTask = null; | ||
@@ -566,3 +520,3 @@ var currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrancy. | ||
if (enableProfiling) { | ||
{ | ||
markTaskStart(timer, currentTime); | ||
@@ -599,3 +553,3 @@ timer.isQueued = true; | ||
function flushWork(hasTimeRemaining, initialTime) { | ||
if (enableProfiling) { | ||
{ | ||
markSchedulerUnsuspended(initialTime); | ||
@@ -630,3 +584,3 @@ } // We'll need a host callback the next time work is scheduled. | ||
} else { | ||
// No catch in prod codepath. | ||
// No catch in prod code path. | ||
return workLoop(hasTimeRemaining, initialTime); | ||
@@ -639,3 +593,3 @@ } | ||
if (enableProfiling) { | ||
{ | ||
var _currentTime = exports.unstable_now(); | ||
@@ -653,3 +607,3 @@ | ||
while (currentTask !== null && !(enableSchedulerDebugging && isSchedulerPaused)) { | ||
while (currentTask !== null && !(enableSchedulerDebugging )) { | ||
if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) { | ||
@@ -662,3 +616,3 @@ // This currentTask hasn't expired, and we've reached the deadline. | ||
if (callback !== null) { | ||
if (typeof callback === 'function') { | ||
currentTask.callback = null; | ||
@@ -675,3 +629,3 @@ currentPriorityLevel = currentTask.priorityLevel; | ||
} else { | ||
if (enableProfiling) { | ||
{ | ||
markTaskCompleted(currentTask, currentTime); | ||
@@ -773,26 +727,5 @@ currentTask.isQueued = false; | ||
function timeoutForPriorityLevel(priorityLevel) { | ||
switch (priorityLevel) { | ||
case ImmediatePriority: | ||
return IMMEDIATE_PRIORITY_TIMEOUT; | ||
case UserBlockingPriority: | ||
return USER_BLOCKING_PRIORITY; | ||
case IdlePriority: | ||
return IDLE_PRIORITY; | ||
case LowPriority: | ||
return LOW_PRIORITY_TIMEOUT; | ||
case NormalPriority: | ||
default: | ||
return NORMAL_PRIORITY_TIMEOUT; | ||
} | ||
} | ||
function unstable_scheduleCallback(priorityLevel, callback, options) { | ||
var currentTime = exports.unstable_now(); | ||
var startTime; | ||
var timeout; | ||
@@ -807,9 +740,31 @@ if (typeof options === 'object' && options !== null) { | ||
} | ||
timeout = typeof options.timeout === 'number' ? options.timeout : timeoutForPriorityLevel(priorityLevel); | ||
} else { | ||
timeout = timeoutForPriorityLevel(priorityLevel); | ||
startTime = currentTime; | ||
} | ||
var timeout; | ||
switch (priorityLevel) { | ||
case ImmediatePriority: | ||
timeout = IMMEDIATE_PRIORITY_TIMEOUT; | ||
break; | ||
case UserBlockingPriority: | ||
timeout = USER_BLOCKING_PRIORITY_TIMEOUT; | ||
break; | ||
case IdlePriority: | ||
timeout = IDLE_PRIORITY_TIMEOUT; | ||
break; | ||
case LowPriority: | ||
timeout = LOW_PRIORITY_TIMEOUT; | ||
break; | ||
case NormalPriority: | ||
default: | ||
timeout = NORMAL_PRIORITY_TIMEOUT; | ||
break; | ||
} | ||
var expirationTime = startTime + timeout; | ||
@@ -825,3 +780,3 @@ var newTask = { | ||
if (enableProfiling) { | ||
{ | ||
newTask.isQueued = false; | ||
@@ -851,3 +806,3 @@ } | ||
if (enableProfiling) { | ||
{ | ||
markTaskStart(newTask, currentTime); | ||
@@ -869,7 +824,5 @@ newTask.isQueued = true; | ||
function unstable_pauseExecution() { | ||
isSchedulerPaused = true; | ||
} | ||
function unstable_continueExecution() { | ||
isSchedulerPaused = false; | ||
@@ -887,3 +840,3 @@ if (!isHostCallbackScheduled && !isPerformingWork) { | ||
function unstable_cancelCallback(task) { | ||
if (enableProfiling) { | ||
{ | ||
if (task.isQueued) { | ||
@@ -914,26 +867,26 @@ var currentTime = exports.unstable_now(); | ||
var unstable_requestPaint = requestPaint; | ||
var unstable_Profiling = enableProfiling ? { | ||
var unstable_Profiling = { | ||
startLoggingProfilingEvents: startLoggingProfilingEvents, | ||
stopLoggingProfilingEvents: stopLoggingProfilingEvents, | ||
sharedProfilingBuffer: sharedProfilingBuffer | ||
} : null; | ||
} ; | ||
exports.unstable_IdlePriority = IdlePriority; | ||
exports.unstable_ImmediatePriority = ImmediatePriority; | ||
exports.unstable_LowPriority = LowPriority; | ||
exports.unstable_NormalPriority = NormalPriority; | ||
exports.unstable_Profiling = unstable_Profiling; | ||
exports.unstable_UserBlockingPriority = UserBlockingPriority; | ||
exports.unstable_NormalPriority = NormalPriority; | ||
exports.unstable_IdlePriority = IdlePriority; | ||
exports.unstable_LowPriority = LowPriority; | ||
exports.unstable_cancelCallback = unstable_cancelCallback; | ||
exports.unstable_continueExecution = unstable_continueExecution; | ||
exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel; | ||
exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode; | ||
exports.unstable_next = unstable_next; | ||
exports.unstable_pauseExecution = unstable_pauseExecution; | ||
exports.unstable_requestPaint = unstable_requestPaint; | ||
exports.unstable_runWithPriority = unstable_runWithPriority; | ||
exports.unstable_next = unstable_next; | ||
exports.unstable_scheduleCallback = unstable_scheduleCallback; | ||
exports.unstable_cancelCallback = unstable_cancelCallback; | ||
exports.unstable_shouldYield = unstable_shouldYield; | ||
exports.unstable_wrapCallback = unstable_wrapCallback; | ||
exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel; | ||
exports.unstable_shouldYield = unstable_shouldYield; | ||
exports.unstable_requestPaint = unstable_requestPaint; | ||
exports.unstable_continueExecution = unstable_continueExecution; | ||
exports.unstable_pauseExecution = unstable_pauseExecution; | ||
exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode; | ||
exports.unstable_Profiling = unstable_Profiling; | ||
})(); | ||
} |
@@ -1,2 +0,2 @@ | ||
/** @license React v0.0.0-experimental-38dd17ab9 | ||
/** @license React v0.0.0-experimental-3d0895557 | ||
* scheduler.production.min.js | ||
@@ -9,15 +9,13 @@ * | ||
*/ | ||
'use strict';Object.defineProperty(exports,"__esModule",{value:!0});var f,g,h,k,l; | ||
'use strict';var f,g,h,k,l; | ||
if("undefined"===typeof window||"function"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date, | ||
y=window.setTimeout,z=window.clearTimeout;if("undefined"!==typeof console){var A=window.cancelAnimationFrame;"function"!==typeof window.requestAnimationFrame&&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 A&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"=== | ||
typeof w&&"function"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error("forceFrameRate takes a positive int between 0 and 125, forcing framerates higher than 125 fps is not unsupported"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage= | ||
function(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=Math.floor((c-1)/2),e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a} | ||
typeof w&&"function"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):F=0<a?Math.floor(1E3/a):5};var H=new MessageChannel,I=H.port2;H.port1.onmessage= | ||
function(){if(null!==D){var a=exports.unstable_now();G=a+F;try{D(!0,a)?I.postMessage(null):(C=!1,D=null)}catch(b){throw I.postMessage(null),b;}}else C=!1};f=function(a){D=a;C||(C=!0,I.postMessage(null))};g=function(a,b){E=y(function(){a(exports.unstable_now())},b)};h=function(){z(E);E=-1}}function J(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<K(e,b))a[d]=b,a[c]=e,c=d;else break a}}function L(a){a=a[0];return void 0===a?null:a} | ||
function M(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1; | ||
function V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}} | ||
function X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();"function"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}} | ||
function Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;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=R;R=a;try{return b()}finally{R=c}}; | ||
exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}}; | ||
exports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if("object"===typeof c&&null!==c){var e=c.delay;e="number"===typeof e&&0<e?d+e:d;c="number"===typeof c.timeout?c.timeout:Y(a)}else c=Y(a),e=d;c=e+c;a={id:P++,callback:b,priorityLevel:a,startTime:e,expirationTime:c,sortIndex:-1};e>d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};exports.unstable_cancelCallback=function(a){a.callback=null}; | ||
exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};exports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_requestPaint=Z;exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))}; | ||
exports.unstable_pauseExecution=function(){};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_Profiling=null; | ||
function X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if("function"===typeof d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();"function"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}var Y=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1; | ||
exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};exports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)}; | ||
exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Y;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}}; | ||
exports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();"object"===typeof c&&null!==c?(c=c.delay,c="number"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:P++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,c-d))):(a.sortIndex=e,J(N,a),T||S||(T=!0,f(X)));return a}; | ||
exports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime<Q.expirationTime||k()};exports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}}; |
{ | ||
"name": "scheduler", | ||
"version": "0.0.0-experimental-38dd17ab9", | ||
"version": "0.0.0-experimental-3d0895557", | ||
"description": "Cooperative scheduler for the browser environment.", | ||
@@ -31,2 +31,3 @@ "main": "index.js", | ||
"unstable_mock.js", | ||
"unstable_post_task.js", | ||
"cjs/", | ||
@@ -33,0 +34,0 @@ "umd/" |
@@ -17,4 +17,4 @@ /** | ||
: typeof define === 'function' && define.amd // eslint-disable-line no-undef | ||
? define(['react'], factory) // eslint-disable-line no-undef | ||
: (global.SchedulerTracing = factory(global)); | ||
? define(['react'], factory) // eslint-disable-line no-undef | ||
: (global.SchedulerTracing = factory(global)); | ||
})(this, function(global) { | ||
@@ -21,0 +21,0 @@ function unstable_clear() { |
@@ -17,4 +17,4 @@ /** | ||
: typeof define === 'function' && define.amd // eslint-disable-line no-undef | ||
? define(['react'], factory) // eslint-disable-line no-undef | ||
: (global.SchedulerTracing = factory(global)); | ||
? define(['react'], factory) // eslint-disable-line no-undef | ||
: (global.SchedulerTracing = factory(global)); | ||
})(this, function(global) { | ||
@@ -21,0 +21,0 @@ function unstable_clear() { |
@@ -17,4 +17,4 @@ /** | ||
: typeof define === 'function' && define.amd // eslint-disable-line no-undef | ||
? define(['react'], factory) // eslint-disable-line no-undef | ||
: (global.SchedulerTracing = factory(global)); | ||
? define(['react'], factory) // eslint-disable-line no-undef | ||
: (global.SchedulerTracing = factory(global)); | ||
})(this, function(global) { | ||
@@ -21,0 +21,0 @@ function unstable_clear() { |
@@ -1,2 +0,2 @@ | ||
/** @license React v0.0.0-experimental-38dd17ab9 | ||
/** @license React v0.0.0-experimental-3d0895557 | ||
* scheduler-unstable_mock.development.js | ||
@@ -13,183 +13,193 @@ * | ||
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | ||
typeof define === 'function' && define.amd ? define(['exports'], factory) : | ||
(factory((global.SchedulerMock = {}))); | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | ||
typeof define === 'function' && define.amd ? define(['exports'], factory) : | ||
(global = global || self, factory(global.SchedulerMock = {})); | ||
}(this, (function (exports) { 'use strict'; | ||
var enableSchedulerDebugging = false; | ||
var enableSchedulerDebugging = false; | ||
var enableProfiling = true; | ||
var enableProfiling = true; | ||
var currentTime = 0; | ||
var scheduledCallback = null; | ||
var scheduledTimeout = null; | ||
var timeoutTime = -1; | ||
var yieldedValues = null; | ||
var expectedNumberOfYields = -1; | ||
var didStop = false; | ||
var isFlushing = false; | ||
var needsPaint = false; | ||
var shouldYieldForPaint = false; | ||
function requestHostCallback(callback) { | ||
scheduledCallback = callback; | ||
} | ||
function requestHostTimeout(callback, ms) { | ||
scheduledTimeout = callback; | ||
timeoutTime = currentTime + ms; | ||
} | ||
function cancelHostTimeout() { | ||
scheduledTimeout = null; | ||
timeoutTime = -1; | ||
} | ||
function shouldYieldToHost() { | ||
if (expectedNumberOfYields !== -1 && yieldedValues !== null && yieldedValues.length >= expectedNumberOfYields || shouldYieldForPaint && needsPaint) { | ||
// We yielded at least as many values as expected. Stop flushing. | ||
didStop = true; | ||
return true; | ||
} | ||
var currentTime = 0; | ||
var scheduledCallback = null; | ||
var scheduledTimeout = null; | ||
var timeoutTime = -1; | ||
var yieldedValues = null; | ||
var expectedNumberOfYields = -1; | ||
var didStop = false; | ||
var isFlushing = false; | ||
var needsPaint = false; | ||
var shouldYieldForPaint = false; | ||
function requestHostCallback(callback) { | ||
scheduledCallback = callback; | ||
} | ||
function requestHostTimeout(callback, ms) { | ||
scheduledTimeout = callback; | ||
timeoutTime = currentTime + ms; | ||
} | ||
function cancelHostTimeout() { | ||
scheduledTimeout = null; | ||
timeoutTime = -1; | ||
} | ||
function shouldYieldToHost() { | ||
if (expectedNumberOfYields !== -1 && yieldedValues !== null && yieldedValues.length >= expectedNumberOfYields || shouldYieldForPaint && needsPaint) { | ||
// We yielded at least as many values as expected. Stop flushing. | ||
didStop = true; | ||
return true; | ||
return false; | ||
} | ||
function getCurrentTime() { | ||
return currentTime; | ||
} | ||
function forceFrameRate() {// No-op | ||
} | ||
return false; | ||
} | ||
function getCurrentTime() { | ||
return currentTime; | ||
} | ||
function forceFrameRate() {// No-op | ||
} | ||
// Should only be used via an assertion helper that inspects the yielded values. | ||
function unstable_flushNumberOfYields(count) { | ||
if (isFlushing) { | ||
throw new Error('Already flushing work.'); | ||
} | ||
function unstable_flushNumberOfYields(count) { | ||
if (isFlushing) { | ||
throw new Error('Already flushing work.'); | ||
} | ||
if (scheduledCallback !== null) { | ||
var cb = scheduledCallback; | ||
expectedNumberOfYields = count; | ||
isFlushing = true; | ||
if (scheduledCallback !== null) { | ||
var cb = scheduledCallback; | ||
expectedNumberOfYields = count; | ||
isFlushing = true; | ||
try { | ||
var hasMoreWork = true; | ||
try { | ||
var hasMoreWork = true; | ||
do { | ||
hasMoreWork = cb(true, currentTime); | ||
} while (hasMoreWork && !didStop); | ||
do { | ||
hasMoreWork = cb(true, currentTime); | ||
} while (hasMoreWork && !didStop); | ||
if (!hasMoreWork) { | ||
scheduledCallback = null; | ||
if (!hasMoreWork) { | ||
scheduledCallback = null; | ||
} | ||
} finally { | ||
expectedNumberOfYields = -1; | ||
didStop = false; | ||
isFlushing = false; | ||
} | ||
} finally { | ||
expectedNumberOfYields = -1; | ||
didStop = false; | ||
isFlushing = false; | ||
} | ||
} | ||
} | ||
function unstable_flushUntilNextPaint() { | ||
if (isFlushing) { | ||
throw new Error('Already flushing work.'); | ||
} | ||
function unstable_flushUntilNextPaint() { | ||
if (isFlushing) { | ||
throw new Error('Already flushing work.'); | ||
} | ||
if (scheduledCallback !== null) { | ||
var cb = scheduledCallback; | ||
shouldYieldForPaint = true; | ||
needsPaint = false; | ||
isFlushing = true; | ||
if (scheduledCallback !== null) { | ||
var cb = scheduledCallback; | ||
shouldYieldForPaint = true; | ||
needsPaint = false; | ||
isFlushing = true; | ||
try { | ||
var hasMoreWork = true; | ||
try { | ||
var hasMoreWork = true; | ||
do { | ||
hasMoreWork = cb(true, currentTime); | ||
} while (hasMoreWork && !didStop); | ||
do { | ||
hasMoreWork = cb(true, currentTime); | ||
} while (hasMoreWork && !didStop); | ||
if (!hasMoreWork) { | ||
scheduledCallback = null; | ||
if (!hasMoreWork) { | ||
scheduledCallback = null; | ||
} | ||
} finally { | ||
shouldYieldForPaint = false; | ||
didStop = false; | ||
isFlushing = false; | ||
} | ||
} finally { | ||
shouldYieldForPaint = false; | ||
didStop = false; | ||
isFlushing = false; | ||
} | ||
} | ||
} | ||
function unstable_flushExpired() { | ||
if (isFlushing) { | ||
throw new Error('Already flushing work.'); | ||
} | ||
function unstable_flushExpired() { | ||
if (isFlushing) { | ||
throw new Error('Already flushing work.'); | ||
} | ||
if (scheduledCallback !== null) { | ||
isFlushing = true; | ||
if (scheduledCallback !== null) { | ||
isFlushing = true; | ||
try { | ||
var hasMoreWork = scheduledCallback(false, currentTime); | ||
try { | ||
var hasMoreWork = scheduledCallback(false, currentTime); | ||
if (!hasMoreWork) { | ||
scheduledCallback = null; | ||
if (!hasMoreWork) { | ||
scheduledCallback = null; | ||
} | ||
} finally { | ||
isFlushing = false; | ||
} | ||
} finally { | ||
isFlushing = false; | ||
} | ||
} | ||
} | ||
function unstable_flushAllWithoutAsserting() { | ||
// Returns false if no work was flushed. | ||
if (isFlushing) { | ||
throw new Error('Already flushing work.'); | ||
} | ||
function unstable_flushAllWithoutAsserting() { | ||
// Returns false if no work was flushed. | ||
if (isFlushing) { | ||
throw new Error('Already flushing work.'); | ||
} | ||
if (scheduledCallback !== null) { | ||
var cb = scheduledCallback; | ||
isFlushing = true; | ||
if (scheduledCallback !== null) { | ||
var cb = scheduledCallback; | ||
isFlushing = true; | ||
try { | ||
var hasMoreWork = true; | ||
try { | ||
var hasMoreWork = true; | ||
do { | ||
hasMoreWork = cb(true, currentTime); | ||
} while (hasMoreWork); | ||
do { | ||
hasMoreWork = cb(true, currentTime); | ||
} while (hasMoreWork); | ||
if (!hasMoreWork) { | ||
scheduledCallback = null; | ||
if (!hasMoreWork) { | ||
scheduledCallback = null; | ||
} | ||
return true; | ||
} finally { | ||
isFlushing = false; | ||
} | ||
return true; | ||
} finally { | ||
isFlushing = false; | ||
} else { | ||
return false; | ||
} | ||
} else { | ||
return false; | ||
} | ||
} | ||
function unstable_clearYields() { | ||
if (yieldedValues === null) { | ||
return []; | ||
} | ||
function unstable_clearYields() { | ||
if (yieldedValues === null) { | ||
return []; | ||
} | ||
var values = yieldedValues; | ||
yieldedValues = null; | ||
return values; | ||
} | ||
function unstable_flushAll() { | ||
if (yieldedValues !== null) { | ||
throw new Error('Log is not empty. Assert on the log of yielded values before ' + 'flushing additional work.'); | ||
var values = yieldedValues; | ||
yieldedValues = null; | ||
return values; | ||
} | ||
function unstable_flushAll() { | ||
if (yieldedValues !== null) { | ||
throw new Error('Log is not empty. Assert on the log of yielded values before ' + 'flushing additional work.'); | ||
} | ||
unstable_flushAllWithoutAsserting(); | ||
unstable_flushAllWithoutAsserting(); | ||
if (yieldedValues !== null) { | ||
throw new Error('While flushing work, something yielded a value. Use an ' + 'assertion helper to assert on the log of yielded values, e.g. ' + 'expect(Scheduler).toFlushAndYield([...])'); | ||
if (yieldedValues !== null) { | ||
throw new Error('While flushing work, something yielded a value. Use an ' + 'assertion helper to assert on the log of yielded values, e.g. ' + 'expect(Scheduler).toFlushAndYield([...])'); | ||
} | ||
} | ||
} | ||
function unstable_yieldValue(value) { | ||
if (yieldedValues === null) { | ||
yieldedValues = [value]; | ||
} else { | ||
yieldedValues.push(value); | ||
function unstable_yieldValue(value) { | ||
// eslint-disable-next-line react-internal/no-production-logging | ||
if (console.log.name === 'disabledLog') { | ||
// If console.log has been patched, we assume we're in render | ||
// replaying and we ignore any values yielding in the second pass. | ||
return; | ||
} | ||
if (yieldedValues === null) { | ||
yieldedValues = [value]; | ||
} else { | ||
yieldedValues.push(value); | ||
} | ||
} | ||
} | ||
function unstable_advanceTime(ms) { | ||
currentTime += ms; | ||
function unstable_advanceTime(ms) { | ||
// eslint-disable-next-line react-internal/no-production-logging | ||
if (console.log.name === 'disabledLog') { | ||
// If console.log has been patched, we assume we're in render | ||
// replaying and we ignore any time advancing in the second pass. | ||
return; | ||
} | ||
if (!isFlushing) { | ||
currentTime += ms; | ||
if (scheduledTimeout !== null && timeoutTime <= currentTime) { | ||
@@ -200,67 +210,73 @@ scheduledTimeout(currentTime); | ||
} | ||
} | ||
function requestPaint() { | ||
needsPaint = true; | ||
} | ||
unstable_flushExpired(); | ||
function push(heap, node) { | ||
var index = heap.length; | ||
heap.push(node); | ||
siftUp(heap, node, index); | ||
} | ||
} | ||
function requestPaint() { | ||
needsPaint = true; | ||
} | ||
function peek(heap) { | ||
var first = heap[0]; | ||
return first === undefined ? null : first; | ||
} | ||
function pop(heap) { | ||
var first = heap[0]; | ||
function push(heap, node) { | ||
var index = heap.length; | ||
heap.push(node); | ||
siftUp(heap, node, index); | ||
} | ||
function peek(heap) { | ||
var first = heap[0]; | ||
return first === undefined ? null : first; | ||
} | ||
function pop(heap) { | ||
var first = heap[0]; | ||
if (first !== undefined) { | ||
var last = heap.pop(); | ||
if (first !== undefined) { | ||
var last = heap.pop(); | ||
if (last !== first) { | ||
heap[0] = last; | ||
siftDown(heap, last, 0); | ||
} | ||
if (last !== first) { | ||
heap[0] = last; | ||
siftDown(heap, last, 0); | ||
return first; | ||
} else { | ||
return null; | ||
} | ||
return first; | ||
} else { | ||
return null; | ||
} | ||
} | ||
function siftUp(heap, node, i) { | ||
var index = i; | ||
function siftUp(heap, node, i) { | ||
var index = i; | ||
while (true) { | ||
var parentIndex = Math.floor((index - 1) / 2); | ||
var parent = heap[parentIndex]; | ||
while (true) { | ||
var parentIndex = index - 1 >>> 1; | ||
var parent = heap[parentIndex]; | ||
if (parent !== undefined && compare(parent, node) > 0) { | ||
// The parent is larger. Swap positions. | ||
heap[parentIndex] = node; | ||
heap[index] = parent; | ||
index = parentIndex; | ||
} else { | ||
// The parent is smaller. Exit. | ||
return; | ||
if (parent !== undefined && compare(parent, node) > 0) { | ||
// The parent is larger. Swap positions. | ||
heap[parentIndex] = node; | ||
heap[index] = parent; | ||
index = parentIndex; | ||
} else { | ||
// The parent is smaller. Exit. | ||
return; | ||
} | ||
} | ||
} | ||
} | ||
function siftDown(heap, node, i) { | ||
var index = i; | ||
var length = heap.length; | ||
function siftDown(heap, node, i) { | ||
var index = i; | ||
var length = heap.length; | ||
while (index < length) { | ||
var leftIndex = (index + 1) * 2 - 1; | ||
var left = heap[leftIndex]; | ||
var rightIndex = leftIndex + 1; | ||
var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those. | ||
while (index < length) { | ||
var leftIndex = (index + 1) * 2 - 1; | ||
var left = heap[leftIndex]; | ||
var rightIndex = leftIndex + 1; | ||
var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those. | ||
if (left !== undefined && compare(left, node) < 0) { | ||
if (right !== undefined && compare(right, left) < 0) { | ||
if (left !== undefined && compare(left, node) < 0) { | ||
if (right !== undefined && compare(right, left) < 0) { | ||
heap[index] = right; | ||
heap[rightIndex] = node; | ||
index = rightIndex; | ||
} else { | ||
heap[index] = left; | ||
heap[leftIndex] = node; | ||
index = leftIndex; | ||
} | ||
} else if (right !== undefined && compare(right, node) < 0) { | ||
heap[index] = right; | ||
@@ -270,462 +286,434 @@ heap[rightIndex] = node; | ||
} else { | ||
heap[index] = left; | ||
heap[leftIndex] = node; | ||
index = leftIndex; | ||
// Neither child is smaller. Exit. | ||
return; | ||
} | ||
} else if (right !== undefined && compare(right, node) < 0) { | ||
heap[index] = right; | ||
heap[rightIndex] = node; | ||
index = rightIndex; | ||
} else { | ||
// Neither child is smaller. Exit. | ||
return; | ||
} | ||
} | ||
} | ||
function compare(a, b) { | ||
// Compare sort index first, then task id. | ||
var diff = a.sortIndex - b.sortIndex; | ||
return diff !== 0 ? diff : a.id - b.id; | ||
} | ||
function compare(a, b) { | ||
// Compare sort index first, then task id. | ||
var diff = a.sortIndex - b.sortIndex; | ||
return diff !== 0 ? diff : a.id - b.id; | ||
} | ||
// TODO: Use symbols? | ||
var NoPriority = 0; | ||
var ImmediatePriority = 1; | ||
var UserBlockingPriority = 2; | ||
var NormalPriority = 3; | ||
var LowPriority = 4; | ||
var IdlePriority = 5; | ||
// TODO: Use symbols? | ||
var NoPriority = 0; | ||
var ImmediatePriority = 1; | ||
var UserBlockingPriority = 2; | ||
var NormalPriority = 3; | ||
var LowPriority = 4; | ||
var IdlePriority = 5; | ||
var runIdCounter = 0; | ||
var mainThreadIdCounter = 0; | ||
var profilingStateSize = 4; | ||
var sharedProfilingBuffer = enableProfiling ? // $FlowFixMe Flow doesn't know about SharedArrayBuffer | ||
typeof SharedArrayBuffer === 'function' ? new SharedArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : // $FlowFixMe Flow doesn't know about ArrayBuffer | ||
typeof ArrayBuffer === 'function' ? new ArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : null // Don't crash the init path on IE9 | ||
: null; | ||
var profilingState = enableProfiling && sharedProfilingBuffer !== null ? new Int32Array(sharedProfilingBuffer) : []; // We can't read this but it helps save bytes for null checks | ||
var runIdCounter = 0; | ||
var mainThreadIdCounter = 0; | ||
var profilingStateSize = 4; | ||
var sharedProfilingBuffer = // $FlowFixMe Flow doesn't know about SharedArrayBuffer | ||
typeof SharedArrayBuffer === 'function' ? new SharedArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : // $FlowFixMe Flow doesn't know about ArrayBuffer | ||
typeof ArrayBuffer === 'function' ? new ArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : null // Don't crash the init path on IE9 | ||
; | ||
var profilingState = sharedProfilingBuffer !== null ? new Int32Array(sharedProfilingBuffer) : []; // We can't read this but it helps save bytes for null checks | ||
var PRIORITY = 0; | ||
var CURRENT_TASK_ID = 1; | ||
var CURRENT_RUN_ID = 2; | ||
var QUEUE_SIZE = 3; | ||
var PRIORITY = 0; | ||
var CURRENT_TASK_ID = 1; | ||
var CURRENT_RUN_ID = 2; | ||
var QUEUE_SIZE = 3; | ||
if (enableProfiling) { | ||
profilingState[PRIORITY] = NoPriority; // This is maintained with a counter, because the size of the priority queue | ||
// array might include canceled tasks. | ||
{ | ||
profilingState[PRIORITY] = NoPriority; // This is maintained with a counter, because the size of the priority queue | ||
// array might include canceled tasks. | ||
profilingState[QUEUE_SIZE] = 0; | ||
profilingState[CURRENT_TASK_ID] = 0; | ||
} // Bytes per element is 4 | ||
profilingState[QUEUE_SIZE] = 0; | ||
profilingState[CURRENT_TASK_ID] = 0; | ||
} // Bytes per element is 4 | ||
var INITIAL_EVENT_LOG_SIZE = 131072; | ||
var MAX_EVENT_LOG_SIZE = 524288; // Equivalent to 2 megabytes | ||
var INITIAL_EVENT_LOG_SIZE = 131072; | ||
var MAX_EVENT_LOG_SIZE = 524288; // Equivalent to 2 megabytes | ||
var eventLogSize = 0; | ||
var eventLogBuffer = null; | ||
var eventLog = null; | ||
var eventLogIndex = 0; | ||
var TaskStartEvent = 1; | ||
var TaskCompleteEvent = 2; | ||
var TaskErrorEvent = 3; | ||
var TaskCancelEvent = 4; | ||
var TaskRunEvent = 5; | ||
var TaskYieldEvent = 6; | ||
var SchedulerSuspendEvent = 7; | ||
var SchedulerResumeEvent = 8; | ||
var eventLogSize = 0; | ||
var eventLogBuffer = null; | ||
var eventLog = null; | ||
var eventLogIndex = 0; | ||
var TaskStartEvent = 1; | ||
var TaskCompleteEvent = 2; | ||
var TaskErrorEvent = 3; | ||
var TaskCancelEvent = 4; | ||
var TaskRunEvent = 5; | ||
var TaskYieldEvent = 6; | ||
var SchedulerSuspendEvent = 7; | ||
var SchedulerResumeEvent = 8; | ||
function logEvent(entries) { | ||
if (eventLog !== null) { | ||
var offset = eventLogIndex; | ||
eventLogIndex += entries.length; | ||
function logEvent(entries) { | ||
if (eventLog !== null) { | ||
var offset = eventLogIndex; | ||
eventLogIndex += entries.length; | ||
if (eventLogIndex + 1 > eventLogSize) { | ||
eventLogSize *= 2; | ||
if (eventLogIndex + 1 > eventLogSize) { | ||
eventLogSize *= 2; | ||
if (eventLogSize > MAX_EVENT_LOG_SIZE) { | ||
console.error("Scheduler Profiling: Event log exceeded maximum size. Don't " + 'forget to call `stopLoggingProfilingEvents()`.'); | ||
stopLoggingProfilingEvents(); | ||
return; | ||
if (eventLogSize > MAX_EVENT_LOG_SIZE) { | ||
// Using console['error'] to evade Babel and ESLint | ||
console['error']("Scheduler Profiling: Event log exceeded maximum size. Don't " + 'forget to call `stopLoggingProfilingEvents()`.'); | ||
stopLoggingProfilingEvents(); | ||
return; | ||
} | ||
var newEventLog = new Int32Array(eventLogSize * 4); | ||
newEventLog.set(eventLog); | ||
eventLogBuffer = newEventLog.buffer; | ||
eventLog = newEventLog; | ||
} | ||
var newEventLog = new Int32Array(eventLogSize * 4); | ||
newEventLog.set(eventLog); | ||
eventLogBuffer = newEventLog.buffer; | ||
eventLog = newEventLog; | ||
eventLog.set(entries, offset); | ||
} | ||
} | ||
eventLog.set(entries, offset); | ||
function startLoggingProfilingEvents() { | ||
eventLogSize = INITIAL_EVENT_LOG_SIZE; | ||
eventLogBuffer = new ArrayBuffer(eventLogSize * 4); | ||
eventLog = new Int32Array(eventLogBuffer); | ||
eventLogIndex = 0; | ||
} | ||
} | ||
function stopLoggingProfilingEvents() { | ||
var buffer = eventLogBuffer; | ||
eventLogSize = 0; | ||
eventLogBuffer = null; | ||
eventLog = null; | ||
eventLogIndex = 0; | ||
return buffer; | ||
} | ||
function markTaskStart(task, ms) { | ||
{ | ||
profilingState[QUEUE_SIZE]++; | ||
function startLoggingProfilingEvents() { | ||
eventLogSize = INITIAL_EVENT_LOG_SIZE; | ||
eventLogBuffer = new ArrayBuffer(eventLogSize * 4); | ||
eventLog = new Int32Array(eventLogBuffer); | ||
eventLogIndex = 0; | ||
} | ||
function stopLoggingProfilingEvents() { | ||
var buffer = eventLogBuffer; | ||
eventLogSize = 0; | ||
eventLogBuffer = null; | ||
eventLog = null; | ||
eventLogIndex = 0; | ||
return buffer; | ||
} | ||
function markTaskStart(task, ms) { | ||
if (enableProfiling) { | ||
profilingState[QUEUE_SIZE]++; | ||
if (eventLog !== null) { | ||
// performance.now returns a float, representing milliseconds. When the | ||
// event is logged, it's coerced to an int. Convert to microseconds to | ||
// maintain extra degrees of precision. | ||
logEvent([TaskStartEvent, ms * 1000, task.id, task.priorityLevel]); | ||
if (eventLog !== null) { | ||
// performance.now returns a float, representing milliseconds. When the | ||
// event is logged, it's coerced to an int. Convert to microseconds to | ||
// maintain extra degrees of precision. | ||
logEvent([TaskStartEvent, ms * 1000, task.id, task.priorityLevel]); | ||
} | ||
} | ||
} | ||
} | ||
function markTaskCompleted(task, ms) { | ||
if (enableProfiling) { | ||
profilingState[PRIORITY] = NoPriority; | ||
profilingState[CURRENT_TASK_ID] = 0; | ||
profilingState[QUEUE_SIZE]--; | ||
function markTaskCompleted(task, ms) { | ||
{ | ||
profilingState[PRIORITY] = NoPriority; | ||
profilingState[CURRENT_TASK_ID] = 0; | ||
profilingState[QUEUE_SIZE]--; | ||
if (eventLog !== null) { | ||
logEvent([TaskCompleteEvent, ms * 1000, task.id]); | ||
if (eventLog !== null) { | ||
logEvent([TaskCompleteEvent, ms * 1000, task.id]); | ||
} | ||
} | ||
} | ||
} | ||
function markTaskCanceled(task, ms) { | ||
if (enableProfiling) { | ||
profilingState[QUEUE_SIZE]--; | ||
function markTaskCanceled(task, ms) { | ||
{ | ||
profilingState[QUEUE_SIZE]--; | ||
if (eventLog !== null) { | ||
logEvent([TaskCancelEvent, ms * 1000, task.id]); | ||
if (eventLog !== null) { | ||
logEvent([TaskCancelEvent, ms * 1000, task.id]); | ||
} | ||
} | ||
} | ||
} | ||
function markTaskErrored(task, ms) { | ||
if (enableProfiling) { | ||
profilingState[PRIORITY] = NoPriority; | ||
profilingState[CURRENT_TASK_ID] = 0; | ||
profilingState[QUEUE_SIZE]--; | ||
function markTaskErrored(task, ms) { | ||
{ | ||
profilingState[PRIORITY] = NoPriority; | ||
profilingState[CURRENT_TASK_ID] = 0; | ||
profilingState[QUEUE_SIZE]--; | ||
if (eventLog !== null) { | ||
logEvent([TaskErrorEvent, ms * 1000, task.id]); | ||
if (eventLog !== null) { | ||
logEvent([TaskErrorEvent, ms * 1000, task.id]); | ||
} | ||
} | ||
} | ||
} | ||
function markTaskRun(task, ms) { | ||
if (enableProfiling) { | ||
runIdCounter++; | ||
profilingState[PRIORITY] = task.priorityLevel; | ||
profilingState[CURRENT_TASK_ID] = task.id; | ||
profilingState[CURRENT_RUN_ID] = runIdCounter; | ||
function markTaskRun(task, ms) { | ||
{ | ||
runIdCounter++; | ||
profilingState[PRIORITY] = task.priorityLevel; | ||
profilingState[CURRENT_TASK_ID] = task.id; | ||
profilingState[CURRENT_RUN_ID] = runIdCounter; | ||
if (eventLog !== null) { | ||
logEvent([TaskRunEvent, ms * 1000, task.id, runIdCounter]); | ||
if (eventLog !== null) { | ||
logEvent([TaskRunEvent, ms * 1000, task.id, runIdCounter]); | ||
} | ||
} | ||
} | ||
} | ||
function markTaskYield(task, ms) { | ||
if (enableProfiling) { | ||
profilingState[PRIORITY] = NoPriority; | ||
profilingState[CURRENT_TASK_ID] = 0; | ||
profilingState[CURRENT_RUN_ID] = 0; | ||
function markTaskYield(task, ms) { | ||
{ | ||
profilingState[PRIORITY] = NoPriority; | ||
profilingState[CURRENT_TASK_ID] = 0; | ||
profilingState[CURRENT_RUN_ID] = 0; | ||
if (eventLog !== null) { | ||
logEvent([TaskYieldEvent, ms * 1000, task.id, runIdCounter]); | ||
if (eventLog !== null) { | ||
logEvent([TaskYieldEvent, ms * 1000, task.id, runIdCounter]); | ||
} | ||
} | ||
} | ||
} | ||
function markSchedulerSuspended(ms) { | ||
if (enableProfiling) { | ||
mainThreadIdCounter++; | ||
function markSchedulerSuspended(ms) { | ||
{ | ||
mainThreadIdCounter++; | ||
if (eventLog !== null) { | ||
logEvent([SchedulerSuspendEvent, ms * 1000, mainThreadIdCounter]); | ||
if (eventLog !== null) { | ||
logEvent([SchedulerSuspendEvent, ms * 1000, mainThreadIdCounter]); | ||
} | ||
} | ||
} | ||
} | ||
function markSchedulerUnsuspended(ms) { | ||
if (enableProfiling) { | ||
if (eventLog !== null) { | ||
logEvent([SchedulerResumeEvent, ms * 1000, mainThreadIdCounter]); | ||
function markSchedulerUnsuspended(ms) { | ||
{ | ||
if (eventLog !== null) { | ||
logEvent([SchedulerResumeEvent, ms * 1000, mainThreadIdCounter]); | ||
} | ||
} | ||
} | ||
} | ||
/* eslint-disable no-var */ | ||
// Math.pow(2, 30) - 1 | ||
// 0b111111111111111111111111111111 | ||
/* eslint-disable no-var */ | ||
// Math.pow(2, 30) - 1 | ||
// 0b111111111111111111111111111111 | ||
var maxSigned31BitInt = 1073741823; // Times out immediately | ||
var maxSigned31BitInt = 1073741823; // Times out immediately | ||
var IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out | ||
var IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out | ||
var USER_BLOCKING_PRIORITY = 250; | ||
var NORMAL_PRIORITY_TIMEOUT = 5000; | ||
var LOW_PRIORITY_TIMEOUT = 10000; // Never times out | ||
var USER_BLOCKING_PRIORITY_TIMEOUT = 250; | ||
var NORMAL_PRIORITY_TIMEOUT = 5000; | ||
var LOW_PRIORITY_TIMEOUT = 10000; // Never times out | ||
var IDLE_PRIORITY = maxSigned31BitInt; // Tasks are stored on a min heap | ||
var IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap | ||
var taskQueue = []; | ||
var timerQueue = []; // Incrementing id counter. Used to maintain insertion order. | ||
var taskQueue = []; | ||
var timerQueue = []; // Incrementing id counter. Used to maintain insertion order. | ||
var taskIdCounter = 1; // Pausing the scheduler is useful for debugging. | ||
var taskIdCounter = 1; // Pausing the scheduler is useful for debugging. | ||
var currentTask = null; | ||
var currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrancy. | ||
var isSchedulerPaused = false; | ||
var currentTask = null; | ||
var currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrancy. | ||
var isPerformingWork = false; | ||
var isHostCallbackScheduled = false; | ||
var isHostTimeoutScheduled = false; | ||
var isPerformingWork = false; | ||
var isHostCallbackScheduled = false; | ||
var isHostTimeoutScheduled = false; | ||
function advanceTimers(currentTime) { | ||
// Check for tasks that are no longer delayed and add them to the queue. | ||
var timer = peek(timerQueue); | ||
function advanceTimers(currentTime) { | ||
// Check for tasks that are no longer delayed and add them to the queue. | ||
var timer = peek(timerQueue); | ||
while (timer !== null) { | ||
if (timer.callback === null) { | ||
// Timer was cancelled. | ||
pop(timerQueue); | ||
} else if (timer.startTime <= currentTime) { | ||
// Timer fired. Transfer to the task queue. | ||
pop(timerQueue); | ||
timer.sortIndex = timer.expirationTime; | ||
push(taskQueue, timer); | ||
while (timer !== null) { | ||
if (timer.callback === null) { | ||
// Timer was cancelled. | ||
pop(timerQueue); | ||
} else if (timer.startTime <= currentTime) { | ||
// Timer fired. Transfer to the task queue. | ||
pop(timerQueue); | ||
timer.sortIndex = timer.expirationTime; | ||
push(taskQueue, timer); | ||
{ | ||
markTaskStart(timer, currentTime); | ||
timer.isQueued = true; | ||
} | ||
} else { | ||
// Remaining timers are pending. | ||
return; | ||
} | ||
if (enableProfiling) { | ||
markTaskStart(timer, currentTime); | ||
timer.isQueued = true; | ||
} | ||
} else { | ||
// Remaining timers are pending. | ||
return; | ||
timer = peek(timerQueue); | ||
} | ||
timer = peek(timerQueue); | ||
} | ||
} | ||
function handleTimeout(currentTime) { | ||
isHostTimeoutScheduled = false; | ||
advanceTimers(currentTime); | ||
function handleTimeout(currentTime) { | ||
isHostTimeoutScheduled = false; | ||
advanceTimers(currentTime); | ||
if (!isHostCallbackScheduled) { | ||
if (peek(taskQueue) !== null) { | ||
isHostCallbackScheduled = true; | ||
requestHostCallback(flushWork); | ||
} else { | ||
var firstTimer = peek(timerQueue); | ||
if (!isHostCallbackScheduled) { | ||
if (peek(taskQueue) !== null) { | ||
isHostCallbackScheduled = true; | ||
requestHostCallback(flushWork); | ||
} else { | ||
var firstTimer = peek(timerQueue); | ||
if (firstTimer !== null) { | ||
requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); | ||
if (firstTimer !== null) { | ||
requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
function flushWork(hasTimeRemaining, initialTime) { | ||
if (enableProfiling) { | ||
markSchedulerUnsuspended(initialTime); | ||
} // We'll need a host callback the next time work is scheduled. | ||
function flushWork(hasTimeRemaining, initialTime) { | ||
{ | ||
markSchedulerUnsuspended(initialTime); | ||
} // We'll need a host callback the next time work is scheduled. | ||
isHostCallbackScheduled = false; | ||
isHostCallbackScheduled = false; | ||
if (isHostTimeoutScheduled) { | ||
// We scheduled a timeout but it's no longer needed. Cancel it. | ||
isHostTimeoutScheduled = false; | ||
cancelHostTimeout(); | ||
} | ||
if (isHostTimeoutScheduled) { | ||
// We scheduled a timeout but it's no longer needed. Cancel it. | ||
isHostTimeoutScheduled = false; | ||
cancelHostTimeout(); | ||
} | ||
isPerformingWork = true; | ||
var previousPriorityLevel = currentPriorityLevel; | ||
isPerformingWork = true; | ||
var previousPriorityLevel = currentPriorityLevel; | ||
try { | ||
if (enableProfiling) { | ||
try { | ||
try { | ||
if (enableProfiling) { | ||
try { | ||
return workLoop(hasTimeRemaining, initialTime); | ||
} catch (error) { | ||
if (currentTask !== null) { | ||
var currentTime = getCurrentTime(); | ||
markTaskErrored(currentTask, currentTime); | ||
currentTask.isQueued = false; | ||
} | ||
throw error; | ||
} | ||
} else { | ||
// No catch in prod code path. | ||
return workLoop(hasTimeRemaining, initialTime); | ||
} catch (error) { | ||
if (currentTask !== null) { | ||
var currentTime = getCurrentTime(); | ||
markTaskErrored(currentTask, currentTime); | ||
currentTask.isQueued = false; | ||
} | ||
throw error; | ||
} | ||
} else { | ||
// No catch in prod codepath. | ||
return workLoop(hasTimeRemaining, initialTime); | ||
} | ||
} finally { | ||
currentTask = null; | ||
currentPriorityLevel = previousPriorityLevel; | ||
isPerformingWork = false; | ||
} finally { | ||
currentTask = null; | ||
currentPriorityLevel = previousPriorityLevel; | ||
isPerformingWork = false; | ||
if (enableProfiling) { | ||
var _currentTime = getCurrentTime(); | ||
{ | ||
var _currentTime = getCurrentTime(); | ||
markSchedulerSuspended(_currentTime); | ||
markSchedulerSuspended(_currentTime); | ||
} | ||
} | ||
} | ||
} | ||
function workLoop(hasTimeRemaining, initialTime) { | ||
var currentTime = initialTime; | ||
advanceTimers(currentTime); | ||
currentTask = peek(taskQueue); | ||
function workLoop(hasTimeRemaining, initialTime) { | ||
var currentTime = initialTime; | ||
advanceTimers(currentTime); | ||
currentTask = peek(taskQueue); | ||
while (currentTask !== null && !(enableSchedulerDebugging && isSchedulerPaused)) { | ||
if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) { | ||
// This currentTask hasn't expired, and we've reached the deadline. | ||
break; | ||
} | ||
while (currentTask !== null && !(enableSchedulerDebugging )) { | ||
if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) { | ||
// This currentTask hasn't expired, and we've reached the deadline. | ||
break; | ||
} | ||
var callback = currentTask.callback; | ||
var callback = currentTask.callback; | ||
if (callback !== null) { | ||
currentTask.callback = null; | ||
currentPriorityLevel = currentTask.priorityLevel; | ||
var didUserCallbackTimeout = currentTask.expirationTime <= currentTime; | ||
markTaskRun(currentTask, currentTime); | ||
var continuationCallback = callback(didUserCallbackTimeout); | ||
currentTime = getCurrentTime(); | ||
if (typeof callback === 'function') { | ||
currentTask.callback = null; | ||
currentPriorityLevel = currentTask.priorityLevel; | ||
var didUserCallbackTimeout = currentTask.expirationTime <= currentTime; | ||
markTaskRun(currentTask, currentTime); | ||
var continuationCallback = callback(didUserCallbackTimeout); | ||
currentTime = getCurrentTime(); | ||
if (typeof continuationCallback === 'function') { | ||
currentTask.callback = continuationCallback; | ||
markTaskYield(currentTask, currentTime); | ||
} else { | ||
if (enableProfiling) { | ||
markTaskCompleted(currentTask, currentTime); | ||
currentTask.isQueued = false; | ||
if (typeof continuationCallback === 'function') { | ||
currentTask.callback = continuationCallback; | ||
markTaskYield(currentTask, currentTime); | ||
} else { | ||
{ | ||
markTaskCompleted(currentTask, currentTime); | ||
currentTask.isQueued = false; | ||
} | ||
if (currentTask === peek(taskQueue)) { | ||
pop(taskQueue); | ||
} | ||
} | ||
if (currentTask === peek(taskQueue)) { | ||
pop(taskQueue); | ||
} | ||
advanceTimers(currentTime); | ||
} else { | ||
pop(taskQueue); | ||
} | ||
advanceTimers(currentTime); | ||
} else { | ||
pop(taskQueue); | ||
} | ||
currentTask = peek(taskQueue); | ||
} // Return whether there's additional work | ||
currentTask = peek(taskQueue); | ||
} // Return whether there's additional work | ||
if (currentTask !== null) { | ||
return true; | ||
} else { | ||
var firstTimer = peek(timerQueue); | ||
if (currentTask !== null) { | ||
return true; | ||
} else { | ||
var firstTimer = peek(timerQueue); | ||
if (firstTimer !== null) { | ||
requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); | ||
} | ||
if (firstTimer !== null) { | ||
requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); | ||
return false; | ||
} | ||
return false; | ||
} | ||
} | ||
function unstable_runWithPriority(priorityLevel, eventHandler) { | ||
switch (priorityLevel) { | ||
case ImmediatePriority: | ||
case UserBlockingPriority: | ||
case NormalPriority: | ||
case LowPriority: | ||
case IdlePriority: | ||
break; | ||
function unstable_runWithPriority(priorityLevel, eventHandler) { | ||
switch (priorityLevel) { | ||
case ImmediatePriority: | ||
case UserBlockingPriority: | ||
case NormalPriority: | ||
case LowPriority: | ||
case IdlePriority: | ||
break; | ||
default: | ||
priorityLevel = NormalPriority; | ||
} | ||
default: | ||
priorityLevel = NormalPriority; | ||
} | ||
var previousPriorityLevel = currentPriorityLevel; | ||
currentPriorityLevel = priorityLevel; | ||
var previousPriorityLevel = currentPriorityLevel; | ||
currentPriorityLevel = priorityLevel; | ||
try { | ||
return eventHandler(); | ||
} finally { | ||
currentPriorityLevel = previousPriorityLevel; | ||
try { | ||
return eventHandler(); | ||
} finally { | ||
currentPriorityLevel = previousPriorityLevel; | ||
} | ||
} | ||
} | ||
function unstable_next(eventHandler) { | ||
var priorityLevel; | ||
function unstable_next(eventHandler) { | ||
var priorityLevel; | ||
switch (currentPriorityLevel) { | ||
case ImmediatePriority: | ||
case UserBlockingPriority: | ||
case NormalPriority: | ||
// Shift down to normal priority | ||
priorityLevel = NormalPriority; | ||
break; | ||
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; | ||
} | ||
default: | ||
// Anything lower than normal priority should remain at the current level. | ||
priorityLevel = currentPriorityLevel; | ||
break; | ||
} | ||
var previousPriorityLevel = currentPriorityLevel; | ||
currentPriorityLevel = priorityLevel; | ||
try { | ||
return eventHandler(); | ||
} finally { | ||
currentPriorityLevel = previousPriorityLevel; | ||
} | ||
} | ||
function unstable_wrapCallback(callback) { | ||
var parentPriorityLevel = currentPriorityLevel; | ||
return function () { | ||
// This is a fork of runWithPriority, inlined for performance. | ||
var previousPriorityLevel = currentPriorityLevel; | ||
currentPriorityLevel = parentPriorityLevel; | ||
currentPriorityLevel = priorityLevel; | ||
try { | ||
return callback.apply(this, arguments); | ||
return eventHandler(); | ||
} finally { | ||
currentPriorityLevel = previousPriorityLevel; | ||
} | ||
}; | ||
} | ||
} | ||
function timeoutForPriorityLevel(priorityLevel) { | ||
switch (priorityLevel) { | ||
case ImmediatePriority: | ||
return IMMEDIATE_PRIORITY_TIMEOUT; | ||
function unstable_wrapCallback(callback) { | ||
var parentPriorityLevel = currentPriorityLevel; | ||
return function () { | ||
// This is a fork of runWithPriority, inlined for performance. | ||
var previousPriorityLevel = currentPriorityLevel; | ||
currentPriorityLevel = parentPriorityLevel; | ||
case UserBlockingPriority: | ||
return USER_BLOCKING_PRIORITY; | ||
case IdlePriority: | ||
return IDLE_PRIORITY; | ||
case LowPriority: | ||
return LOW_PRIORITY_TIMEOUT; | ||
case NormalPriority: | ||
default: | ||
return NORMAL_PRIORITY_TIMEOUT; | ||
try { | ||
return callback.apply(this, arguments); | ||
} finally { | ||
currentPriorityLevel = previousPriorityLevel; | ||
} | ||
}; | ||
} | ||
} | ||
function unstable_scheduleCallback(priorityLevel, callback, options) { | ||
var currentTime = getCurrentTime(); | ||
var startTime; | ||
var timeout; | ||
function unstable_scheduleCallback(priorityLevel, callback, options) { | ||
var currentTime = getCurrentTime(); | ||
var startTime; | ||
if (typeof options === 'object' && options !== null) { | ||
var delay = options.delay; | ||
if (typeof options === 'object' && options !== null) { | ||
var delay = options.delay; | ||
if (typeof delay === 'number' && delay > 0) { | ||
startTime = currentTime + delay; | ||
if (typeof delay === 'number' && delay > 0) { | ||
startTime = currentTime + delay; | ||
} else { | ||
startTime = currentTime; | ||
} | ||
} else { | ||
@@ -735,139 +723,154 @@ startTime = currentTime; | ||
timeout = typeof options.timeout === 'number' ? options.timeout : timeoutForPriorityLevel(priorityLevel); | ||
} else { | ||
timeout = timeoutForPriorityLevel(priorityLevel); | ||
startTime = currentTime; | ||
} | ||
var timeout; | ||
var expirationTime = startTime + timeout; | ||
var newTask = { | ||
id: taskIdCounter++, | ||
callback: callback, | ||
priorityLevel: priorityLevel, | ||
startTime: startTime, | ||
expirationTime: expirationTime, | ||
sortIndex: -1 | ||
}; | ||
switch (priorityLevel) { | ||
case ImmediatePriority: | ||
timeout = IMMEDIATE_PRIORITY_TIMEOUT; | ||
break; | ||
if (enableProfiling) { | ||
newTask.isQueued = false; | ||
} | ||
case UserBlockingPriority: | ||
timeout = USER_BLOCKING_PRIORITY_TIMEOUT; | ||
break; | ||
if (startTime > currentTime) { | ||
// This is a delayed task. | ||
newTask.sortIndex = startTime; | ||
push(timerQueue, newTask); | ||
case IdlePriority: | ||
timeout = IDLE_PRIORITY_TIMEOUT; | ||
break; | ||
if (peek(taskQueue) === null && newTask === peek(timerQueue)) { | ||
// All tasks are delayed, and this is the task with the earliest delay. | ||
if (isHostTimeoutScheduled) { | ||
// Cancel an existing timeout. | ||
cancelHostTimeout(); | ||
} else { | ||
isHostTimeoutScheduled = true; | ||
} // Schedule a timeout. | ||
case LowPriority: | ||
timeout = LOW_PRIORITY_TIMEOUT; | ||
break; | ||
case NormalPriority: | ||
default: | ||
timeout = NORMAL_PRIORITY_TIMEOUT; | ||
break; | ||
} | ||
requestHostTimeout(handleTimeout, startTime - currentTime); | ||
var expirationTime = startTime + timeout; | ||
var newTask = { | ||
id: taskIdCounter++, | ||
callback: callback, | ||
priorityLevel: priorityLevel, | ||
startTime: startTime, | ||
expirationTime: expirationTime, | ||
sortIndex: -1 | ||
}; | ||
{ | ||
newTask.isQueued = false; | ||
} | ||
} else { | ||
newTask.sortIndex = expirationTime; | ||
push(taskQueue, newTask); | ||
if (enableProfiling) { | ||
markTaskStart(newTask, currentTime); | ||
newTask.isQueued = true; | ||
} // Schedule a host callback, if needed. If we're already performing work, | ||
// wait until the next time we yield. | ||
if (startTime > currentTime) { | ||
// This is a delayed task. | ||
newTask.sortIndex = startTime; | ||
push(timerQueue, newTask); | ||
if (peek(taskQueue) === null && newTask === peek(timerQueue)) { | ||
// All tasks are delayed, and this is the task with the earliest delay. | ||
if (isHostTimeoutScheduled) { | ||
// Cancel an existing timeout. | ||
cancelHostTimeout(); | ||
} else { | ||
isHostTimeoutScheduled = true; | ||
} // Schedule a timeout. | ||
if (!isHostCallbackScheduled && !isPerformingWork) { | ||
isHostCallbackScheduled = true; | ||
requestHostCallback(flushWork); | ||
} | ||
} | ||
return newTask; | ||
} | ||
requestHostTimeout(handleTimeout, startTime - currentTime); | ||
} | ||
} else { | ||
newTask.sortIndex = expirationTime; | ||
push(taskQueue, newTask); | ||
function unstable_pauseExecution() { | ||
isSchedulerPaused = true; | ||
} | ||
{ | ||
markTaskStart(newTask, currentTime); | ||
newTask.isQueued = true; | ||
} // Schedule a host callback, if needed. If we're already performing work, | ||
// wait until the next time we yield. | ||
function unstable_continueExecution() { | ||
isSchedulerPaused = false; | ||
if (!isHostCallbackScheduled && !isPerformingWork) { | ||
isHostCallbackScheduled = true; | ||
requestHostCallback(flushWork); | ||
if (!isHostCallbackScheduled && !isPerformingWork) { | ||
isHostCallbackScheduled = true; | ||
requestHostCallback(flushWork); | ||
} | ||
} | ||
return newTask; | ||
} | ||
} | ||
function unstable_getFirstCallbackNode() { | ||
return peek(taskQueue); | ||
} | ||
function unstable_pauseExecution() { | ||
} | ||
function unstable_cancelCallback(task) { | ||
if (enableProfiling) { | ||
if (task.isQueued) { | ||
var currentTime = getCurrentTime(); | ||
markTaskCanceled(task, currentTime); | ||
task.isQueued = false; | ||
function unstable_continueExecution() { | ||
if (!isHostCallbackScheduled && !isPerformingWork) { | ||
isHostCallbackScheduled = true; | ||
requestHostCallback(flushWork); | ||
} | ||
} // Null out the callback to indicate the task has been canceled. (Can't | ||
// remove from the queue because you can't remove arbitrary nodes from an | ||
// array based heap, only the first one.) | ||
} | ||
function unstable_getFirstCallbackNode() { | ||
return peek(taskQueue); | ||
} | ||
task.callback = null; | ||
} | ||
function unstable_cancelCallback(task) { | ||
{ | ||
if (task.isQueued) { | ||
var currentTime = getCurrentTime(); | ||
markTaskCanceled(task, currentTime); | ||
task.isQueued = false; | ||
} | ||
} // Null out the callback to indicate the task has been canceled. (Can't | ||
// remove from the queue because you can't remove arbitrary nodes from an | ||
// array based heap, only the first one.) | ||
function unstable_getCurrentPriorityLevel() { | ||
return currentPriorityLevel; | ||
} | ||
function unstable_shouldYield() { | ||
var currentTime = getCurrentTime(); | ||
advanceTimers(currentTime); | ||
var firstTask = peek(taskQueue); | ||
return firstTask !== currentTask && currentTask !== null && firstTask !== null && firstTask.callback !== null && firstTask.startTime <= currentTime && firstTask.expirationTime < currentTask.expirationTime || shouldYieldToHost(); | ||
} | ||
task.callback = null; | ||
} | ||
var unstable_requestPaint = requestPaint; | ||
var unstable_Profiling = enableProfiling ? { | ||
startLoggingProfilingEvents: startLoggingProfilingEvents, | ||
stopLoggingProfilingEvents: stopLoggingProfilingEvents, | ||
sharedProfilingBuffer: sharedProfilingBuffer | ||
} : null; | ||
function unstable_getCurrentPriorityLevel() { | ||
return currentPriorityLevel; | ||
} | ||
exports.unstable_flushAllWithoutAsserting = unstable_flushAllWithoutAsserting; | ||
exports.unstable_flushNumberOfYields = unstable_flushNumberOfYields; | ||
exports.unstable_flushExpired = unstable_flushExpired; | ||
exports.unstable_clearYields = unstable_clearYields; | ||
exports.unstable_flushUntilNextPaint = unstable_flushUntilNextPaint; | ||
exports.unstable_flushAll = unstable_flushAll; | ||
exports.unstable_yieldValue = unstable_yieldValue; | ||
exports.unstable_advanceTime = unstable_advanceTime; | ||
exports.unstable_ImmediatePriority = ImmediatePriority; | ||
exports.unstable_UserBlockingPriority = UserBlockingPriority; | ||
exports.unstable_NormalPriority = NormalPriority; | ||
exports.unstable_IdlePriority = IdlePriority; | ||
exports.unstable_LowPriority = LowPriority; | ||
exports.unstable_runWithPriority = unstable_runWithPriority; | ||
exports.unstable_next = unstable_next; | ||
exports.unstable_scheduleCallback = unstable_scheduleCallback; | ||
exports.unstable_cancelCallback = unstable_cancelCallback; | ||
exports.unstable_wrapCallback = unstable_wrapCallback; | ||
exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel; | ||
exports.unstable_shouldYield = unstable_shouldYield; | ||
exports.unstable_requestPaint = unstable_requestPaint; | ||
exports.unstable_continueExecution = unstable_continueExecution; | ||
exports.unstable_pauseExecution = unstable_pauseExecution; | ||
exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode; | ||
exports.unstable_now = getCurrentTime; | ||
exports.unstable_forceFrameRate = forceFrameRate; | ||
exports.unstable_Profiling = unstable_Profiling; | ||
function unstable_shouldYield() { | ||
var currentTime = getCurrentTime(); | ||
advanceTimers(currentTime); | ||
var firstTask = peek(taskQueue); | ||
return firstTask !== currentTask && currentTask !== null && firstTask !== null && firstTask.callback !== null && firstTask.startTime <= currentTime && firstTask.expirationTime < currentTask.expirationTime || shouldYieldToHost(); | ||
} | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
var unstable_requestPaint = requestPaint; | ||
var unstable_Profiling = { | ||
startLoggingProfilingEvents: startLoggingProfilingEvents, | ||
stopLoggingProfilingEvents: stopLoggingProfilingEvents, | ||
sharedProfilingBuffer: sharedProfilingBuffer | ||
} ; | ||
exports.unstable_IdlePriority = IdlePriority; | ||
exports.unstable_ImmediatePriority = ImmediatePriority; | ||
exports.unstable_LowPriority = LowPriority; | ||
exports.unstable_NormalPriority = NormalPriority; | ||
exports.unstable_Profiling = unstable_Profiling; | ||
exports.unstable_UserBlockingPriority = UserBlockingPriority; | ||
exports.unstable_advanceTime = unstable_advanceTime; | ||
exports.unstable_cancelCallback = unstable_cancelCallback; | ||
exports.unstable_clearYields = unstable_clearYields; | ||
exports.unstable_continueExecution = unstable_continueExecution; | ||
exports.unstable_flushAll = unstable_flushAll; | ||
exports.unstable_flushAllWithoutAsserting = unstable_flushAllWithoutAsserting; | ||
exports.unstable_flushExpired = unstable_flushExpired; | ||
exports.unstable_flushNumberOfYields = unstable_flushNumberOfYields; | ||
exports.unstable_flushUntilNextPaint = unstable_flushUntilNextPaint; | ||
exports.unstable_forceFrameRate = forceFrameRate; | ||
exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel; | ||
exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode; | ||
exports.unstable_next = unstable_next; | ||
exports.unstable_now = getCurrentTime; | ||
exports.unstable_pauseExecution = unstable_pauseExecution; | ||
exports.unstable_requestPaint = unstable_requestPaint; | ||
exports.unstable_runWithPriority = unstable_runWithPriority; | ||
exports.unstable_scheduleCallback = unstable_scheduleCallback; | ||
exports.unstable_shouldYield = unstable_shouldYield; | ||
exports.unstable_wrapCallback = unstable_wrapCallback; | ||
exports.unstable_yieldValue = unstable_yieldValue; | ||
}))); |
@@ -1,2 +0,2 @@ | ||
/** @license React v0.0.0-experimental-38dd17ab9 | ||
/** @license React v0.0.0-experimental-3d0895557 | ||
* scheduler-unstable_mock.production.min.js | ||
@@ -9,10 +9,10 @@ * | ||
*/ | ||
'use strict';(function(b,w){"object"===typeof exports&&"undefined"!==typeof module?w(exports):"function"===typeof define&&define.amd?define(["exports"],w):w(b.SchedulerMock={})})(this,function(b){function w(){return-1!==y&&null!==k&&k.length>=y||D&&E?t=!0:!1}function J(){if(h)throw Error("Already flushing work.");if(null!==f){h=!0;try{f(!1,g)||(f=null)}finally{h=!1}}}function K(){if(h)throw Error("Already flushing work.");if(null!==f){var a=f;h=!0;try{var c=!0;do c=a(!0,g);while(c);c||(f=null);return!0}finally{h= | ||
!1}}else return!1}function F(a,c){var G=a.length;a.push(c);a:for(;;){var b=Math.floor((G-1)/2),p=a[b];if(void 0!==p&&0<z(p,c))a[b]=c,a[G]=p,G=b;else break a}}function l(a){a=a[0];return void 0===a?null:a}function A(a){var c=a[0];if(void 0!==c){var b=a.pop();if(b!==c){a[0]=b;a:for(var n=0,p=a.length;n<p;){var e=2*(n+1)-1,f=a[e],d=e+1,g=a[d];if(void 0!==f&&0>z(f,b))void 0!==g&&0>z(g,f)?(a[n]=g,a[d]=b,n=d):(a[n]=f,a[e]=b,n=e);else if(void 0!==g&&0>z(g,b))a[n]=g,a[d]=b,n=d;else break a}}return c}return null} | ||
function z(a,c){var b=a.sortIndex-c.sortIndex;return 0!==b?b:a.id-c.id}function B(a){for(var c=l(q);null!==c;){if(null===c.callback)A(q);else if(c.startTime<=a)A(q),c.sortIndex=c.expirationTime,F(m,c);else break;c=l(q)}}function H(a){x=!1;B(a);if(!u)if(null!==l(m))u=!0,f=I;else{var c=l(q);null!==c&&(a=c.startTime-a,r=H,v=g+a)}}function I(a,c){u=!1;x&&(x=!1,r=null,v=-1);C=!0;var b=e;try{B(c);for(d=l(m);null!==d&&(!(d.expirationTime>c)||a&&!w());){var f=d.callback;if(null!==f){d.callback=null;e=d.priorityLevel; | ||
var p=f(d.expirationTime<=c);c=g;"function"===typeof p?d.callback=p:d===l(m)&&A(m);B(c)}else A(m);d=l(m)}if(null!==d)var h=!0;else{var k=l(q);if(null!==k){var t=k.startTime-c;r=H;v=g+t}h=!1}return h}finally{d=null,e=b,C=!1}}function L(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var g=0,f=null,r=null,v=-1,k=null,y=-1,t=!1,h=!1,E=!1,D=!1,m=[],q=[],M=1,d=null,e=3,C=!1,u=!1,x=!1;b.unstable_flushAllWithoutAsserting=K;b.unstable_flushNumberOfYields= | ||
function(a){if(h)throw Error("Already flushing work.");if(null!==f){var c=f;y=a;h=!0;try{a=!0;do a=c(!0,g);while(a&&!t);a||(f=null)}finally{y=-1,h=t=!1}}};b.unstable_flushExpired=J;b.unstable_clearYields=function(){if(null===k)return[];var a=k;k=null;return a};b.unstable_flushUntilNextPaint=function(){if(h)throw Error("Already flushing work.");if(null!==f){var a=f;D=!0;E=!1;h=!0;try{var c=!0;do c=a(!0,g);while(c&&!t);c||(f=null)}finally{h=t=D=!1}}};b.unstable_flushAll=function(){if(null!==k)throw Error("Log is not empty. Assert on the log of yielded values before flushing additional work."); | ||
K();if(null!==k)throw Error("While flushing work, something yielded a value. Use an assertion helper to assert on the log of yielded values, e.g. expect(Scheduler).toFlushAndYield([...])");};b.unstable_yieldValue=function(a){null===k?k=[a]:k.push(a)};b.unstable_advanceTime=function(a){g+=a;h||(null!==r&&v<=g&&(r(g),v=-1,r=null),J())};b.unstable_ImmediatePriority=1;b.unstable_UserBlockingPriority=2;b.unstable_NormalPriority=3;b.unstable_IdlePriority=5;b.unstable_LowPriority=4;b.unstable_runWithPriority= | ||
function(a,c){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var b=e;e=a;try{return c()}finally{e=b}};b.unstable_next=function(a){switch(e){case 1:case 2:case 3:var c=3;break;default:c=e}var b=e;e=c;try{return a()}finally{e=b}};b.unstable_scheduleCallback=function(a,c,b){var e=g;if("object"===typeof b&&null!==b){var d=b.delay;d="number"===typeof d&&0<d?e+d:e;b="number"===typeof b.timeout?b.timeout:L(a)}else b=L(a),d=e;b=d+b;a={id:M++,callback:c,priorityLevel:a,startTime:d,expirationTime:b, | ||
sortIndex:-1};d>e?(a.sortIndex=d,F(q,a),null===l(m)&&a===l(q)&&(x?(r=null,v=-1):x=!0,r=H,v=g+(d-e))):(a.sortIndex=b,F(m,a),u||C||(u=!0,f=I));return a};b.unstable_cancelCallback=function(a){a.callback=null};b.unstable_wrapCallback=function(a){var b=e;return function(){var c=e;e=b;try{return a.apply(this,arguments)}finally{e=c}}};b.unstable_getCurrentPriorityLevel=function(){return e};b.unstable_shouldYield=function(){var a=g;B(a);var b=l(m);return b!==d&&null!==d&&null!==b&&null!==b.callback&&b.startTime<= | ||
a&&b.expirationTime<d.expirationTime||w()};b.unstable_requestPaint=function(){E=!0};b.unstable_continueExecution=function(){u||C||(u=!0,f=I)};b.unstable_pauseExecution=function(){};b.unstable_getFirstCallbackNode=function(){return l(m)};b.unstable_now=function(){return g};b.unstable_forceFrameRate=function(){};b.unstable_Profiling=null;Object.defineProperty(b,"__esModule",{value:!0})}); | ||
'use strict';(function(b,w){"object"===typeof exports&&"undefined"!==typeof module?w(exports):"function"===typeof define&&define.amd?define(["exports"],w):(b=b||self,w(b.SchedulerMock={}))})(this,function(b){function w(){return-1!==y&&null!==l&&l.length>=y||D&&E?t=!0:!1}function I(){if(k)throw Error("Already flushing work.");if(null!==f){var a=f;k=!0;try{var c=!0;do c=a(!0,g);while(c);c||(f=null);return!0}finally{k=!1}}else return!1}function F(a,c){var e=a.length;a.push(c);a:for(;;){var b=e-1>>>1, | ||
p=a[b];if(void 0!==p&&0<z(p,c))a[b]=c,a[e]=p,e=b;else break a}}function m(a){a=a[0];return void 0===a?null:a}function A(a){var c=a[0];if(void 0!==c){var e=a.pop();if(e!==c){a[0]=e;a:for(var b=0,p=a.length;b<p;){var d=2*(b+1)-1,f=a[d],h=d+1,g=a[h];if(void 0!==f&&0>z(f,e))void 0!==g&&0>z(g,f)?(a[b]=g,a[h]=e,b=h):(a[b]=f,a[d]=e,b=d);else if(void 0!==g&&0>z(g,e))a[b]=g,a[h]=e,b=h;else break a}}return c}return null}function z(a,c){var b=a.sortIndex-c.sortIndex;return 0!==b?b:a.id-c.id}function B(a){for(var c= | ||
m(q);null!==c;){if(null===c.callback)A(q);else if(c.startTime<=a)A(q),c.sortIndex=c.expirationTime,F(n,c);else break;c=m(q)}}function G(a){x=!1;B(a);if(!u)if(null!==m(n))u=!0,f=H;else{var c=m(q);null!==c&&(a=c.startTime-a,r=G,v=g+a)}}function H(a,c){u=!1;x&&(x=!1,r=null,v=-1);C=!0;var b=d;try{B(c);for(h=m(n);null!==h&&(!(h.expirationTime>c)||a&&!w());){var f=h.callback;if("function"===typeof f){h.callback=null;d=h.priorityLevel;var p=f(h.expirationTime<=c);c=g;"function"===typeof p?h.callback=p:h=== | ||
m(n)&&A(n);B(c)}else A(n);h=m(n)}if(null!==h)var k=!0;else{var l=m(q);if(null!==l){var t=l.startTime-c;r=G;v=g+t}k=!1}return k}finally{h=null,d=b,C=!1}}var g=0,f=null,r=null,v=-1,l=null,y=-1,t=!1,k=!1,E=!1,D=!1,n=[],q=[],J=1,h=null,d=3,C=!1,u=!1,x=!1;b.unstable_IdlePriority=5;b.unstable_ImmediatePriority=1;b.unstable_LowPriority=4;b.unstable_NormalPriority=3;b.unstable_Profiling=null;b.unstable_UserBlockingPriority=2;b.unstable_advanceTime=function(a){"disabledLog"!==console.log.name&&(g+=a,null!== | ||
r&&v<=g&&(r(g),v=-1,r=null))};b.unstable_cancelCallback=function(a){a.callback=null};b.unstable_clearYields=function(){if(null===l)return[];var a=l;l=null;return a};b.unstable_continueExecution=function(){u||C||(u=!0,f=H)};b.unstable_flushAll=function(){if(null!==l)throw Error("Log is not empty. Assert on the log of yielded values before flushing additional work.");I();if(null!==l)throw Error("While flushing work, something yielded a value. Use an assertion helper to assert on the log of yielded values, e.g. expect(Scheduler).toFlushAndYield([...])"); | ||
};b.unstable_flushAllWithoutAsserting=I;b.unstable_flushExpired=function(){if(k)throw Error("Already flushing work.");if(null!==f){k=!0;try{f(!1,g)||(f=null)}finally{k=!1}}};b.unstable_flushNumberOfYields=function(a){if(k)throw Error("Already flushing work.");if(null!==f){var c=f;y=a;k=!0;try{a=!0;do a=c(!0,g);while(a&&!t);a||(f=null)}finally{y=-1,k=t=!1}}};b.unstable_flushUntilNextPaint=function(){if(k)throw Error("Already flushing work.");if(null!==f){var a=f;D=!0;E=!1;k=!0;try{var c=!0;do c=a(!0, | ||
g);while(c&&!t);c||(f=null)}finally{k=t=D=!1}}};b.unstable_forceFrameRate=function(){};b.unstable_getCurrentPriorityLevel=function(){return d};b.unstable_getFirstCallbackNode=function(){return m(n)};b.unstable_next=function(a){switch(d){case 1:case 2:case 3:var c=3;break;default:c=d}var b=d;d=c;try{return a()}finally{d=b}};b.unstable_now=function(){return g};b.unstable_pauseExecution=function(){};b.unstable_requestPaint=function(){E=!0};b.unstable_runWithPriority=function(a,c){switch(a){case 1:case 2:case 3:case 4:case 5:break; | ||
default:a=3}var b=d;d=a;try{return c()}finally{d=b}};b.unstable_scheduleCallback=function(a,b,e){var c=g;"object"===typeof e&&null!==e?(e=e.delay,e="number"===typeof e&&0<e?c+e:c):e=c;switch(a){case 1:var d=-1;break;case 2:d=250;break;case 5:d=1073741823;break;case 4:d=1E4;break;default:d=5E3}d=e+d;a={id:J++,callback:b,priorityLevel:a,startTime:e,expirationTime:d,sortIndex:-1};e>c?(a.sortIndex=e,F(q,a),null===m(n)&&a===m(q)&&(x?(r=null,v=-1):x=!0,r=G,v=g+(e-c))):(a.sortIndex=d,F(n,a),u||C||(u=!0, | ||
f=H));return a};b.unstable_shouldYield=function(){var a=g;B(a);var c=m(n);return c!==h&&null!==h&&null!==c&&null!==c.callback&&c.startTime<=a&&c.expirationTime<h.expirationTime||w()};b.unstable_wrapCallback=function(a){var c=d;return function(){var b=d;d=c;try{return a.apply(this,arguments)}finally{d=b}}};b.unstable_yieldValue=function(a){"disabledLog"!==console.log.name&&(null===l?l=[a]:l.push(a))}}); |
@@ -19,4 +19,4 @@ /** | ||
: typeof define === 'function' && define.amd // eslint-disable-line no-undef | ||
? define(['react'], factory) // eslint-disable-line no-undef | ||
: (global.Scheduler = factory(global)); | ||
? define(['react'], factory) // eslint-disable-line no-undef | ||
: (global.Scheduler = factory(global)); | ||
})(this, function(global) { | ||
@@ -23,0 +23,0 @@ function unstable_now() { |
@@ -19,4 +19,4 @@ /** | ||
: typeof define === 'function' && define.amd // eslint-disable-line no-undef | ||
? define(['react'], factory) // eslint-disable-line no-undef | ||
: (global.Scheduler = factory(global)); | ||
? define(['react'], factory) // eslint-disable-line no-undef | ||
: (global.Scheduler = factory(global)); | ||
})(this, function(global) { | ||
@@ -23,0 +23,0 @@ function unstable_now() { |
@@ -19,4 +19,4 @@ /** | ||
: typeof define === 'function' && define.amd // eslint-disable-line no-undef | ||
? define(['react'], factory) // eslint-disable-line no-undef | ||
: (global.Scheduler = factory(global)); | ||
? define(['react'], factory) // eslint-disable-line no-undef | ||
: (global.Scheduler = factory(global)); | ||
})(this, function(global) { | ||
@@ -23,0 +23,0 @@ function unstable_now() { |
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
147247
26
3896
5