WIP - add extractor, generate snippet_data
This commit is contained in:
423
node_modules/scheduler/cjs/scheduler-tracing.development.js
generated
vendored
Normal file
423
node_modules/scheduler/cjs/scheduler-tracing.development.js
generated
vendored
Normal file
@ -0,0 +1,423 @@
|
||||
/** @license React v0.13.6
|
||||
* scheduler-tracing.development.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
|
||||
|
||||
if (process.env.NODE_ENV !== "production") {
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
// Helps identify side effects in begin-phase lifecycle hooks and setState reducers:
|
||||
|
||||
|
||||
// In some cases, StrictMode should also double-render lifecycles.
|
||||
// This can be confusing for tests though,
|
||||
// And it can be bad for performance in production.
|
||||
// This feature flag can be used to control the behavior:
|
||||
|
||||
|
||||
// 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;
|
||||
|
||||
// Only used in www builds.
|
||||
// TODO: true? Here it might just be false.
|
||||
|
||||
// Only used in www builds.
|
||||
|
||||
|
||||
// Only used in www builds.
|
||||
|
||||
|
||||
// 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.
|
||||
|
||||
var DEFAULT_THREAD_ID = 0;
|
||||
|
||||
// Counters used to generate unique IDs.
|
||||
var interactionIDCounter = 0;
|
||||
var threadIDCounter = 0;
|
||||
|
||||
// Set of currently traced interactions.
|
||||
// Interactions "stack"–
|
||||
// Meaning that newly traced interactions are appended to the previously active set.
|
||||
// When an interaction goes out of scope, the previous set (if any) is restored.
|
||||
exports.__interactionsRef = null;
|
||||
|
||||
// Listener(s) to notify when interactions begin and end.
|
||||
exports.__subscriberRef = null;
|
||||
|
||||
if (enableSchedulerTracing) {
|
||||
exports.__interactionsRef = {
|
||||
current: new Set()
|
||||
};
|
||||
exports.__subscriberRef = {
|
||||
current: null
|
||||
};
|
||||
}
|
||||
|
||||
function unstable_clear(callback) {
|
||||
if (!enableSchedulerTracing) {
|
||||
return callback();
|
||||
}
|
||||
|
||||
var prevInteractions = exports.__interactionsRef.current;
|
||||
exports.__interactionsRef.current = new Set();
|
||||
|
||||
try {
|
||||
return callback();
|
||||
} finally {
|
||||
exports.__interactionsRef.current = prevInteractions;
|
||||
}
|
||||
}
|
||||
|
||||
function unstable_getCurrent() {
|
||||
if (!enableSchedulerTracing) {
|
||||
return null;
|
||||
} else {
|
||||
return exports.__interactionsRef.current;
|
||||
}
|
||||
}
|
||||
|
||||
function unstable_getThreadID() {
|
||||
return ++threadIDCounter;
|
||||
}
|
||||
|
||||
function unstable_trace(name, timestamp, callback) {
|
||||
var threadID = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEFAULT_THREAD_ID;
|
||||
|
||||
if (!enableSchedulerTracing) {
|
||||
return callback();
|
||||
}
|
||||
|
||||
var interaction = {
|
||||
__count: 1,
|
||||
id: interactionIDCounter++,
|
||||
name: name,
|
||||
timestamp: timestamp
|
||||
};
|
||||
|
||||
var prevInteractions = exports.__interactionsRef.current;
|
||||
|
||||
// Traced interactions should stack/accumulate.
|
||||
// To do that, clone the current interactions.
|
||||
// The previous set will be restored upon completion.
|
||||
var interactions = new Set(prevInteractions);
|
||||
interactions.add(interaction);
|
||||
exports.__interactionsRef.current = interactions;
|
||||
|
||||
var subscriber = exports.__subscriberRef.current;
|
||||
var returnValue = void 0;
|
||||
|
||||
try {
|
||||
if (subscriber !== null) {
|
||||
subscriber.onInteractionTraced(interaction);
|
||||
}
|
||||
} finally {
|
||||
try {
|
||||
if (subscriber !== null) {
|
||||
subscriber.onWorkStarted(interactions, threadID);
|
||||
}
|
||||
} finally {
|
||||
try {
|
||||
returnValue = callback();
|
||||
} finally {
|
||||
exports.__interactionsRef.current = prevInteractions;
|
||||
|
||||
try {
|
||||
if (subscriber !== null) {
|
||||
subscriber.onWorkStopped(interactions, threadID);
|
||||
}
|
||||
} finally {
|
||||
interaction.__count--;
|
||||
|
||||
// If no async work was scheduled for this interaction,
|
||||
// Notify subscribers that it's completed.
|
||||
if (subscriber !== null && interaction.__count === 0) {
|
||||
subscriber.onInteractionScheduledWorkCompleted(interaction);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
function unstable_wrap(callback) {
|
||||
var threadID = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_THREAD_ID;
|
||||
|
||||
if (!enableSchedulerTracing) {
|
||||
return callback;
|
||||
}
|
||||
|
||||
var wrappedInteractions = exports.__interactionsRef.current;
|
||||
|
||||
var subscriber = exports.__subscriberRef.current;
|
||||
if (subscriber !== null) {
|
||||
subscriber.onWorkScheduled(wrappedInteractions, threadID);
|
||||
}
|
||||
|
||||
// Update the pending async work count for the current interactions.
|
||||
// Update after calling subscribers in case of error.
|
||||
wrappedInteractions.forEach(function (interaction) {
|
||||
interaction.__count++;
|
||||
});
|
||||
|
||||
var hasRun = false;
|
||||
|
||||
function wrapped() {
|
||||
var prevInteractions = exports.__interactionsRef.current;
|
||||
exports.__interactionsRef.current = wrappedInteractions;
|
||||
|
||||
subscriber = exports.__subscriberRef.current;
|
||||
|
||||
try {
|
||||
var returnValue = void 0;
|
||||
|
||||
try {
|
||||
if (subscriber !== null) {
|
||||
subscriber.onWorkStarted(wrappedInteractions, threadID);
|
||||
}
|
||||
} finally {
|
||||
try {
|
||||
returnValue = callback.apply(undefined, arguments);
|
||||
} finally {
|
||||
exports.__interactionsRef.current = prevInteractions;
|
||||
|
||||
if (subscriber !== null) {
|
||||
subscriber.onWorkStopped(wrappedInteractions, threadID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return returnValue;
|
||||
} finally {
|
||||
if (!hasRun) {
|
||||
// We only expect a wrapped function to be executed once,
|
||||
// But in the event that it's executed more than once–
|
||||
// Only decrement the outstanding interaction counts once.
|
||||
hasRun = true;
|
||||
|
||||
// Update pending async counts for all wrapped interactions.
|
||||
// If this was the last scheduled async work for any of them,
|
||||
// Mark them as completed.
|
||||
wrappedInteractions.forEach(function (interaction) {
|
||||
interaction.__count--;
|
||||
|
||||
if (subscriber !== null && interaction.__count === 0) {
|
||||
subscriber.onInteractionScheduledWorkCompleted(interaction);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wrapped.cancel = function cancel() {
|
||||
subscriber = exports.__subscriberRef.current;
|
||||
|
||||
try {
|
||||
if (subscriber !== null) {
|
||||
subscriber.onWorkCanceled(wrappedInteractions, threadID);
|
||||
}
|
||||
} finally {
|
||||
// Update pending async counts for all wrapped interactions.
|
||||
// If this was the last scheduled async work for any of them,
|
||||
// Mark them as completed.
|
||||
wrappedInteractions.forEach(function (interaction) {
|
||||
interaction.__count--;
|
||||
|
||||
if (subscriber && interaction.__count === 0) {
|
||||
subscriber.onInteractionScheduledWorkCompleted(interaction);
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
return wrapped;
|
||||
}
|
||||
|
||||
var subscribers = null;
|
||||
if (enableSchedulerTracing) {
|
||||
subscribers = new Set();
|
||||
}
|
||||
|
||||
function unstable_subscribe(subscriber) {
|
||||
if (enableSchedulerTracing) {
|
||||
subscribers.add(subscriber);
|
||||
|
||||
if (subscribers.size === 1) {
|
||||
exports.__subscriberRef.current = {
|
||||
onInteractionScheduledWorkCompleted: onInteractionScheduledWorkCompleted,
|
||||
onInteractionTraced: onInteractionTraced,
|
||||
onWorkCanceled: onWorkCanceled,
|
||||
onWorkScheduled: onWorkScheduled,
|
||||
onWorkStarted: onWorkStarted,
|
||||
onWorkStopped: onWorkStopped
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function unstable_unsubscribe(subscriber) {
|
||||
if (enableSchedulerTracing) {
|
||||
subscribers.delete(subscriber);
|
||||
|
||||
if (subscribers.size === 0) {
|
||||
exports.__subscriberRef.current = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onInteractionTraced(interaction) {
|
||||
var didCatchError = false;
|
||||
var caughtError = null;
|
||||
|
||||
subscribers.forEach(function (subscriber) {
|
||||
try {
|
||||
subscriber.onInteractionTraced(interaction);
|
||||
} catch (error) {
|
||||
if (!didCatchError) {
|
||||
didCatchError = true;
|
||||
caughtError = error;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (didCatchError) {
|
||||
throw caughtError;
|
||||
}
|
||||
}
|
||||
|
||||
function onInteractionScheduledWorkCompleted(interaction) {
|
||||
var didCatchError = false;
|
||||
var caughtError = null;
|
||||
|
||||
subscribers.forEach(function (subscriber) {
|
||||
try {
|
||||
subscriber.onInteractionScheduledWorkCompleted(interaction);
|
||||
} catch (error) {
|
||||
if (!didCatchError) {
|
||||
didCatchError = true;
|
||||
caughtError = error;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (didCatchError) {
|
||||
throw caughtError;
|
||||
}
|
||||
}
|
||||
|
||||
function onWorkScheduled(interactions, threadID) {
|
||||
var didCatchError = false;
|
||||
var caughtError = null;
|
||||
|
||||
subscribers.forEach(function (subscriber) {
|
||||
try {
|
||||
subscriber.onWorkScheduled(interactions, threadID);
|
||||
} catch (error) {
|
||||
if (!didCatchError) {
|
||||
didCatchError = true;
|
||||
caughtError = error;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (didCatchError) {
|
||||
throw caughtError;
|
||||
}
|
||||
}
|
||||
|
||||
function onWorkStarted(interactions, threadID) {
|
||||
var didCatchError = false;
|
||||
var caughtError = null;
|
||||
|
||||
subscribers.forEach(function (subscriber) {
|
||||
try {
|
||||
subscriber.onWorkStarted(interactions, threadID);
|
||||
} catch (error) {
|
||||
if (!didCatchError) {
|
||||
didCatchError = true;
|
||||
caughtError = error;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (didCatchError) {
|
||||
throw caughtError;
|
||||
}
|
||||
}
|
||||
|
||||
function onWorkStopped(interactions, threadID) {
|
||||
var didCatchError = false;
|
||||
var caughtError = null;
|
||||
|
||||
subscribers.forEach(function (subscriber) {
|
||||
try {
|
||||
subscriber.onWorkStopped(interactions, threadID);
|
||||
} catch (error) {
|
||||
if (!didCatchError) {
|
||||
didCatchError = true;
|
||||
caughtError = error;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (didCatchError) {
|
||||
throw caughtError;
|
||||
}
|
||||
}
|
||||
|
||||
function onWorkCanceled(interactions, threadID) {
|
||||
var didCatchError = false;
|
||||
var caughtError = null;
|
||||
|
||||
subscribers.forEach(function (subscriber) {
|
||||
try {
|
||||
subscriber.onWorkCanceled(interactions, threadID);
|
||||
} catch (error) {
|
||||
if (!didCatchError) {
|
||||
didCatchError = true;
|
||||
caughtError = error;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (didCatchError) {
|
||||
throw caughtError;
|
||||
}
|
||||
}
|
||||
|
||||
exports.unstable_clear = unstable_clear;
|
||||
exports.unstable_getCurrent = unstable_getCurrent;
|
||||
exports.unstable_getThreadID = unstable_getThreadID;
|
||||
exports.unstable_trace = unstable_trace;
|
||||
exports.unstable_wrap = unstable_wrap;
|
||||
exports.unstable_subscribe = unstable_subscribe;
|
||||
exports.unstable_unsubscribe = unstable_unsubscribe;
|
||||
})();
|
||||
}
|
||||
10
node_modules/scheduler/cjs/scheduler-tracing.production.min.js
generated
vendored
Normal file
10
node_modules/scheduler/cjs/scheduler-tracing.production.min.js
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
/** @license React v0.13.6
|
||||
* scheduler-tracing.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
'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(){};
|
||||
17
node_modules/scheduler/cjs/scheduler-tracing.profiling.min.js
generated
vendored
Normal file
17
node_modules/scheduler/cjs/scheduler-tracing.profiling.min.js
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
/** @license React v0.13.6
|
||||
* scheduler-tracing.profiling.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
'use strict';Object.defineProperty(exports,"__esModule",{value:!0});var g=0,m=0;exports.__interactionsRef=null;exports.__subscriberRef=null;exports.__interactionsRef={current:new Set};exports.__subscriberRef={current:null};var n=null;n=new Set;function p(e){var d=!1,a=null;n.forEach(function(c){try{c.onInteractionTraced(e)}catch(b){d||(d=!0,a=b)}});if(d)throw a;}
|
||||
function q(e){var d=!1,a=null;n.forEach(function(c){try{c.onInteractionScheduledWorkCompleted(e)}catch(b){d||(d=!0,a=b)}});if(d)throw a;}function r(e,d){var a=!1,c=null;n.forEach(function(b){try{b.onWorkScheduled(e,d)}catch(f){a||(a=!0,c=f)}});if(a)throw c;}function t(e,d){var a=!1,c=null;n.forEach(function(b){try{b.onWorkStarted(e,d)}catch(f){a||(a=!0,c=f)}});if(a)throw c;}function u(e,d){var a=!1,c=null;n.forEach(function(b){try{b.onWorkStopped(e,d)}catch(f){a||(a=!0,c=f)}});if(a)throw c;}
|
||||
function v(e,d){var a=!1,c=null;n.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++m};
|
||||
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,l=void 0;try{if(null!==h)h.onInteractionTraced(b)}finally{try{if(null!==h)h.onWorkStarted(k,c)}finally{try{l=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 l};
|
||||
exports.unstable_wrap=function(e){function d(){var d=exports.__interactionsRef.current;exports.__interactionsRef.current=c;b=exports.__subscriberRef.current;try{var h=void 0;try{if(null!==b)b.onWorkStarted(c,a)}finally{try{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){n.add(e);1===n.size&&(exports.__subscriberRef.current={onInteractionScheduledWorkCompleted:q,onInteractionTraced:p,onWorkCanceled:v,onWorkScheduled:r,onWorkStarted:t,onWorkStopped:u})};exports.unstable_unsubscribe=function(e){n.delete(e);0===n.size&&(exports.__subscriberRef.current=null)};
|
||||
699
node_modules/scheduler/cjs/scheduler.development.js
generated
vendored
Normal file
699
node_modules/scheduler/cjs/scheduler.development.js
generated
vendored
Normal file
@ -0,0 +1,699 @@
|
||||
/** @license React v0.13.6
|
||||
* scheduler.development.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
|
||||
|
||||
if (process.env.NODE_ENV !== "production") {
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
var enableSchedulerDebugging = false;
|
||||
|
||||
/* eslint-disable no-var */
|
||||
|
||||
// TODO: Use symbols?
|
||||
var ImmediatePriority = 1;
|
||||
var UserBlockingPriority = 2;
|
||||
var NormalPriority = 3;
|
||||
var LowPriority = 4;
|
||||
var IdlePriority = 5;
|
||||
|
||||
// Max 31 bit integer. The max integer size in V8 for 32-bit systems.
|
||||
// Math.pow(2, 30) - 1
|
||||
// 0b111111111111111111111111111111
|
||||
var maxSigned31BitInt = 1073741823;
|
||||
|
||||
// Times out immediately
|
||||
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 IDLE_PRIORITY = maxSigned31BitInt;
|
||||
|
||||
// Callbacks are stored as a circular, doubly linked list.
|
||||
var firstCallbackNode = null;
|
||||
|
||||
var currentDidTimeout = false;
|
||||
// Pausing the scheduler is useful for debugging.
|
||||
var isSchedulerPaused = false;
|
||||
|
||||
var currentPriorityLevel = NormalPriority;
|
||||
var currentEventStartTime = -1;
|
||||
var currentExpirationTime = -1;
|
||||
|
||||
// This is set when a callback is being executed, to prevent re-entrancy.
|
||||
var isExecutingCallback = false;
|
||||
|
||||
var isHostCallbackScheduled = false;
|
||||
|
||||
var hasNativePerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';
|
||||
|
||||
function ensureHostCallbackIsScheduled() {
|
||||
if (isExecutingCallback) {
|
||||
// Don't schedule work yet; wait until the next time we yield.
|
||||
return;
|
||||
}
|
||||
// Schedule the host callback using the earliest expiration in the list.
|
||||
var expirationTime = firstCallbackNode.expirationTime;
|
||||
if (!isHostCallbackScheduled) {
|
||||
isHostCallbackScheduled = true;
|
||||
} else {
|
||||
// Cancel the existing host callback.
|
||||
cancelHostCallback();
|
||||
}
|
||||
requestHostCallback(flushWork, expirationTime);
|
||||
}
|
||||
|
||||
function flushFirstCallback() {
|
||||
var flushedNode = firstCallbackNode;
|
||||
|
||||
// Remove the node from the list before calling the callback. That way the
|
||||
// list is in a consistent state even if the callback throws.
|
||||
var next = firstCallbackNode.next;
|
||||
if (firstCallbackNode === next) {
|
||||
// This is the last callback in the list.
|
||||
firstCallbackNode = null;
|
||||
next = null;
|
||||
} else {
|
||||
var lastCallbackNode = firstCallbackNode.previous;
|
||||
firstCallbackNode = lastCallbackNode.next = next;
|
||||
next.previous = lastCallbackNode;
|
||||
}
|
||||
|
||||
flushedNode.next = flushedNode.previous = null;
|
||||
|
||||
// Now it's safe to call the callback.
|
||||
var callback = flushedNode.callback;
|
||||
var expirationTime = flushedNode.expirationTime;
|
||||
var priorityLevel = flushedNode.priorityLevel;
|
||||
var previousPriorityLevel = currentPriorityLevel;
|
||||
var previousExpirationTime = currentExpirationTime;
|
||||
currentPriorityLevel = priorityLevel;
|
||||
currentExpirationTime = expirationTime;
|
||||
var continuationCallback;
|
||||
try {
|
||||
continuationCallback = callback();
|
||||
} finally {
|
||||
currentPriorityLevel = previousPriorityLevel;
|
||||
currentExpirationTime = previousExpirationTime;
|
||||
}
|
||||
|
||||
// A callback may return a continuation. The continuation should be scheduled
|
||||
// with the same priority and expiration as the just-finished callback.
|
||||
if (typeof continuationCallback === 'function') {
|
||||
var continuationNode = {
|
||||
callback: continuationCallback,
|
||||
priorityLevel: priorityLevel,
|
||||
expirationTime: expirationTime,
|
||||
next: null,
|
||||
previous: null
|
||||
};
|
||||
|
||||
// Insert the new callback into the list, sorted by its expiration. This is
|
||||
// almost the same as the code in `scheduleCallback`, except the callback
|
||||
// is inserted into the list *before* callbacks of equal expiration instead
|
||||
// of after.
|
||||
if (firstCallbackNode === null) {
|
||||
// This is the first callback in the list.
|
||||
firstCallbackNode = continuationNode.next = continuationNode.previous = continuationNode;
|
||||
} else {
|
||||
var nextAfterContinuation = null;
|
||||
var node = firstCallbackNode;
|
||||
do {
|
||||
if (node.expirationTime >= expirationTime) {
|
||||
// This callback expires at or after the continuation. We will insert
|
||||
// the continuation *before* this callback.
|
||||
nextAfterContinuation = node;
|
||||
break;
|
||||
}
|
||||
node = node.next;
|
||||
} while (node !== firstCallbackNode);
|
||||
|
||||
if (nextAfterContinuation === null) {
|
||||
// No equal or lower priority callback was found, which means the new
|
||||
// callback is the lowest priority callback in the list.
|
||||
nextAfterContinuation = firstCallbackNode;
|
||||
} else if (nextAfterContinuation === firstCallbackNode) {
|
||||
// The new callback is the highest priority callback in the list.
|
||||
firstCallbackNode = continuationNode;
|
||||
ensureHostCallbackIsScheduled();
|
||||
}
|
||||
|
||||
var previous = nextAfterContinuation.previous;
|
||||
previous.next = nextAfterContinuation.previous = continuationNode;
|
||||
continuationNode.next = nextAfterContinuation;
|
||||
continuationNode.previous = previous;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function flushImmediateWork() {
|
||||
if (
|
||||
// Confirm we've exited the outer most event handler
|
||||
currentEventStartTime === -1 && firstCallbackNode !== null && firstCallbackNode.priorityLevel === ImmediatePriority) {
|
||||
isExecutingCallback = true;
|
||||
try {
|
||||
do {
|
||||
flushFirstCallback();
|
||||
} while (
|
||||
// Keep flushing until there are no more immediate callbacks
|
||||
firstCallbackNode !== null && firstCallbackNode.priorityLevel === ImmediatePriority);
|
||||
} finally {
|
||||
isExecutingCallback = false;
|
||||
if (firstCallbackNode !== null) {
|
||||
// There's still work remaining. Request another callback.
|
||||
ensureHostCallbackIsScheduled();
|
||||
} else {
|
||||
isHostCallbackScheduled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function flushWork(didTimeout) {
|
||||
// Exit right away if we're currently paused
|
||||
|
||||
if (enableSchedulerDebugging && isSchedulerPaused) {
|
||||
return;
|
||||
}
|
||||
|
||||
isExecutingCallback = true;
|
||||
var previousDidTimeout = currentDidTimeout;
|
||||
currentDidTimeout = didTimeout;
|
||||
try {
|
||||
if (didTimeout) {
|
||||
// Flush all the expired callbacks without yielding.
|
||||
while (firstCallbackNode !== null && !(enableSchedulerDebugging && isSchedulerPaused)) {
|
||||
// TODO Wrap in feature flag
|
||||
// Read the current time. Flush all the callbacks that expire at or
|
||||
// earlier than that time. Then read the current time again and repeat.
|
||||
// This optimizes for as few performance.now calls as possible.
|
||||
var currentTime = exports.unstable_now();
|
||||
if (firstCallbackNode.expirationTime <= currentTime) {
|
||||
do {
|
||||
flushFirstCallback();
|
||||
} while (firstCallbackNode !== null && firstCallbackNode.expirationTime <= currentTime && !(enableSchedulerDebugging && isSchedulerPaused));
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// Keep flushing callbacks until we run out of time in the frame.
|
||||
if (firstCallbackNode !== null) {
|
||||
do {
|
||||
if (enableSchedulerDebugging && isSchedulerPaused) {
|
||||
break;
|
||||
}
|
||||
flushFirstCallback();
|
||||
} while (firstCallbackNode !== null && !shouldYieldToHost());
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
isExecutingCallback = false;
|
||||
currentDidTimeout = previousDidTimeout;
|
||||
if (firstCallbackNode !== null) {
|
||||
// There's still work remaining. Request another callback.
|
||||
ensureHostCallbackIsScheduled();
|
||||
} else {
|
||||
isHostCallbackScheduled = false;
|
||||
}
|
||||
// Before exiting, flush all the immediate work that was scheduled.
|
||||
flushImmediateWork();
|
||||
}
|
||||
}
|
||||
|
||||
function unstable_runWithPriority(priorityLevel, eventHandler) {
|
||||
switch (priorityLevel) {
|
||||
case ImmediatePriority:
|
||||
case UserBlockingPriority:
|
||||
case NormalPriority:
|
||||
case LowPriority:
|
||||
case IdlePriority:
|
||||
break;
|
||||
default:
|
||||
priorityLevel = NormalPriority;
|
||||
}
|
||||
|
||||
var previousPriorityLevel = currentPriorityLevel;
|
||||
var previousEventStartTime = currentEventStartTime;
|
||||
currentPriorityLevel = priorityLevel;
|
||||
currentEventStartTime = exports.unstable_now();
|
||||
|
||||
try {
|
||||
return eventHandler();
|
||||
} finally {
|
||||
currentPriorityLevel = previousPriorityLevel;
|
||||
currentEventStartTime = previousEventStartTime;
|
||||
|
||||
// Before exiting, flush all the immediate work that was scheduled.
|
||||
flushImmediateWork();
|
||||
}
|
||||
}
|
||||
|
||||
function unstable_next(eventHandler) {
|
||||
var priorityLevel = void 0;
|
||||
switch (currentPriorityLevel) {
|
||||
case ImmediatePriority:
|
||||
case UserBlockingPriority:
|
||||
case NormalPriority:
|
||||
// Shift down to normal priority
|
||||
priorityLevel = NormalPriority;
|
||||
break;
|
||||
default:
|
||||
// Anything lower than normal priority should remain at the current level.
|
||||
priorityLevel = currentPriorityLevel;
|
||||
break;
|
||||
}
|
||||
|
||||
var previousPriorityLevel = currentPriorityLevel;
|
||||
var previousEventStartTime = currentEventStartTime;
|
||||
currentPriorityLevel = priorityLevel;
|
||||
currentEventStartTime = exports.unstable_now();
|
||||
|
||||
try {
|
||||
return eventHandler();
|
||||
} finally {
|
||||
currentPriorityLevel = previousPriorityLevel;
|
||||
currentEventStartTime = previousEventStartTime;
|
||||
|
||||
// Before exiting, flush all the immediate work that was scheduled.
|
||||
flushImmediateWork();
|
||||
}
|
||||
}
|
||||
|
||||
function unstable_wrapCallback(callback) {
|
||||
var parentPriorityLevel = currentPriorityLevel;
|
||||
return function () {
|
||||
// This is a fork of runWithPriority, inlined for performance.
|
||||
var previousPriorityLevel = currentPriorityLevel;
|
||||
var previousEventStartTime = currentEventStartTime;
|
||||
currentPriorityLevel = parentPriorityLevel;
|
||||
currentEventStartTime = exports.unstable_now();
|
||||
|
||||
try {
|
||||
return callback.apply(this, arguments);
|
||||
} finally {
|
||||
currentPriorityLevel = previousPriorityLevel;
|
||||
currentEventStartTime = previousEventStartTime;
|
||||
flushImmediateWork();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function unstable_scheduleCallback(callback, deprecated_options) {
|
||||
var startTime = currentEventStartTime !== -1 ? currentEventStartTime : exports.unstable_now();
|
||||
|
||||
var expirationTime;
|
||||
if (typeof deprecated_options === 'object' && deprecated_options !== null && typeof deprecated_options.timeout === 'number') {
|
||||
// FIXME: Remove this branch once we lift expiration times out of React.
|
||||
expirationTime = startTime + deprecated_options.timeout;
|
||||
} else {
|
||||
switch (currentPriorityLevel) {
|
||||
case ImmediatePriority:
|
||||
expirationTime = startTime + IMMEDIATE_PRIORITY_TIMEOUT;
|
||||
break;
|
||||
case UserBlockingPriority:
|
||||
expirationTime = startTime + USER_BLOCKING_PRIORITY;
|
||||
break;
|
||||
case IdlePriority:
|
||||
expirationTime = startTime + IDLE_PRIORITY;
|
||||
break;
|
||||
case LowPriority:
|
||||
expirationTime = startTime + LOW_PRIORITY_TIMEOUT;
|
||||
break;
|
||||
case NormalPriority:
|
||||
default:
|
||||
expirationTime = startTime + NORMAL_PRIORITY_TIMEOUT;
|
||||
}
|
||||
}
|
||||
|
||||
var newNode = {
|
||||
callback: callback,
|
||||
priorityLevel: currentPriorityLevel,
|
||||
expirationTime: expirationTime,
|
||||
next: null,
|
||||
previous: null
|
||||
};
|
||||
|
||||
// Insert the new callback into the list, ordered first by expiration, then
|
||||
// by insertion. So the new callback is inserted any other callback with
|
||||
// equal expiration.
|
||||
if (firstCallbackNode === null) {
|
||||
// This is the first callback in the list.
|
||||
firstCallbackNode = newNode.next = newNode.previous = newNode;
|
||||
ensureHostCallbackIsScheduled();
|
||||
} else {
|
||||
var next = null;
|
||||
var node = firstCallbackNode;
|
||||
do {
|
||||
if (node.expirationTime > expirationTime) {
|
||||
// The new callback expires before this one.
|
||||
next = node;
|
||||
break;
|
||||
}
|
||||
node = node.next;
|
||||
} while (node !== firstCallbackNode);
|
||||
|
||||
if (next === null) {
|
||||
// No callback with a later expiration was found, which means the new
|
||||
// callback has the latest expiration in the list.
|
||||
next = firstCallbackNode;
|
||||
} else if (next === firstCallbackNode) {
|
||||
// The new callback has the earliest expiration in the entire list.
|
||||
firstCallbackNode = newNode;
|
||||
ensureHostCallbackIsScheduled();
|
||||
}
|
||||
|
||||
var previous = next.previous;
|
||||
previous.next = next.previous = newNode;
|
||||
newNode.next = next;
|
||||
newNode.previous = previous;
|
||||
}
|
||||
|
||||
return newNode;
|
||||
}
|
||||
|
||||
function unstable_pauseExecution() {
|
||||
isSchedulerPaused = true;
|
||||
}
|
||||
|
||||
function unstable_continueExecution() {
|
||||
isSchedulerPaused = false;
|
||||
if (firstCallbackNode !== null) {
|
||||
ensureHostCallbackIsScheduled();
|
||||
}
|
||||
}
|
||||
|
||||
function unstable_getFirstCallbackNode() {
|
||||
return firstCallbackNode;
|
||||
}
|
||||
|
||||
function unstable_cancelCallback(callbackNode) {
|
||||
var next = callbackNode.next;
|
||||
if (next === null) {
|
||||
// Already cancelled.
|
||||
return;
|
||||
}
|
||||
|
||||
if (next === callbackNode) {
|
||||
// This is the only scheduled callback. Clear the list.
|
||||
firstCallbackNode = null;
|
||||
} else {
|
||||
// Remove the callback from its position in the list.
|
||||
if (callbackNode === firstCallbackNode) {
|
||||
firstCallbackNode = next;
|
||||
}
|
||||
var previous = callbackNode.previous;
|
||||
previous.next = next;
|
||||
next.previous = previous;
|
||||
}
|
||||
|
||||
callbackNode.next = callbackNode.previous = null;
|
||||
}
|
||||
|
||||
function unstable_getCurrentPriorityLevel() {
|
||||
return currentPriorityLevel;
|
||||
}
|
||||
|
||||
function unstable_shouldYield() {
|
||||
return !currentDidTimeout && (firstCallbackNode !== null && firstCallbackNode.expirationTime < currentExpirationTime || shouldYieldToHost());
|
||||
}
|
||||
|
||||
// The remaining code is essentially a polyfill for requestIdleCallback. It
|
||||
// works by scheduling a requestAnimationFrame, storing the time for the start
|
||||
// of the frame, then scheduling a postMessage which gets scheduled after paint.
|
||||
// Within the postMessage handler do as much work as possible until time + frame
|
||||
// rate. By separating the idle call into a separate event tick we ensure that
|
||||
// layout, paint and other browser work is counted against the available time.
|
||||
// The frame rate is dynamically adjusted.
|
||||
|
||||
// We capture a local reference to any global, in case it gets polyfilled after
|
||||
// this module is initially evaluated. We want to be using a
|
||||
// consistent implementation.
|
||||
var localDate = Date;
|
||||
|
||||
// This initialization code may run even on server environments if a component
|
||||
// just imports ReactDOM (e.g. for findDOMNode). Some environments might not
|
||||
// have setTimeout or clearTimeout. However, we always expect them to be defined
|
||||
// on the client. https://github.com/facebook/react/pull/13088
|
||||
var localSetTimeout = typeof setTimeout === 'function' ? setTimeout : undefined;
|
||||
var localClearTimeout = typeof clearTimeout === 'function' ? clearTimeout : undefined;
|
||||
|
||||
// We don't expect either of these to necessarily be defined, but we will error
|
||||
// later if they are missing on the client.
|
||||
var localRequestAnimationFrame = typeof requestAnimationFrame === 'function' ? requestAnimationFrame : undefined;
|
||||
var localCancelAnimationFrame = typeof cancelAnimationFrame === 'function' ? cancelAnimationFrame : undefined;
|
||||
|
||||
// requestAnimationFrame does not run when the tab is in the background. If
|
||||
// we're backgrounded we prefer for that work to happen so that the page
|
||||
// continues to load in the background. So we also schedule a 'setTimeout' as
|
||||
// a fallback.
|
||||
// TODO: Need a better heuristic for backgrounded work.
|
||||
var ANIMATION_FRAME_TIMEOUT = 100;
|
||||
var rAFID;
|
||||
var rAFTimeoutID;
|
||||
var requestAnimationFrameWithTimeout = function (callback) {
|
||||
// schedule rAF and also a setTimeout
|
||||
rAFID = localRequestAnimationFrame(function (timestamp) {
|
||||
// cancel the setTimeout
|
||||
localClearTimeout(rAFTimeoutID);
|
||||
callback(timestamp);
|
||||
});
|
||||
rAFTimeoutID = localSetTimeout(function () {
|
||||
// cancel the requestAnimationFrame
|
||||
localCancelAnimationFrame(rAFID);
|
||||
callback(exports.unstable_now());
|
||||
}, ANIMATION_FRAME_TIMEOUT);
|
||||
};
|
||||
|
||||
if (hasNativePerformanceNow) {
|
||||
var Performance = performance;
|
||||
exports.unstable_now = function () {
|
||||
return Performance.now();
|
||||
};
|
||||
} else {
|
||||
exports.unstable_now = function () {
|
||||
return localDate.now();
|
||||
};
|
||||
}
|
||||
|
||||
var requestHostCallback;
|
||||
var cancelHostCallback;
|
||||
var shouldYieldToHost;
|
||||
|
||||
var globalValue = null;
|
||||
if (typeof window !== 'undefined') {
|
||||
globalValue = window;
|
||||
} else if (typeof global !== 'undefined') {
|
||||
globalValue = global;
|
||||
}
|
||||
|
||||
if (globalValue && globalValue._schedMock) {
|
||||
// Dynamic injection, only for testing purposes.
|
||||
var globalImpl = globalValue._schedMock;
|
||||
requestHostCallback = globalImpl[0];
|
||||
cancelHostCallback = globalImpl[1];
|
||||
shouldYieldToHost = globalImpl[2];
|
||||
exports.unstable_now = globalImpl[3];
|
||||
} else if (
|
||||
// If Scheduler runs in a non-DOM environment, it falls back to a naive
|
||||
// implementation using setTimeout.
|
||||
typeof window === 'undefined' ||
|
||||
// Check if MessageChannel is supported, too.
|
||||
typeof MessageChannel !== 'function') {
|
||||
// If this accidentally gets imported in a non-browser environment, e.g. JavaScriptCore,
|
||||
// fallback to a naive implementation.
|
||||
var _callback = null;
|
||||
var _flushCallback = function (didTimeout) {
|
||||
if (_callback !== null) {
|
||||
try {
|
||||
_callback(didTimeout);
|
||||
} finally {
|
||||
_callback = null;
|
||||
}
|
||||
}
|
||||
};
|
||||
requestHostCallback = function (cb, ms) {
|
||||
if (_callback !== null) {
|
||||
// Protect against re-entrancy.
|
||||
setTimeout(requestHostCallback, 0, cb);
|
||||
} else {
|
||||
_callback = cb;
|
||||
setTimeout(_flushCallback, 0, false);
|
||||
}
|
||||
};
|
||||
cancelHostCallback = function () {
|
||||
_callback = null;
|
||||
};
|
||||
shouldYieldToHost = function () {
|
||||
return false;
|
||||
};
|
||||
} else {
|
||||
if (typeof console !== 'undefined') {
|
||||
// TODO: Remove fb.me link
|
||||
if (typeof localRequestAnimationFrame !== 'function') {
|
||||
console.error("This browser doesn't support requestAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills');
|
||||
}
|
||||
if (typeof localCancelAnimationFrame !== 'function') {
|
||||
console.error("This browser doesn't support cancelAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills');
|
||||
}
|
||||
}
|
||||
|
||||
var scheduledHostCallback = null;
|
||||
var isMessageEventScheduled = false;
|
||||
var timeoutTime = -1;
|
||||
|
||||
var isAnimationFrameScheduled = false;
|
||||
|
||||
var isFlushingHostCallback = false;
|
||||
|
||||
var frameDeadline = 0;
|
||||
// We start out assuming that we run at 30fps but then the heuristic tracking
|
||||
// will adjust this value to a faster fps if we get more frequent animation
|
||||
// frames.
|
||||
var previousFrameTime = 33;
|
||||
var activeFrameTime = 33;
|
||||
|
||||
shouldYieldToHost = function () {
|
||||
return frameDeadline <= exports.unstable_now();
|
||||
};
|
||||
|
||||
// We use the postMessage trick to defer idle work until after the repaint.
|
||||
var channel = new MessageChannel();
|
||||
var port = channel.port2;
|
||||
channel.port1.onmessage = function (event) {
|
||||
isMessageEventScheduled = false;
|
||||
|
||||
var prevScheduledCallback = scheduledHostCallback;
|
||||
var prevTimeoutTime = timeoutTime;
|
||||
scheduledHostCallback = null;
|
||||
timeoutTime = -1;
|
||||
|
||||
var currentTime = exports.unstable_now();
|
||||
|
||||
var didTimeout = false;
|
||||
if (frameDeadline - currentTime <= 0) {
|
||||
// There's no time left in this idle period. Check if the callback has
|
||||
// a timeout and whether it's been exceeded.
|
||||
if (prevTimeoutTime !== -1 && prevTimeoutTime <= currentTime) {
|
||||
// Exceeded the timeout. Invoke the callback even though there's no
|
||||
// time left.
|
||||
didTimeout = true;
|
||||
} else {
|
||||
// No timeout.
|
||||
if (!isAnimationFrameScheduled) {
|
||||
// Schedule another animation callback so we retry later.
|
||||
isAnimationFrameScheduled = true;
|
||||
requestAnimationFrameWithTimeout(animationTick);
|
||||
}
|
||||
// Exit without invoking the callback.
|
||||
scheduledHostCallback = prevScheduledCallback;
|
||||
timeoutTime = prevTimeoutTime;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (prevScheduledCallback !== null) {
|
||||
isFlushingHostCallback = true;
|
||||
try {
|
||||
prevScheduledCallback(didTimeout);
|
||||
} finally {
|
||||
isFlushingHostCallback = false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var animationTick = function (rafTime) {
|
||||
if (scheduledHostCallback !== null) {
|
||||
// Eagerly schedule the next animation callback at the beginning of the
|
||||
// frame. If the scheduler queue is not empty at the end of the frame, it
|
||||
// will continue flushing inside that callback. If the queue *is* empty,
|
||||
// then it will exit immediately. Posting the callback at the start of the
|
||||
// frame ensures it's fired within the earliest possible frame. If we
|
||||
// waited until the end of the frame to post the callback, we risk the
|
||||
// browser skipping a frame and not firing the callback until the frame
|
||||
// after that.
|
||||
requestAnimationFrameWithTimeout(animationTick);
|
||||
} else {
|
||||
// No pending work. Exit.
|
||||
isAnimationFrameScheduled = false;
|
||||
return;
|
||||
}
|
||||
|
||||
var nextFrameTime = rafTime - frameDeadline + activeFrameTime;
|
||||
if (nextFrameTime < activeFrameTime && previousFrameTime < activeFrameTime) {
|
||||
if (nextFrameTime < 8) {
|
||||
// Defensive coding. We don't support higher frame rates than 120hz.
|
||||
// If the calculated frame time gets lower than 8, it is probably a bug.
|
||||
nextFrameTime = 8;
|
||||
}
|
||||
// If one frame goes long, then the next one can be short to catch up.
|
||||
// If two frames are short in a row, then that's an indication that we
|
||||
// actually have a higher frame rate than what we're currently optimizing.
|
||||
// We adjust our heuristic dynamically accordingly. For example, if we're
|
||||
// running on 120hz display or 90hz VR display.
|
||||
// Take the max of the two in case one of them was an anomaly due to
|
||||
// missed frame deadlines.
|
||||
activeFrameTime = nextFrameTime < previousFrameTime ? previousFrameTime : nextFrameTime;
|
||||
} else {
|
||||
previousFrameTime = nextFrameTime;
|
||||
}
|
||||
frameDeadline = rafTime + activeFrameTime;
|
||||
if (!isMessageEventScheduled) {
|
||||
isMessageEventScheduled = true;
|
||||
port.postMessage(undefined);
|
||||
}
|
||||
};
|
||||
|
||||
requestHostCallback = function (callback, absoluteTimeout) {
|
||||
scheduledHostCallback = callback;
|
||||
timeoutTime = absoluteTimeout;
|
||||
if (isFlushingHostCallback || absoluteTimeout < 0) {
|
||||
// Don't wait for the next frame. Continue working ASAP, in a new event.
|
||||
port.postMessage(undefined);
|
||||
} else if (!isAnimationFrameScheduled) {
|
||||
// If rAF didn't already schedule one, we need to schedule a frame.
|
||||
// TODO: If this rAF doesn't materialize because the browser throttles, we
|
||||
// might want to still have setTimeout trigger rIC as a backup to ensure
|
||||
// that we keep performing work.
|
||||
isAnimationFrameScheduled = true;
|
||||
requestAnimationFrameWithTimeout(animationTick);
|
||||
}
|
||||
};
|
||||
|
||||
cancelHostCallback = function () {
|
||||
scheduledHostCallback = null;
|
||||
isMessageEventScheduled = false;
|
||||
timeoutTime = -1;
|
||||
};
|
||||
}
|
||||
|
||||
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_continueExecution = unstable_continueExecution;
|
||||
exports.unstable_pauseExecution = unstable_pauseExecution;
|
||||
exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;
|
||||
})();
|
||||
}
|
||||
21
node_modules/scheduler/cjs/scheduler.production.min.js
generated
vendored
Normal file
21
node_modules/scheduler/cjs/scheduler.production.min.js
generated
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
/** @license React v0.13.6
|
||||
* scheduler.production.min.js
|
||||
*
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
'use strict';Object.defineProperty(exports,"__esModule",{value:!0});var d=null,e=!1,g=3,k=-1,l=-1,m=!1,n=!1;function p(){if(!m){var a=d.expirationTime;n?q():n=!0;r(t,a)}}
|
||||
function u(){var a=d,b=d.next;if(d===b)d=null;else{var c=d.previous;d=c.next=b;b.previous=c}a.next=a.previous=null;c=a.callback;b=a.expirationTime;a=a.priorityLevel;var f=g,Q=l;g=a;l=b;try{var h=c()}finally{g=f,l=Q}if("function"===typeof h)if(h={callback:h,priorityLevel:a,expirationTime:b,next:null,previous:null},null===d)d=h.next=h.previous=h;else{c=null;a=d;do{if(a.expirationTime>=b){c=a;break}a=a.next}while(a!==d);null===c?c=d:c===d&&(d=h,p());b=c.previous;b.next=c.previous=h;h.next=c;h.previous=
|
||||
b}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1,null!==d?p():n=!1}}}function t(a){m=!0;var b=e;e=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1,e=b,null!==d?p():n=!1,v()}}
|
||||
var x=Date,y="function"===typeof setTimeout?setTimeout:void 0,z="function"===typeof clearTimeout?clearTimeout:void 0,A="function"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B="function"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)}
|
||||
if("object"===typeof performance&&"function"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null;"undefined"!==typeof window?G=window:"undefined"!==typeof global&&(G=global);
|
||||
if(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3]}else if("undefined"===typeof window||"function"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a)}finally{I=null}};r=function(a){null!==I?setTimeout(r,0,a):(I=a,setTimeout(J,0,!1))};q=function(){I=null};w=function(){return!1}}else{"undefined"!==typeof console&&("function"!==typeof A&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),
|
||||
"function"!==typeof B&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var c=exports.unstable_now(),f=!1;if(0>=P-c)if(-1!==b&&b<=c)f=!0;else{N||(N=!0,E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(f)}finally{O=!1}}};
|
||||
var V=function(a){if(null!==K){E(V);var b=a-P+S;b<S&&R<S?(8>b&&(b=8),S=b<R?R:b):R=b;P=a+S;L||(L=!0,U.postMessage(void 0))}else N=!1};r=function(a,b){K=a;M=b;O||0>b?U.postMessage(void 0):N||(N=!0,E(V))};q=function(){K=null;L=!1;M=-1}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;
|
||||
exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=g,f=k;g=a;k=exports.unstable_now();try{return b()}finally{g=c,k=f,v()}};exports.unstable_next=function(a){switch(g){case 1:case 2:case 3:var b=3;break;default:b=g}var c=g,f=k;g=b;k=exports.unstable_now();try{return a()}finally{g=c,k=f,v()}};
|
||||
exports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if("object"===typeof b&&null!==b&&"number"===typeof b.timeout)b=c+b.timeout;else switch(g){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3}a={callback:a,priorityLevel:g,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a,p();else{c=null;var f=d;do{if(f.expirationTime>b){c=f;break}f=f.next}while(f!==d);null===c?c=d:c===d&&(d=a,p());
|
||||
b=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=g;return function(){var c=g,f=k;g=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{g=c,k=f,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return g};
|
||||
exports.unstable_shouldYield=function(){return!e&&(null!==d&&d.expirationTime<l||w())};exports.unstable_continueExecution=function(){null!==d&&p()};exports.unstable_pauseExecution=function(){};exports.unstable_getFirstCallbackNode=function(){return d};
|
||||
Reference in New Issue
Block a user