wp/wp-includes/js/dist/priority-queue.js
changeset 16 a86126ab1dd4
parent 9 177826044cd9
child 18 be944660c56a
--- a/wp/wp-includes/js/dist/priority-queue.js	Tue Oct 22 16:11:46 2019 +0200
+++ b/wp/wp-includes/js/dist/priority-queue.js	Tue Dec 15 13:49:49 2020 +0100
@@ -82,18 +82,87 @@
 /******/
 /******/
 /******/ 	// Load entry module and return exports
-/******/ 	return __webpack_require__(__webpack_require__.s = 346);
+/******/ 	return __webpack_require__(__webpack_require__.s = 467);
 /******/ })
 /************************************************************************/
 /******/ ({
 
-/***/ 346:
+/***/ 467:
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
+// ESM COMPAT FLAG
 __webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createQueue", function() { return createQueue; });
-var requestIdleCallback = window.requestIdleCallback ? window.requestIdleCallback : window.requestAnimationFrame;
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, "createQueue", function() { return /* binding */ build_module_createQueue; });
+
+// CONCATENATED MODULE: ./node_modules/@wordpress/priority-queue/build-module/request-idle-callback.js
+/**
+ * @typedef {( timeOrDeadline: IdleDeadline | number ) => void} Callback
+ */
+
+/**
+ * @return {(callback: Callback) => void} RequestIdleCallback
+ */
+function createRequestIdleCallback() {
+  if (typeof window === 'undefined') {
+    return function (callback) {
+      setTimeout(function () {
+        return callback(Date.now());
+      }, 0);
+    };
+  }
+
+  return window.requestIdleCallback || window.requestAnimationFrame;
+}
+/* harmony default export */ var request_idle_callback = (createRequestIdleCallback());
+
+// CONCATENATED MODULE: ./node_modules/@wordpress/priority-queue/build-module/index.js
+/**
+ * Internal dependencies
+ */
+
+/**
+ * Enqueued callback to invoke once idle time permits.
+ *
+ * @typedef {()=>void} WPPriorityQueueCallback
+ */
+
+/**
+ * An object used to associate callbacks in a particular context grouping.
+ *
+ * @typedef {{}} WPPriorityQueueContext
+ */
+
+/**
+ * Function to add callback to priority queue.
+ *
+ * @typedef {(element:WPPriorityQueueContext,item:WPPriorityQueueCallback)=>void} WPPriorityQueueAdd
+ */
+
+/**
+ * Function to flush callbacks from priority queue.
+ *
+ * @typedef {(element:WPPriorityQueueContext)=>boolean} WPPriorityQueueFlush
+ */
+
+/**
+ * Reset the queue.
+ *
+ * @typedef {()=>void} WPPriorityQueueReset
+ */
+
+/**
+ * Priority queue instance.
+ *
+ * @typedef {Object} WPPriorityQueue
+ *
+ * @property {WPPriorityQueueAdd}   add   Add callback to queue for context.
+ * @property {WPPriorityQueueFlush} flush Flush queue for context.
+ * @property {WPPriorityQueueReset} reset Reset queue.
+ */
+
 /**
  * Creates a context-aware queue that only executes
  * the last task of a given context.
@@ -114,28 +183,61 @@
  * queue.add( ctx2, () => console.log( 'This will be printed second' ) );
  *```
  *
- * @return {Object} Queue object with `add` and `flush` methods.
+ * @return {WPPriorityQueue} Queue object with `add`, `flush` and `reset` methods.
  */
 
-var createQueue = function createQueue() {
+var build_module_createQueue = function createQueue() {
+  /** @type {WPPriorityQueueContext[]} */
   var waitingList = [];
+  /** @type {WeakMap<WPPriorityQueueContext,WPPriorityQueueCallback>} */
+
   var elementsMap = new WeakMap();
   var isRunning = false;
+  /* eslint-disable jsdoc/valid-types */
+
+  /**
+   * Callback to process as much queue as time permits.
+   *
+   * @param {IdleDeadline|number} deadline Idle callback deadline object, or
+   *                                       animation frame timestamp.
+   */
+
+  /* eslint-enable */
 
   var runWaitingList = function runWaitingList(deadline) {
+    var hasTimeRemaining = typeof deadline === 'number' ? function () {
+      return false;
+    } : function () {
+      return deadline.timeRemaining() > 0;
+    };
+
     do {
       if (waitingList.length === 0) {
         isRunning = false;
         return;
       }
 
-      var nextElement = waitingList.shift();
-      elementsMap.get(nextElement)();
+      var nextElement =
+      /** @type {WPPriorityQueueContext} */
+      waitingList.shift();
+      var callback =
+      /** @type {WPPriorityQueueCallback} */
+      elementsMap.get(nextElement);
+      callback();
       elementsMap.delete(nextElement);
-    } while (deadline && deadline.timeRemaining && deadline.timeRemaining() > 0);
+    } while (hasTimeRemaining());
 
-    requestIdleCallback(runWaitingList);
+    request_idle_callback(runWaitingList);
   };
+  /**
+   * Add a callback to the queue for a given context.
+   *
+   * @type {WPPriorityQueueAdd}
+   *
+   * @param {WPPriorityQueueContext}  element Context object.
+   * @param {WPPriorityQueueCallback} item    Callback function.
+   */
+
 
   var add = function add(element, item) {
     if (!elementsMap.has(element)) {
@@ -146,24 +248,52 @@
 
     if (!isRunning) {
       isRunning = true;
-      requestIdleCallback(runWaitingList);
+      request_idle_callback(runWaitingList);
     }
   };
+  /**
+   * Flushes queue for a given context, returning true if the flush was
+   * performed, or false if there is no queue for the given context.
+   *
+   * @type {WPPriorityQueueFlush}
+   *
+   * @param {WPPriorityQueueContext} element Context object.
+   *
+   * @return {boolean} Whether flush was performed.
+   */
+
 
   var flush = function flush(element) {
     if (!elementsMap.has(element)) {
       return false;
     }
 
-    elementsMap.delete(element);
     var index = waitingList.indexOf(element);
     waitingList.splice(index, 1);
+    var callback =
+    /** @type {WPPriorityQueueCallback} */
+    elementsMap.get(element);
+    elementsMap.delete(element);
+    callback();
     return true;
   };
+  /**
+   * Reset the queue without running the pending callbacks.
+   *
+   * @type {WPPriorityQueueReset}
+   */
+
+
+  var reset = function reset() {
+    waitingList = [];
+    elementsMap = new WeakMap();
+    isRunning = false;
+  };
 
   return {
     add: add,
-    flush: flush
+    flush: flush,
+    reset: reset
   };
 };