wp/wp-includes/js/dist/priority-queue.js
changeset 18 be944660c56a
parent 16 a86126ab1dd4
child 19 3d72ae0968f4
equal deleted inserted replaced
17:34716fd837a4 18:be944660c56a
    80 /******/ 	// __webpack_public_path__
    80 /******/ 	// __webpack_public_path__
    81 /******/ 	__webpack_require__.p = "";
    81 /******/ 	__webpack_require__.p = "";
    82 /******/
    82 /******/
    83 /******/
    83 /******/
    84 /******/ 	// Load entry module and return exports
    84 /******/ 	// Load entry module and return exports
    85 /******/ 	return __webpack_require__(__webpack_require__.s = 467);
    85 /******/ 	return __webpack_require__(__webpack_require__.s = "XPKI");
    86 /******/ })
    86 /******/ })
    87 /************************************************************************/
    87 /************************************************************************/
    88 /******/ ({
    88 /******/ ({
    89 
    89 
    90 /***/ 467:
    90 /***/ "XPKI":
    91 /***/ (function(module, __webpack_exports__, __webpack_require__) {
    91 /***/ (function(module, __webpack_exports__, __webpack_require__) {
    92 
    92 
    93 "use strict";
    93 "use strict";
    94 // ESM COMPAT FLAG
    94 // ESM COMPAT FLAG
    95 __webpack_require__.r(__webpack_exports__);
    95 __webpack_require__.r(__webpack_exports__);
    96 
    96 
    97 // EXPORTS
    97 // EXPORTS
    98 __webpack_require__.d(__webpack_exports__, "createQueue", function() { return /* binding */ build_module_createQueue; });
    98 __webpack_require__.d(__webpack_exports__, "createQueue", function() { return /* binding */ createQueue; });
    99 
    99 
   100 // CONCATENATED MODULE: ./node_modules/@wordpress/priority-queue/build-module/request-idle-callback.js
   100 // CONCATENATED MODULE: ./node_modules/@wordpress/priority-queue/build-module/request-idle-callback.js
   101 /**
   101 /**
   102  * @typedef {( timeOrDeadline: IdleDeadline | number ) => void} Callback
   102  * @typedef {( timeOrDeadline: IdleDeadline | number ) => void} Callback
   103  */
   103  */
   105 /**
   105 /**
   106  * @return {(callback: Callback) => void} RequestIdleCallback
   106  * @return {(callback: Callback) => void} RequestIdleCallback
   107  */
   107  */
   108 function createRequestIdleCallback() {
   108 function createRequestIdleCallback() {
   109   if (typeof window === 'undefined') {
   109   if (typeof window === 'undefined') {
   110     return function (callback) {
   110     return callback => {
   111       setTimeout(function () {
   111       setTimeout(() => callback(Date.now()), 0);
   112         return callback(Date.now());
       
   113       }, 0);
       
   114     };
   112     };
   115   }
   113   }
   116 
   114 
   117   return window.requestIdleCallback || window.requestAnimationFrame;
   115   return window.requestIdleCallback || window.requestAnimationFrame;
   118 }
   116 }
   184  *```
   182  *```
   185  *
   183  *
   186  * @return {WPPriorityQueue} Queue object with `add`, `flush` and `reset` methods.
   184  * @return {WPPriorityQueue} Queue object with `add`, `flush` and `reset` methods.
   187  */
   185  */
   188 
   186 
   189 var build_module_createQueue = function createQueue() {
   187 const createQueue = () => {
   190   /** @type {WPPriorityQueueContext[]} */
   188   /** @type {WPPriorityQueueContext[]} */
   191   var waitingList = [];
   189   let waitingList = [];
   192   /** @type {WeakMap<WPPriorityQueueContext,WPPriorityQueueCallback>} */
   190   /** @type {WeakMap<WPPriorityQueueContext,WPPriorityQueueCallback>} */
   193 
   191 
   194   var elementsMap = new WeakMap();
   192   let elementsMap = new WeakMap();
   195   var isRunning = false;
   193   let isRunning = false;
   196   /* eslint-disable jsdoc/valid-types */
       
   197 
       
   198   /**
   194   /**
   199    * Callback to process as much queue as time permits.
   195    * Callback to process as much queue as time permits.
   200    *
   196    *
   201    * @param {IdleDeadline|number} deadline Idle callback deadline object, or
   197    * @param {IdleDeadline|number} deadline Idle callback deadline object, or
   202    *                                       animation frame timestamp.
   198    *                                       animation frame timestamp.
   203    */
   199    */
   204 
   200 
   205   /* eslint-enable */
   201   const runWaitingList = deadline => {
   206 
   202     const hasTimeRemaining = typeof deadline === 'number' ? () => false : () => deadline.timeRemaining() > 0;
   207   var runWaitingList = function runWaitingList(deadline) {
       
   208     var hasTimeRemaining = typeof deadline === 'number' ? function () {
       
   209       return false;
       
   210     } : function () {
       
   211       return deadline.timeRemaining() > 0;
       
   212     };
       
   213 
   203 
   214     do {
   204     do {
   215       if (waitingList.length === 0) {
   205       if (waitingList.length === 0) {
   216         isRunning = false;
   206         isRunning = false;
   217         return;
   207         return;
   218       }
   208       }
   219 
   209 
   220       var nextElement =
   210       const nextElement =
   221       /** @type {WPPriorityQueueContext} */
   211       /** @type {WPPriorityQueueContext} */
   222       waitingList.shift();
   212       waitingList.shift();
   223       var callback =
   213       const callback =
   224       /** @type {WPPriorityQueueCallback} */
   214       /** @type {WPPriorityQueueCallback} */
   225       elementsMap.get(nextElement);
   215       elementsMap.get(nextElement); // If errors with undefined callbacks are encountered double check that all of your useSelect calls
       
   216       // have all dependecies set correctly in second parameter. Missing dependencies can cause unexpected
       
   217       // loops and race conditions in the queue.
       
   218 
   226       callback();
   219       callback();
   227       elementsMap.delete(nextElement);
   220       elementsMap.delete(nextElement);
   228     } while (hasTimeRemaining());
   221     } while (hasTimeRemaining());
   229 
   222 
   230     request_idle_callback(runWaitingList);
   223     request_idle_callback(runWaitingList);
   237    * @param {WPPriorityQueueContext}  element Context object.
   230    * @param {WPPriorityQueueContext}  element Context object.
   238    * @param {WPPriorityQueueCallback} item    Callback function.
   231    * @param {WPPriorityQueueCallback} item    Callback function.
   239    */
   232    */
   240 
   233 
   241 
   234 
   242   var add = function add(element, item) {
   235   const add = (element, item) => {
   243     if (!elementsMap.has(element)) {
   236     if (!elementsMap.has(element)) {
   244       waitingList.push(element);
   237       waitingList.push(element);
   245     }
   238     }
   246 
   239 
   247     elementsMap.set(element, item);
   240     elementsMap.set(element, item);
   261    *
   254    *
   262    * @return {boolean} Whether flush was performed.
   255    * @return {boolean} Whether flush was performed.
   263    */
   256    */
   264 
   257 
   265 
   258 
   266   var flush = function flush(element) {
   259   const flush = element => {
   267     if (!elementsMap.has(element)) {
   260     if (!elementsMap.has(element)) {
   268       return false;
   261       return false;
   269     }
   262     }
   270 
   263 
   271     var index = waitingList.indexOf(element);
   264     const index = waitingList.indexOf(element);
   272     waitingList.splice(index, 1);
   265     waitingList.splice(index, 1);
   273     var callback =
   266     const callback =
   274     /** @type {WPPriorityQueueCallback} */
   267     /** @type {WPPriorityQueueCallback} */
   275     elementsMap.get(element);
   268     elementsMap.get(element);
   276     elementsMap.delete(element);
   269     elementsMap.delete(element);
   277     callback();
   270     callback();
   278     return true;
   271     return true;
   282    *
   275    *
   283    * @type {WPPriorityQueueReset}
   276    * @type {WPPriorityQueueReset}
   284    */
   277    */
   285 
   278 
   286 
   279 
   287   var reset = function reset() {
   280   const reset = () => {
   288     waitingList = [];
   281     waitingList = [];
   289     elementsMap = new WeakMap();
   282     elementsMap = new WeakMap();
   290     isRunning = false;
   283     isRunning = false;
   291   };
   284   };
   292 
   285 
   293   return {
   286   return {
   294     add: add,
   287     add,
   295     flush: flush,
   288     flush,
   296     reset: reset
   289     reset
   297   };
   290   };
   298 };
   291 };
   299 
   292 
   300 
   293 
   301 /***/ })
   294 /***/ })