UNPKG

@tikpage/reactjs-popup

Version:

React Popup Component - Modals,Tooltips and Menus —  All in one

1 lines 573 kB
{"id":"../node_modules/scheduler/cjs/scheduler.development.js","dependencies":[{"name":"/Users/thienanh/tikpage/libs/reactjs-popup/package.json","includedInParent":true,"mtime":1593152372436},{"name":"/Users/thienanh/tikpage/libs/reactjs-popup/.babelrc","includedInParent":true,"mtime":1593152384301},{"name":"/Users/thienanh/tikpage/libs/reactjs-popup/node_modules/scheduler/package.json","includedInParent":true,"mtime":1565409262129}],"generated":{"js":"/** @license React v0.15.0\n * scheduler.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nif (\"development\" !== \"production\") {\n (function () {\n 'use strict';\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n var enableSchedulerDebugging = false;\n var enableIsInputPending = false;\n var requestIdleCallbackBeforeFirstFrame = false;\n var requestTimerEventBeforeFirstFrame = false;\n var enableMessageLoopImplementation = false; // The DOM Scheduler implementation is similar to requestIdleCallback. It\n // works by scheduling a requestAnimationFrame, storing the time for the start\n // of the frame, then scheduling a postMessage which gets scheduled after paint.\n // Within the postMessage handler do as much work as possible until time + frame\n // rate. By separating the idle call into a separate event tick we ensure that\n // layout, paint and other browser work is counted against the available time.\n // The frame rate is dynamically adjusted.\n\n var requestHostCallback = void 0;\n var requestHostTimeout = void 0;\n var cancelHostTimeout = void 0;\n var shouldYieldToHost = void 0;\n var requestPaint = void 0;\n exports.unstable_now = void 0;\n exports.unstable_forceFrameRate = void 0;\n\n if ( // If Scheduler runs in a non-DOM environment, it falls back to a naive\n // implementation using setTimeout.\n typeof window === 'undefined' || // Check if MessageChannel is supported, too.\n typeof MessageChannel !== 'function') {\n // If this accidentally gets imported in a non-browser environment, e.g. JavaScriptCore,\n // fallback to a naive implementation.\n var _callback = null;\n var _timeoutID = null;\n\n var _flushCallback = function () {\n if (_callback !== null) {\n try {\n var currentTime = exports.unstable_now();\n var hasRemainingTime = true;\n\n _callback(hasRemainingTime, currentTime);\n\n _callback = null;\n } catch (e) {\n setTimeout(_flushCallback, 0);\n throw e;\n }\n }\n };\n\n exports.unstable_now = function () {\n return Date.now();\n };\n\n requestHostCallback = function (cb) {\n if (_callback !== null) {\n // Protect against re-entrancy.\n setTimeout(requestHostCallback, 0, cb);\n } else {\n _callback = cb;\n setTimeout(_flushCallback, 0);\n }\n };\n\n requestHostTimeout = function (cb, ms) {\n _timeoutID = setTimeout(cb, ms);\n };\n\n cancelHostTimeout = function () {\n clearTimeout(_timeoutID);\n };\n\n shouldYieldToHost = function () {\n return false;\n };\n\n requestPaint = exports.unstable_forceFrameRate = function () {};\n } else {\n // Capture local references to native APIs, in case a polyfill overrides them.\n var performance = window.performance;\n var _Date = window.Date;\n var _setTimeout = window.setTimeout;\n var _clearTimeout = window.clearTimeout;\n var requestAnimationFrame = window.requestAnimationFrame;\n var cancelAnimationFrame = window.cancelAnimationFrame;\n var requestIdleCallback = window.requestIdleCallback;\n\n if (typeof console !== 'undefined') {\n // TODO: Remove fb.me link\n if (typeof requestAnimationFrame !== 'function') {\n console.error(\"This browser doesn't support requestAnimationFrame. \" + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills');\n }\n\n if (typeof cancelAnimationFrame !== 'function') {\n console.error(\"This browser doesn't support cancelAnimationFrame. \" + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills');\n }\n }\n\n var requestIdleCallbackBeforeFirstFrame$1 = requestIdleCallbackBeforeFirstFrame && typeof requestIdleCallback === 'function' && typeof cancelIdleCallback === 'function';\n exports.unstable_now = typeof performance === 'object' && typeof performance.now === 'function' ? function () {\n return performance.now();\n } : function () {\n return _Date.now();\n };\n var isRAFLoopRunning = false;\n var isMessageLoopRunning = false;\n var scheduledHostCallback = null;\n var rAFTimeoutID = -1;\n var taskTimeoutID = -1;\n var frameLength = enableMessageLoopImplementation ? // We won't attempt to align with the vsync. Instead we'll yield multiple\n // times per frame, often enough to keep it responsive even at really\n // high frame rates > 120.\n 5 : // Use a heuristic to measure the frame rate and yield at the end of the\n // frame. We start out assuming that we run at 30fps but then the\n // heuristic tracking will adjust this value to a faster fps if we get\n // more frequent animation frames.\n 33.33;\n var prevRAFTime = -1;\n var prevRAFInterval = -1;\n var frameDeadline = 0;\n var fpsLocked = false; // TODO: Make this configurable\n // TODO: Adjust this based on priority?\n\n var maxFrameLength = 300;\n var needsPaint = false;\n\n if (enableIsInputPending && navigator !== undefined && navigator.scheduling !== undefined && navigator.scheduling.isInputPending !== undefined) {\n var scheduling = navigator.scheduling;\n\n shouldYieldToHost = function () {\n var currentTime = exports.unstable_now();\n\n if (currentTime >= frameDeadline) {\n // There's no time left in the frame. We may want to yield control of\n // the main thread, so the browser can perform high priority tasks. The\n // main ones are painting and user input. If there's a pending paint or\n // a pending input, then we should yield. But if there's neither, then\n // we can yield less often while remaining responsive. We'll eventually\n // yield regardless, since there could be a pending paint that wasn't\n // accompanied by a call to `requestPaint`, or other main thread tasks\n // like network events.\n if (needsPaint || scheduling.isInputPending()) {\n // There is either a pending paint or a pending input.\n return true;\n } // There's no pending input. Only yield if we've reached the max\n // frame length.\n\n\n return currentTime >= frameDeadline + maxFrameLength;\n } else {\n // There's still time left in the frame.\n return false;\n }\n };\n\n requestPaint = function () {\n needsPaint = true;\n };\n } else {\n // `isInputPending` is not available. Since we have no way of knowing if\n // there's pending input, always yield at the end of the frame.\n shouldYieldToHost = function () {\n return exports.unstable_now() >= frameDeadline;\n }; // Since we yield every frame regardless, `requestPaint` has no effect.\n\n\n requestPaint = function () {};\n }\n\n exports.unstable_forceFrameRate = function (fps) {\n if (fps < 0 || fps > 125) {\n console.error('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing framerates higher than 125 fps is not unsupported');\n return;\n }\n\n if (fps > 0) {\n frameLength = Math.floor(1000 / fps);\n fpsLocked = true;\n } else {\n // reset the framerate\n frameLength = 33.33;\n fpsLocked = false;\n }\n };\n\n var performWorkUntilDeadline = function () {\n if (enableMessageLoopImplementation) {\n if (scheduledHostCallback !== null) {\n var currentTime = exports.unstable_now(); // Yield after `frameLength` ms, regardless of where we are in the vsync\n // cycle. This means there's always time remaining at the beginning of\n // the message event.\n\n frameDeadline = currentTime + frameLength;\n var hasTimeRemaining = true;\n\n try {\n var hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);\n\n if (!hasMoreWork) {\n isMessageLoopRunning = false;\n scheduledHostCallback = null;\n } else {\n // If there's more work, schedule the next message event at the end\n // of the preceding one.\n port.postMessage(null);\n }\n } catch (error) {\n // If a scheduler task throws, exit the current browser task so the\n // error can be observed.\n port.postMessage(null);\n throw error;\n }\n } // Yielding to the browser will give it a chance to paint, so we can\n // reset this.\n\n\n needsPaint = false;\n } else {\n if (scheduledHostCallback !== null) {\n var _currentTime = exports.unstable_now();\n\n var _hasTimeRemaining = frameDeadline - _currentTime > 0;\n\n try {\n var _hasMoreWork = scheduledHostCallback(_hasTimeRemaining, _currentTime);\n\n if (!_hasMoreWork) {\n scheduledHostCallback = null;\n }\n } catch (error) {\n // If a scheduler task throws, exit the current browser task so the\n // error can be observed, and post a new task as soon as possible\n // so we can continue where we left off.\n port.postMessage(null);\n throw error;\n }\n } // Yielding to the browser will give it a chance to paint, so we can\n // reset this.\n\n\n needsPaint = false;\n }\n };\n\n var channel = new MessageChannel();\n var port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n\n var onAnimationFrame = function (rAFTime) {\n if (scheduledHostCallback === null) {\n // No scheduled work. Exit.\n prevRAFTime = -1;\n prevRAFInterval = -1;\n isRAFLoopRunning = false;\n return;\n } // Eagerly schedule the next animation callback at the beginning of the\n // frame. If the scheduler queue is not empty at the end of the frame, it\n // will continue flushing inside that callback. If the queue *is* empty,\n // then it will exit immediately. Posting the callback at the start of the\n // frame ensures it's fired within the earliest possible frame. If we\n // waited until the end of the frame to post the callback, we risk the\n // browser skipping a frame and not firing the callback until the frame\n // after that.\n\n\n isRAFLoopRunning = true;\n requestAnimationFrame(function (nextRAFTime) {\n _clearTimeout(rAFTimeoutID);\n\n onAnimationFrame(nextRAFTime);\n }); // requestAnimationFrame is throttled when the tab is backgrounded. We\n // don't want to stop working entirely. So we'll fallback to a timeout loop.\n // TODO: Need a better heuristic for backgrounded work.\n\n var onTimeout = function () {\n frameDeadline = exports.unstable_now() + frameLength / 2;\n performWorkUntilDeadline();\n rAFTimeoutID = _setTimeout(onTimeout, frameLength * 3);\n };\n\n rAFTimeoutID = _setTimeout(onTimeout, frameLength * 3);\n\n if (prevRAFTime !== -1 && // Make sure this rAF time is different from the previous one. This check\n // could fail if two rAFs fire in the same frame.\n rAFTime - prevRAFTime > 0.1) {\n var rAFInterval = rAFTime - prevRAFTime;\n\n if (!fpsLocked && prevRAFInterval !== -1) {\n // We've observed two consecutive frame intervals. We'll use this to\n // dynamically adjust the frame rate.\n //\n // If one frame goes long, then the next one can be short to catch up.\n // If two frames are short in a row, then that's an indication that we\n // actually have a higher frame rate than what we're currently\n // optimizing. For example, if we're running on 120hz display or 90hz VR\n // display. Take the max of the two in case one of them was an anomaly\n // due to missed frame deadlines.\n if (rAFInterval < frameLength && prevRAFInterval < frameLength) {\n frameLength = rAFInterval < prevRAFInterval ? prevRAFInterval : rAFInterval;\n\n if (frameLength < 8.33) {\n // Defensive coding. We don't support higher frame rates than 120hz.\n // If the calculated frame length gets lower than 8, it is probably\n // a bug.\n frameLength = 8.33;\n }\n }\n }\n\n prevRAFInterval = rAFInterval;\n }\n\n prevRAFTime = rAFTime;\n frameDeadline = rAFTime + frameLength; // We use the postMessage trick to defer idle work until after the repaint.\n\n port.postMessage(null);\n };\n\n requestHostCallback = function (callback) {\n scheduledHostCallback = callback;\n\n if (enableMessageLoopImplementation) {\n if (!isMessageLoopRunning) {\n isMessageLoopRunning = true;\n port.postMessage(null);\n }\n } else {\n if (!isRAFLoopRunning) {\n // Start a rAF loop.\n isRAFLoopRunning = true;\n requestAnimationFrame(function (rAFTime) {\n if (requestIdleCallbackBeforeFirstFrame$1) {\n cancelIdleCallback(idleCallbackID);\n }\n\n if (requestTimerEventBeforeFirstFrame) {\n _clearTimeout(idleTimeoutID);\n }\n\n onAnimationFrame(rAFTime);\n }); // If we just missed the last vsync, the next rAF might not happen for\n // another frame. To claim as much idle time as possible, post a\n // callback with `requestIdleCallback`, which should fire if there's\n // idle time left in the frame.\n //\n // This should only be an issue for the first rAF in the loop;\n // subsequent rAFs are scheduled at the beginning of the\n // preceding frame.\n\n var idleCallbackID = void 0;\n\n if (requestIdleCallbackBeforeFirstFrame$1) {\n idleCallbackID = requestIdleCallback(function onIdleCallbackBeforeFirstFrame() {\n if (requestTimerEventBeforeFirstFrame) {\n _clearTimeout(idleTimeoutID);\n }\n\n frameDeadline = exports.unstable_now() + frameLength;\n performWorkUntilDeadline();\n });\n } // Alternate strategy to address the same problem. Scheduler a timer\n // with no delay. If this fires before the rAF, that likely indicates\n // that there's idle time before the next vsync. This isn't always the\n // case, but we'll be aggressive and assume it is, as a trade off to\n // prevent idle periods.\n\n\n var idleTimeoutID = void 0;\n\n if (requestTimerEventBeforeFirstFrame) {\n idleTimeoutID = _setTimeout(function onTimerEventBeforeFirstFrame() {\n if (requestIdleCallbackBeforeFirstFrame$1) {\n cancelIdleCallback(idleCallbackID);\n }\n\n frameDeadline = exports.unstable_now() + frameLength;\n performWorkUntilDeadline();\n }, 0);\n }\n }\n }\n };\n\n requestHostTimeout = function (callback, ms) {\n taskTimeoutID = _setTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n };\n\n cancelHostTimeout = function () {\n _clearTimeout(taskTimeoutID);\n\n taskTimeoutID = -1;\n };\n }\n /* eslint-disable no-var */\n // TODO: Use symbols?\n\n\n var ImmediatePriority = 1;\n var UserBlockingPriority = 2;\n var NormalPriority = 3;\n var LowPriority = 4;\n var IdlePriority = 5; // Max 31 bit integer. The max integer size in V8 for 32-bit systems.\n // Math.pow(2, 30) - 1\n // 0b111111111111111111111111111111\n\n var maxSigned31BitInt = 1073741823; // Times out immediately\n\n var IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out\n\n var USER_BLOCKING_PRIORITY = 250;\n var NORMAL_PRIORITY_TIMEOUT = 5000;\n var LOW_PRIORITY_TIMEOUT = 10000; // Never times out\n\n var IDLE_PRIORITY = maxSigned31BitInt; // Tasks are stored as a circular, doubly linked list.\n\n var firstTask = null;\n var firstDelayedTask = null; // Pausing the scheduler is useful for debugging.\n\n var isSchedulerPaused = false;\n var currentTask = null;\n var currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrancy.\n\n var isPerformingWork = false;\n var isHostCallbackScheduled = false;\n var isHostTimeoutScheduled = false;\n\n function scheduler_flushTaskAtPriority_Immediate(callback, didTimeout) {\n return callback(didTimeout);\n }\n\n function scheduler_flushTaskAtPriority_UserBlocking(callback, didTimeout) {\n return callback(didTimeout);\n }\n\n function scheduler_flushTaskAtPriority_Normal(callback, didTimeout) {\n return callback(didTimeout);\n }\n\n function scheduler_flushTaskAtPriority_Low(callback, didTimeout) {\n return callback(didTimeout);\n }\n\n function scheduler_flushTaskAtPriority_Idle(callback, didTimeout) {\n return callback(didTimeout);\n }\n\n function flushTask(task, currentTime) {\n // Remove the task from the list before calling the callback. That way the\n // list is in a consistent state even if the callback throws.\n var next = task.next;\n\n if (next === task) {\n // This is the only scheduled task. Clear the list.\n firstTask = null;\n } else {\n // Remove the task from its position in the list.\n if (task === firstTask) {\n firstTask = next;\n }\n\n var previous = task.previous;\n previous.next = next;\n next.previous = previous;\n }\n\n task.next = task.previous = null; // Now it's safe to execute the task.\n\n var callback = task.callback;\n var previousPriorityLevel = currentPriorityLevel;\n var previousTask = currentTask;\n currentPriorityLevel = task.priorityLevel;\n currentTask = task;\n var continuationCallback;\n\n try {\n var didUserCallbackTimeout = task.expirationTime <= currentTime; // Add an extra function to the callstack. Profiling tools can use this\n // to infer the priority of work that appears higher in the stack.\n\n switch (currentPriorityLevel) {\n case ImmediatePriority:\n continuationCallback = scheduler_flushTaskAtPriority_Immediate(callback, didUserCallbackTimeout);\n break;\n\n case UserBlockingPriority:\n continuationCallback = scheduler_flushTaskAtPriority_UserBlocking(callback, didUserCallbackTimeout);\n break;\n\n case NormalPriority:\n continuationCallback = scheduler_flushTaskAtPriority_Normal(callback, didUserCallbackTimeout);\n break;\n\n case LowPriority:\n continuationCallback = scheduler_flushTaskAtPriority_Low(callback, didUserCallbackTimeout);\n break;\n\n case IdlePriority:\n continuationCallback = scheduler_flushTaskAtPriority_Idle(callback, didUserCallbackTimeout);\n break;\n }\n } catch (error) {\n throw error;\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n currentTask = previousTask;\n } // A callback may return a continuation. The continuation should be scheduled\n // with the same priority and expiration as the just-finished callback.\n\n\n if (typeof continuationCallback === 'function') {\n var expirationTime = task.expirationTime;\n var continuationTask = task;\n continuationTask.callback = continuationCallback; // Insert the new callback into the list, sorted by its timeout. This is\n // almost the same as the code in `scheduleCallback`, except the callback\n // is inserted into the list *before* callbacks of equal timeout instead\n // of after.\n\n if (firstTask === null) {\n // This is the first callback in the list.\n firstTask = continuationTask.next = continuationTask.previous = continuationTask;\n } else {\n var nextAfterContinuation = null;\n var t = firstTask;\n\n do {\n if (expirationTime <= t.expirationTime) {\n // This task times out at or after the continuation. We will insert\n // the continuation *before* this task.\n nextAfterContinuation = t;\n break;\n }\n\n t = t.next;\n } while (t !== firstTask);\n\n if (nextAfterContinuation === null) {\n // No equal or lower priority task was found, which means the new task\n // is the lowest priority task in the list.\n nextAfterContinuation = firstTask;\n } else if (nextAfterContinuation === firstTask) {\n // The new task is the highest priority task in the list.\n firstTask = continuationTask;\n }\n\n var _previous = nextAfterContinuation.previous;\n _previous.next = nextAfterContinuation.previous = continuationTask;\n continuationTask.next = nextAfterContinuation;\n continuationTask.previous = _previous;\n }\n }\n }\n\n function advanceTimers(currentTime) {\n // Check for tasks that are no longer delayed and add them to the queue.\n if (firstDelayedTask !== null && firstDelayedTask.startTime <= currentTime) {\n do {\n var task = firstDelayedTask;\n var next = task.next;\n\n if (task === next) {\n firstDelayedTask = null;\n } else {\n firstDelayedTask = next;\n var previous = task.previous;\n previous.next = next;\n next.previous = previous;\n }\n\n task.next = task.previous = null;\n insertScheduledTask(task, task.expirationTime);\n } while (firstDelayedTask !== null && firstDelayedTask.startTime <= currentTime);\n }\n }\n\n function handleTimeout(currentTime) {\n isHostTimeoutScheduled = false;\n advanceTimers(currentTime);\n\n if (!isHostCallbackScheduled) {\n if (firstTask !== null) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n } else if (firstDelayedTask !== null) {\n requestHostTimeout(handleTimeout, firstDelayedTask.startTime - currentTime);\n }\n }\n }\n\n function flushWork(hasTimeRemaining, initialTime) {\n // Exit right away if we're currently paused\n if (enableSchedulerDebugging && isSchedulerPaused) {\n return;\n } // We'll need a host callback the next time work is scheduled.\n\n\n isHostCallbackScheduled = false;\n\n if (isHostTimeoutScheduled) {\n // We scheduled a timeout but it's no longer needed. Cancel it.\n isHostTimeoutScheduled = false;\n cancelHostTimeout();\n }\n\n var currentTime = initialTime;\n advanceTimers(currentTime);\n isPerformingWork = true;\n\n try {\n if (!hasTimeRemaining) {\n // Flush all the expired callbacks without yielding.\n // TODO: Split flushWork into two separate functions instead of using\n // a boolean argument?\n while (firstTask !== null && firstTask.expirationTime <= currentTime && !(enableSchedulerDebugging && isSchedulerPaused)) {\n flushTask(firstTask, currentTime);\n currentTime = exports.unstable_now();\n advanceTimers(currentTime);\n }\n } else {\n // Keep flushing callbacks until we run out of time in the frame.\n if (firstTask !== null) {\n do {\n flushTask(firstTask, currentTime);\n currentTime = exports.unstable_now();\n advanceTimers(currentTime);\n } while (firstTask !== null && !shouldYieldToHost() && !(enableSchedulerDebugging && isSchedulerPaused));\n }\n } // Return whether there's additional work\n\n\n if (firstTask !== null) {\n return true;\n } else {\n if (firstDelayedTask !== null) {\n requestHostTimeout(handleTimeout, firstDelayedTask.startTime - currentTime);\n }\n\n return false;\n }\n } finally {\n isPerformingWork = false;\n }\n }\n\n function unstable_runWithPriority(priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case ImmediatePriority:\n case UserBlockingPriority:\n case NormalPriority:\n case LowPriority:\n case IdlePriority:\n break;\n\n default:\n priorityLevel = NormalPriority;\n }\n\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n }\n\n function unstable_next(eventHandler) {\n var priorityLevel;\n\n switch (currentPriorityLevel) {\n case ImmediatePriority:\n case UserBlockingPriority:\n case NormalPriority:\n // Shift down to normal priority\n priorityLevel = NormalPriority;\n break;\n\n default:\n // Anything lower than normal priority should remain at the current level.\n priorityLevel = currentPriorityLevel;\n break;\n }\n\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n }\n\n function unstable_wrapCallback(callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n // This is a fork of runWithPriority, inlined for performance.\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n }\n\n function timeoutForPriorityLevel(priorityLevel) {\n switch (priorityLevel) {\n case ImmediatePriority:\n return IMMEDIATE_PRIORITY_TIMEOUT;\n\n case UserBlockingPriority:\n return USER_BLOCKING_PRIORITY;\n\n case IdlePriority:\n return IDLE_PRIORITY;\n\n case LowPriority:\n return LOW_PRIORITY_TIMEOUT;\n\n case NormalPriority:\n default:\n return NORMAL_PRIORITY_TIMEOUT;\n }\n }\n\n function unstable_scheduleCallback(priorityLevel, callback, options) {\n var currentTime = exports.unstable_now();\n var startTime;\n var timeout;\n\n if (typeof options === 'object' && options !== null) {\n var delay = options.delay;\n\n if (typeof delay === 'number' && delay > 0) {\n startTime = currentTime + delay;\n } else {\n startTime = currentTime;\n }\n\n timeout = typeof options.timeout === 'number' ? options.timeout : timeoutForPriorityLevel(priorityLevel);\n } else {\n timeout = timeoutForPriorityLevel(priorityLevel);\n startTime = currentTime;\n }\n\n var expirationTime = startTime + timeout;\n var newTask = {\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: startTime,\n expirationTime: expirationTime,\n next: null,\n previous: null\n };\n\n if (startTime > currentTime) {\n // This is a delayed task.\n insertDelayedTask(newTask, startTime);\n\n if (firstTask === null && firstDelayedTask === newTask) {\n // All tasks are delayed, and this is the task with the earliest delay.\n if (isHostTimeoutScheduled) {\n // Cancel an existing timeout.\n cancelHostTimeout();\n } else {\n isHostTimeoutScheduled = true;\n } // Schedule a timeout.\n\n\n requestHostTimeout(handleTimeout, startTime - currentTime);\n }\n } else {\n insertScheduledTask(newTask, expirationTime); // Schedule a host callback, if needed. If we're already performing work,\n // wait until the next time we yield.\n\n if (!isHostCallbackScheduled && !isPerformingWork) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n }\n }\n\n return newTask;\n }\n\n function insertScheduledTask(newTask, expirationTime) {\n // Insert the new task into the list, ordered first by its timeout, then by\n // insertion. So the new task is inserted after any other task the\n // same timeout\n if (firstTask === null) {\n // This is the first task in the list.\n firstTask = newTask.next = newTask.previous = newTask;\n } else {\n var next = null;\n var task = firstTask;\n\n do {\n if (expirationTime < task.expirationTime) {\n // The new task times out before this one.\n next = task;\n break;\n }\n\n task = task.next;\n } while (task !== firstTask);\n\n if (next === null) {\n // No task with a later timeout was found, which means the new task has\n // the latest timeout in the list.\n next = firstTask;\n } else if (next === firstTask) {\n // The new task has the earliest expiration in the entire list.\n firstTask = newTask;\n }\n\n var previous = next.previous;\n previous.next = next.previous = newTask;\n newTask.next = next;\n newTask.previous = previous;\n }\n }\n\n function insertDelayedTask(newTask, startTime) {\n // Insert the new task into the list, ordered by its start time.\n if (firstDelayedTask === null) {\n // This is the first task in the list.\n firstDelayedTask = newTask.next = newTask.previous = newTask;\n } else {\n var next = null;\n var task = firstDelayedTask;\n\n do {\n if (startTime < task.startTime) {\n // The new task times out before this one.\n next = task;\n break;\n }\n\n task = task.next;\n } while (task !== firstDelayedTask);\n\n if (next === null) {\n // No task with a later timeout was found, which means the new task has\n // the latest timeout in the list.\n next = firstDelayedTask;\n } else if (next === firstDelayedTask) {\n // The new task has the earliest expiration in the entire list.\n firstDelayedTask = newTask;\n }\n\n var previous = next.previous;\n previous.next = next.previous = newTask;\n newTask.next = next;\n newTask.previous = previous;\n }\n }\n\n function unstable_pauseExecution() {\n isSchedulerPaused = true;\n }\n\n function unstable_continueExecution() {\n isSchedulerPaused = false;\n\n if (!isHostCallbackScheduled && !isPerformingWork) {\n isHostCallbackScheduled = true;\n requestHostCallback(flushWork);\n }\n }\n\n function unstable_getFirstCallbackNode() {\n return firstTask;\n }\n\n function unstable_cancelCallback(task) {\n var next = task.next;\n\n if (next === null) {\n // Already cancelled.\n return;\n }\n\n if (task === next) {\n if (task === firstTask) {\n firstTask = null;\n } else if (task === firstDelayedTask) {\n firstDelayedTask = null;\n }\n } else {\n if (task === firstTask) {\n firstTask = next;\n } else if (task === firstDelayedTask) {\n firstDelayedTask = next;\n }\n\n var previous = task.previous;\n previous.next = next;\n next.previous = previous;\n }\n\n task.next = task.previous = null;\n }\n\n function unstable_getCurrentPriorityLevel() {\n return currentPriorityLevel;\n }\n\n function unstable_shouldYield() {\n var currentTime = exports.unstable_now();\n advanceTimers(currentTime);\n return currentTask !== null && firstTask !== null && firstTask.startTime <= currentTime && firstTask.expirationTime < currentTask.expirationTime || shouldYieldToHost();\n }\n\n var unstable_requestPaint = requestPaint;\n exports.unstable_ImmediatePriority = ImmediatePriority;\n exports.unstable_UserBlockingPriority = UserBlockingPriority;\n exports.unstable_NormalPriority = NormalPriority;\n exports.unstable_IdlePriority = IdlePriority;\n exports.unstable_LowPriority = LowPriority;\n exports.unstable_runWithPriority = unstable_runWithPriority;\n exports.unstable_next = unstable_next;\n exports.unstable_scheduleCallback = unstable_scheduleCallback;\n exports.unstable_cancelCallback = unstable_cancelCallback;\n exports.unstable_wrapCallback = unstable_wrapCallback;\n exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;\n exports.unstable_shouldYield = unstable_shouldYield;\n exports.unstable_requestPaint = unstable_requestPaint;\n exports.unstable_continueExecution = unstable_continueExecution;\n exports.unstable_pauseExecution = unstable_pauseExecution;\n exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;\n })();\n}"},"sourceMaps":{"js":{"mappings":[{"generated":{"line":1,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":1,"column":0}},{"generated":{"line":9,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":10,"column":0}},{"generated":{"line":11,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":14,"column":0}},{"generated":{"line":11,"column":4},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":14,"column":4}},{"generated":{"line":11,"column":22},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":14,"column":29}},{"generated":{"line":11,"column":34},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":14,"column":0}},{"generated":{"line":11,"column":36},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":14,"column":43}},{"generated":{"line":12,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":15,"column":2}},{"generated":{"line":12,"column":3},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":15,"column":3}},{"generated":{"line":12,"column":15},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":15,"column":14}},{"generated":{"line":13,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":16,"column":0}},{"name":"Object","generated":{"line":15,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":0}},{"name":"Object","generated":{"line":15,"column":4},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":0}},{"generated":{"line":15,"column":10},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":6}},{"name":"defineProperty","generated":{"line":15,"column":11},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":7}},{"generated":{"line":15,"column":25},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":0}},{"name":"exports","generated":{"line":15,"column":26},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":22}},{"generated":{"line":15,"column":33},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":0}},{"generated":{"line":15,"column":35},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":31}},{"generated":{"line":15,"column":47},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":0}},{"generated":{"line":15,"column":49},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":45}},{"name":"value","generated":{"line":16,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":47}},{"name":"value","generated":{"line":16,"column":6},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":47}},{"generated":{"line":16,"column":11},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":52}},{"generated":{"line":16,"column":13},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":54}},{"generated":{"line":17,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":45}},{"generated":{"line":17,"column":5},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":18,"column":0}},{"generated":{"line":18,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":20,"column":0}},{"name":"enableSchedulerDebugging","generated":{"line":18,"column":8},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":20,"column":4}},{"generated":{"line":18,"column":32},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":20,"column":28}},{"generated":{"line":18,"column":35},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":20,"column":31}},{"generated":{"line":18,"column":40},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":20,"column":0}},{"generated":{"line":19,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":21,"column":0}},{"name":"enableIsInputPending","generated":{"line":19,"column":8},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":21,"column":4}},{"generated":{"line":19,"column":28},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":21,"column":24}},{"generated":{"line":19,"column":31},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":21,"column":27}},{"generated":{"line":19,"column":36},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":21,"column":0}},{"generated":{"line":20,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":22,"column":0}},{"name":"requestIdleCallbackBeforeFirstFrame","generated":{"line":20,"column":8},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":22,"column":4}},{"generated":{"line":20,"column":43},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":22,"column":39}},{"generated":{"line":20,"column":46},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":22,"column":42}},{"generated":{"line":20,"column":51},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":22,"column":0}},{"generated":{"line":21,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":23,"column":0}},{"name":"requestTimerEventBeforeFirstFrame","generated":{"line":21,"column":8},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":23,"column":4}},{"generated":{"line":21,"column":41},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":23,"column":37}},{"generated":{"line":21,"column":44},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":23,"column":40}},{"generated":{"line":21,"column":49},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":23,"column":0}},{"generated":{"line":22,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":24,"column":0}},{"name":"enableMessageLoopImplementation","generated":{"line":22,"column":8},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":24,"column":4}},{"generated":{"line":22,"column":39},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":24,"column":35}},{"generated":{"line":22,"column":42},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":24,"column":38}},{"generated":{"line":22,"column":47},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":24,"column":0}},{"generated":{"line":22,"column":48},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":15,"column":14}},{"generated":{"line":22,"column":49},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":26,"column":0}},{"generated":{"line":23,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":27,"column":0}},{"generated":{"line":24,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":28,"column":0}},{"generated":{"line":25,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":29,"column":0}},{"generated":{"line":26,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":30,"column":0}},{"generated":{"line":27,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":31,"column":0}},{"generated":{"line":28,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":32,"column":0}},{"generated":{"line":30,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":34,"column":0}},{"name":"requestHostCallback","generated":{"line":30,"column":8},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":34,"column":4}},{"generated":{"line":30,"column":27},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":34,"column":23}},{"generated":{"line":30,"column":30},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":34,"column":26}},{"generated":{"line":30,"column":35},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":34,"column":31}},{"generated":{"line":30,"column":36},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":34,"column":0}},{"generated":{"line":31,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":36,"column":0}},{"name":"requestHostTimeout","generated":{"line":31,"column":8},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":36,"column":4}},{"generated":{"line":31,"column":26},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":36,"column":22}},{"generated":{"line":31,"column":29},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":36,"column":25}},{"generated":{"line":31,"column":34},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":36,"column":30}},{"generated":{"line":31,"column":35},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":36,"column":0}},{"generated":{"line":32,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":37,"column":0}},{"name":"cancelHostTimeout","generated":{"line":32,"column":8},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":37,"column":4}},{"generated":{"line":32,"column":25},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":37,"column":21}},{"generated":{"line":32,"column":28},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":37,"column":24}},{"generated":{"line":32,"column":33},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":37,"column":29}},{"generated":{"line":32,"column":34},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":37,"column":0}},{"generated":{"line":33,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":38,"column":0}},{"name":"shouldYieldToHost","generated":{"line":33,"column":8},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":38,"column":4}},{"generated":{"line":33,"column":25},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":38,"column":21}},{"generated":{"line":33,"column":28},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":38,"column":24}},{"generated":{"line":33,"column":33},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":38,"column":29}},{"generated":{"line":33,"column":34},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":38,"column":0}},{"generated":{"line":34,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":39,"column":0}},{"name":"requestPaint","generated":{"line":34,"column":8},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":39,"column":4}},{"generated":{"line":34,"column":20},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":39,"column":16}},{"generated":{"line":34,"column":23},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":39,"column":19}},{"generated":{"line":34,"column":28},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":39,"column":24}},{"generated":{"line":34,"column":29},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":39,"column":0}},{"name":"exports","generated":{"line":35,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":40,"column":0}},{"name":"exports","generated":{"line":35,"column":4},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":40,"column":0}},{"generated":{"line":35,"column":11},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":40,"column":7}},{"name":"unstable_now","generated":{"line":35,"column":12},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":40,"column":8}},{"generated":{"line":35,"column":24},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":40,"column":0}},{"generated":{"line":35,"column":27},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":40,"column":23}},{"generated":{"line":35,"column":32},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":40,"column":28}},{"generated":{"line":35,"column":33},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":40,"column":0}},{"name":"exports","generated":{"line":36,"column":0},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":41,"column":0}},{"name":"exports","generated":{"line":36,"column":4},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":41,"column":0}},{"generated":{"line":36,"column":11},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":41,"column":7}},{"name":"unstable_forceFrameRate","generated":{"line":36,"column":12},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":41,"column":8}},{"generated":{"line":36,"column":35},"source":"../node_modules/scheduler/cjs/scheduler.development.js","original":{"line":41,"column":0}},{"generated":{"line":36,"column":38},"source":"../node_m