scheduler-unstable_post_task.development.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /**
  2. * @license React
  3. * scheduler-unstable_post_task.development.js
  4. *
  5. * Copyright (c) Meta Platforms, Inc. and affiliates.
  6. *
  7. * This source code is licensed under the MIT license found in the
  8. * LICENSE file in the root directory of this source tree.
  9. */
  10. "use strict";
  11. "production" !== process.env.NODE_ENV &&
  12. (function () {
  13. function runTask(priorityLevel, postTaskPriority, node, callback) {
  14. deadline = getCurrentTime() + 5;
  15. try {
  16. currentPriorityLevel_DEPRECATED = priorityLevel;
  17. var result = callback(!1);
  18. if ("function" === typeof result) {
  19. var continuationOptions = { signal: node._controller.signal },
  20. nextTask = runTask.bind(
  21. null,
  22. priorityLevel,
  23. postTaskPriority,
  24. node,
  25. result
  26. );
  27. void 0 !== scheduler.yield
  28. ? scheduler
  29. .yield(continuationOptions)
  30. .then(nextTask)
  31. .catch(handleAbortError)
  32. : scheduler
  33. .postTask(nextTask, continuationOptions)
  34. .catch(handleAbortError);
  35. }
  36. } catch (error) {
  37. setTimeout(function () {
  38. throw error;
  39. });
  40. } finally {
  41. currentPriorityLevel_DEPRECATED = 3;
  42. }
  43. }
  44. function handleAbortError() {}
  45. var perf = window.performance,
  46. setTimeout = window.setTimeout,
  47. scheduler = global.scheduler,
  48. getCurrentTime = perf.now.bind(perf),
  49. deadline = 0,
  50. currentPriorityLevel_DEPRECATED = 3;
  51. exports.unstable_IdlePriority = 5;
  52. exports.unstable_ImmediatePriority = 1;
  53. exports.unstable_LowPriority = 4;
  54. exports.unstable_NormalPriority = 3;
  55. exports.unstable_Profiling = null;
  56. exports.unstable_UserBlockingPriority = 2;
  57. exports.unstable_cancelCallback = function (node) {
  58. node._controller.abort();
  59. };
  60. exports.unstable_forceFrameRate = function () {};
  61. exports.unstable_getCurrentPriorityLevel = function () {
  62. return currentPriorityLevel_DEPRECATED;
  63. };
  64. exports.unstable_next = function (callback) {
  65. switch (currentPriorityLevel_DEPRECATED) {
  66. case 1:
  67. case 2:
  68. case 3:
  69. var priorityLevel = 3;
  70. break;
  71. default:
  72. priorityLevel = currentPriorityLevel_DEPRECATED;
  73. }
  74. var previousPriorityLevel = currentPriorityLevel_DEPRECATED;
  75. currentPriorityLevel_DEPRECATED = priorityLevel;
  76. try {
  77. return callback();
  78. } finally {
  79. currentPriorityLevel_DEPRECATED = previousPriorityLevel;
  80. }
  81. };
  82. exports.unstable_now = getCurrentTime;
  83. exports.unstable_requestPaint = function () {};
  84. exports.unstable_runWithPriority = function (priorityLevel, callback) {
  85. var previousPriorityLevel = currentPriorityLevel_DEPRECATED;
  86. currentPriorityLevel_DEPRECATED = priorityLevel;
  87. try {
  88. return callback();
  89. } finally {
  90. currentPriorityLevel_DEPRECATED = previousPriorityLevel;
  91. }
  92. };
  93. exports.unstable_scheduleCallback = function (
  94. priorityLevel,
  95. callback,
  96. options
  97. ) {
  98. switch (priorityLevel) {
  99. case 1:
  100. case 2:
  101. var postTaskPriority = "user-blocking";
  102. break;
  103. case 4:
  104. case 3:
  105. postTaskPriority = "user-visible";
  106. break;
  107. case 5:
  108. postTaskPriority = "background";
  109. break;
  110. default:
  111. postTaskPriority = "user-visible";
  112. }
  113. var controller = new TaskController({ priority: postTaskPriority });
  114. options = {
  115. delay:
  116. "object" === typeof options && null !== options ? options.delay : 0,
  117. signal: controller.signal
  118. };
  119. controller = { _controller: controller };
  120. scheduler
  121. .postTask(
  122. runTask.bind(
  123. null,
  124. priorityLevel,
  125. postTaskPriority,
  126. controller,
  127. callback
  128. ),
  129. options
  130. )
  131. .catch(handleAbortError);
  132. return controller;
  133. };
  134. exports.unstable_shouldYield = function () {
  135. return getCurrentTime() >= deadline;
  136. };
  137. exports.unstable_wrapCallback = function (callback) {
  138. var parentPriorityLevel = currentPriorityLevel_DEPRECATED;
  139. return function () {
  140. var previousPriorityLevel = currentPriorityLevel_DEPRECATED;
  141. currentPriorityLevel_DEPRECATED = parentPriorityLevel;
  142. try {
  143. return callback();
  144. } finally {
  145. currentPriorityLevel_DEPRECATED = previousPriorityLevel;
  146. }
  147. };
  148. };
  149. })();