| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414 |
- /**
- * @license React
- * scheduler-unstable_mock.development.js
- *
- * Copyright (c) Meta Platforms, Inc. and 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";
- "production" !== process.env.NODE_ENV &&
- (function () {
- function push(heap, node) {
- var index = heap.length;
- heap.push(node);
- a: for (; 0 < index; ) {
- var parentIndex = (index - 1) >>> 1,
- parent = heap[parentIndex];
- if (0 < compare(parent, node))
- (heap[parentIndex] = node),
- (heap[index] = parent),
- (index = parentIndex);
- else break a;
- }
- }
- function peek(heap) {
- return 0 === heap.length ? null : heap[0];
- }
- function pop(heap) {
- if (0 === heap.length) return null;
- var first = heap[0],
- last = heap.pop();
- if (last !== first) {
- heap[0] = last;
- a: for (
- var index = 0, length = heap.length, halfLength = length >>> 1;
- index < halfLength;
- ) {
- var leftIndex = 2 * (index + 1) - 1,
- left = heap[leftIndex],
- rightIndex = leftIndex + 1,
- right = heap[rightIndex];
- if (0 > compare(left, last))
- rightIndex < length && 0 > compare(right, left)
- ? ((heap[index] = right),
- (heap[rightIndex] = last),
- (index = rightIndex))
- : ((heap[index] = left),
- (heap[leftIndex] = last),
- (index = leftIndex));
- else if (rightIndex < length && 0 > compare(right, last))
- (heap[index] = right),
- (heap[rightIndex] = last),
- (index = rightIndex);
- else break a;
- }
- }
- return first;
- }
- function compare(a, b) {
- var diff = a.sortIndex - b.sortIndex;
- return 0 !== diff ? diff : a.id - b.id;
- }
- function advanceTimers(currentTime) {
- for (var timer = peek(timerQueue); null !== timer; ) {
- if (null === timer.callback) pop(timerQueue);
- else if (timer.startTime <= currentTime)
- pop(timerQueue),
- (timer.sortIndex = timer.expirationTime),
- push(taskQueue, timer);
- else break;
- timer = peek(timerQueue);
- }
- }
- function handleTimeout(currentTime) {
- isHostTimeoutScheduled = !1;
- advanceTimers(currentTime);
- if (!isHostCallbackScheduled)
- if (null !== peek(taskQueue))
- (isHostCallbackScheduled = !0), (scheduledCallback = flushWork);
- else {
- var firstTimer = peek(timerQueue);
- null !== firstTimer &&
- ((currentTime = firstTimer.startTime - currentTime),
- (scheduledTimeout = handleTimeout),
- (timeoutTime = currentMockTime + currentTime));
- }
- }
- function flushWork(hasTimeRemaining, initialTime) {
- isHostCallbackScheduled = !1;
- isHostTimeoutScheduled &&
- ((isHostTimeoutScheduled = !1),
- (scheduledTimeout = null),
- (timeoutTime = -1));
- isPerformingWork = !0;
- var previousPriorityLevel = currentPriorityLevel;
- try {
- a: {
- advanceTimers(initialTime);
- for (
- currentTask = peek(taskQueue);
- null !== currentTask &&
- (!(currentTask.expirationTime > initialTime) ||
- (hasTimeRemaining && !shouldYieldToHost()));
- ) {
- var callback = currentTask.callback;
- if ("function" === typeof callback) {
- currentTask.callback = null;
- currentPriorityLevel = currentTask.priorityLevel;
- var continuationCallback = callback(
- currentTask.expirationTime <= initialTime
- );
- initialTime = currentMockTime;
- if ("function" === typeof continuationCallback) {
- if (
- ((currentTask.callback = continuationCallback),
- advanceTimers(initialTime),
- shouldYieldForPaint)
- ) {
- var JSCompiler_inline_result = (needsPaint = !0);
- break a;
- }
- } else
- currentTask === peek(taskQueue) && pop(taskQueue),
- advanceTimers(initialTime);
- } else pop(taskQueue);
- currentTask = peek(taskQueue);
- }
- if (null !== currentTask) JSCompiler_inline_result = !0;
- else {
- var firstTimer = peek(timerQueue);
- if (null !== firstTimer) {
- var ms = firstTimer.startTime - initialTime;
- scheduledTimeout = handleTimeout;
- timeoutTime = currentMockTime + ms;
- }
- JSCompiler_inline_result = !1;
- }
- }
- return JSCompiler_inline_result;
- } finally {
- (currentTask = null),
- (currentPriorityLevel = previousPriorityLevel),
- (isPerformingWork = !1);
- }
- }
- function shouldYieldToHost() {
- return (0 === expectedNumberOfYields && null === yieldedValues) ||
- (-1 !== expectedNumberOfYields &&
- null !== yieldedValues &&
- yieldedValues.length >= expectedNumberOfYields) ||
- (shouldYieldForPaint && needsPaint)
- ? (didStop = !0)
- : !1;
- }
- function unstable_flushAllWithoutAsserting() {
- if (isFlushing) throw Error("Already flushing work.");
- if (null !== scheduledCallback) {
- var cb = scheduledCallback;
- isFlushing = !0;
- try {
- var hasMoreWork = !0;
- do hasMoreWork = cb(!0, currentMockTime);
- while (hasMoreWork);
- hasMoreWork || (scheduledCallback = null);
- return !0;
- } finally {
- isFlushing = !1;
- }
- } else return !1;
- }
- var taskQueue = [],
- timerQueue = [],
- taskIdCounter = 1,
- currentTask = null,
- currentPriorityLevel = 3,
- isPerformingWork = !1,
- isHostCallbackScheduled = !1,
- isHostTimeoutScheduled = !1,
- currentMockTime = 0,
- scheduledCallback = null,
- scheduledTimeout = null,
- timeoutTime = -1,
- yieldedValues = null,
- expectedNumberOfYields = -1,
- didStop = !1,
- isFlushing = !1,
- needsPaint = !1,
- shouldYieldForPaint = !1,
- disableYieldValue = !1;
- exports.log = function (value) {
- "disabledLog" === console.log.name ||
- disableYieldValue ||
- (null === yieldedValues
- ? (yieldedValues = [value])
- : yieldedValues.push(value));
- };
- exports.reset = function () {
- if (isFlushing) throw Error("Cannot reset while already flushing work.");
- currentMockTime = 0;
- scheduledTimeout = scheduledCallback = null;
- timeoutTime = -1;
- yieldedValues = null;
- expectedNumberOfYields = -1;
- needsPaint = isFlushing = didStop = !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 (ms) {
- "disabledLog" === console.log.name ||
- disableYieldValue ||
- ((currentMockTime += ms),
- null !== scheduledTimeout &&
- timeoutTime <= currentMockTime &&
- (scheduledTimeout(currentMockTime),
- (timeoutTime = -1),
- (scheduledTimeout = null)));
- };
- exports.unstable_cancelCallback = function (task) {
- task.callback = null;
- };
- exports.unstable_clearLog = function () {
- if (null === yieldedValues) return [];
- var values = yieldedValues;
- yieldedValues = null;
- return values;
- };
- exports.unstable_flushAll = function () {
- if (null !== yieldedValues)
- throw Error(
- "Log is not empty. Assert on the log of yielded values before flushing additional work."
- );
- unstable_flushAllWithoutAsserting();
- if (null !== yieldedValues)
- 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 =
- unstable_flushAllWithoutAsserting;
- exports.unstable_flushExpired = function () {
- if (isFlushing) throw Error("Already flushing work.");
- if (null !== scheduledCallback) {
- isFlushing = !0;
- try {
- scheduledCallback(!1, currentMockTime) || (scheduledCallback = null);
- } finally {
- isFlushing = !1;
- }
- }
- };
- exports.unstable_flushNumberOfYields = function (count) {
- if (isFlushing) throw Error("Already flushing work.");
- if (null !== scheduledCallback) {
- var cb = scheduledCallback;
- expectedNumberOfYields = count;
- isFlushing = !0;
- try {
- count = !0;
- do count = cb(!0, currentMockTime);
- while (count && !didStop);
- count || (scheduledCallback = null);
- } finally {
- (expectedNumberOfYields = -1), (isFlushing = didStop = !1);
- }
- }
- };
- exports.unstable_flushUntilNextPaint = function () {
- if (isFlushing) throw Error("Already flushing work.");
- if (null !== scheduledCallback) {
- var cb = scheduledCallback;
- shouldYieldForPaint = !0;
- needsPaint = !1;
- isFlushing = !0;
- try {
- var hasMoreWork = !0;
- do hasMoreWork = cb(!0, currentMockTime);
- while (hasMoreWork && !didStop);
- hasMoreWork || (scheduledCallback = null);
- } finally {
- isFlushing = didStop = shouldYieldForPaint = !1;
- }
- }
- return !1;
- };
- exports.unstable_forceFrameRate = function () {};
- exports.unstable_getCurrentPriorityLevel = function () {
- return currentPriorityLevel;
- };
- exports.unstable_hasPendingWork = function () {
- return null !== scheduledCallback;
- };
- exports.unstable_next = function (eventHandler) {
- switch (currentPriorityLevel) {
- case 1:
- case 2:
- case 3:
- var priorityLevel = 3;
- break;
- default:
- priorityLevel = currentPriorityLevel;
- }
- var previousPriorityLevel = currentPriorityLevel;
- currentPriorityLevel = priorityLevel;
- try {
- return eventHandler();
- } finally {
- currentPriorityLevel = previousPriorityLevel;
- }
- };
- exports.unstable_now = function () {
- return currentMockTime;
- };
- exports.unstable_requestPaint = function () {
- needsPaint = !0;
- };
- exports.unstable_runWithPriority = function (priorityLevel, eventHandler) {
- switch (priorityLevel) {
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- break;
- default:
- priorityLevel = 3;
- }
- var previousPriorityLevel = currentPriorityLevel;
- currentPriorityLevel = priorityLevel;
- try {
- return eventHandler();
- } finally {
- currentPriorityLevel = previousPriorityLevel;
- }
- };
- exports.unstable_scheduleCallback = function (
- priorityLevel,
- callback,
- options
- ) {
- var currentTime = currentMockTime;
- "object" === typeof options && null !== options
- ? ((options = options.delay),
- (options =
- "number" === typeof options && 0 < options
- ? currentTime + options
- : currentTime))
- : (options = currentTime);
- switch (priorityLevel) {
- case 1:
- var timeout = -1;
- break;
- case 2:
- timeout = 250;
- break;
- case 5:
- timeout = 1073741823;
- break;
- case 4:
- timeout = 1e4;
- break;
- default:
- timeout = 5e3;
- }
- timeout = options + timeout;
- priorityLevel = {
- id: taskIdCounter++,
- callback: callback,
- priorityLevel: priorityLevel,
- startTime: options,
- expirationTime: timeout,
- sortIndex: -1
- };
- options > currentTime
- ? ((priorityLevel.sortIndex = options),
- push(timerQueue, priorityLevel),
- null === peek(taskQueue) &&
- priorityLevel === peek(timerQueue) &&
- (isHostTimeoutScheduled
- ? ((scheduledTimeout = null), (timeoutTime = -1))
- : (isHostTimeoutScheduled = !0),
- (scheduledTimeout = handleTimeout),
- (timeoutTime = currentMockTime + (options - currentTime))))
- : ((priorityLevel.sortIndex = timeout),
- push(taskQueue, priorityLevel),
- isHostCallbackScheduled ||
- isPerformingWork ||
- ((isHostCallbackScheduled = !0), (scheduledCallback = flushWork)));
- return priorityLevel;
- };
- exports.unstable_setDisableYieldValue = function (newValue) {
- disableYieldValue = newValue;
- };
- exports.unstable_shouldYield = shouldYieldToHost;
- exports.unstable_wrapCallback = function (callback) {
- var parentPriorityLevel = currentPriorityLevel;
- return function () {
- var previousPriorityLevel = currentPriorityLevel;
- currentPriorityLevel = parentPriorityLevel;
- try {
- return callback.apply(this, arguments);
- } finally {
- currentPriorityLevel = previousPriorityLevel;
- }
- };
- };
- })();
|