mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-11-03 23:29:03 +00:00 
			
		
		
		
	
		
			
	
	
		
			61 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			61 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								/** PURE_IMPORTS_START .._util_Immediate,._AsyncAction PURE_IMPORTS_END */
							 | 
						||
| 
								 | 
							
								var __extends = (this && this.__extends) || function (d, b) {
							 | 
						||
| 
								 | 
							
								    for (var p in b)
							 | 
						||
| 
								 | 
							
								        if (b.hasOwnProperty(p))
							 | 
						||
| 
								 | 
							
								            d[p] = b[p];
							 | 
						||
| 
								 | 
							
								    function __() { this.constructor = d; }
							 | 
						||
| 
								 | 
							
								    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								import { Immediate } from '../util/Immediate';
							 | 
						||
| 
								 | 
							
								import { AsyncAction } from './AsyncAction';
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * We need this JSDoc comment for affecting ESDoc.
							 | 
						||
| 
								 | 
							
								 * @ignore
							 | 
						||
| 
								 | 
							
								 * @extends {Ignored}
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								export var AsapAction = /*@__PURE__*/ (/*@__PURE__*/ function (_super) {
							 | 
						||
| 
								 | 
							
								    __extends(AsapAction, _super);
							 | 
						||
| 
								 | 
							
								    function AsapAction(scheduler, work) {
							 | 
						||
| 
								 | 
							
								        _super.call(this, scheduler, work);
							 | 
						||
| 
								 | 
							
								        this.scheduler = scheduler;
							 | 
						||
| 
								 | 
							
								        this.work = work;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {
							 | 
						||
| 
								 | 
							
								        if (delay === void 0) {
							 | 
						||
| 
								 | 
							
								            delay = 0;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        // If delay is greater than 0, request as an async action.
							 | 
						||
| 
								 | 
							
								        if (delay !== null && delay > 0) {
							 | 
						||
| 
								 | 
							
								            return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        // Push the action to the end of the scheduler queue.
							 | 
						||
| 
								 | 
							
								        scheduler.actions.push(this);
							 | 
						||
| 
								 | 
							
								        // If a microtask has already been scheduled, don't schedule another
							 | 
						||
| 
								 | 
							
								        // one. If a microtask hasn't been scheduled yet, schedule one now. Return
							 | 
						||
| 
								 | 
							
								        // the current scheduled microtask id.
							 | 
						||
| 
								 | 
							
								        return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(scheduler.flush.bind(scheduler, null)));
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {
							 | 
						||
| 
								 | 
							
								        if (delay === void 0) {
							 | 
						||
| 
								 | 
							
								            delay = 0;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        // If delay exists and is greater than 0, or if the delay is null (the
							 | 
						||
| 
								 | 
							
								        // action wasn't rescheduled) but was originally scheduled as an async
							 | 
						||
| 
								 | 
							
								        // action, then recycle as an async action.
							 | 
						||
| 
								 | 
							
								        if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {
							 | 
						||
| 
								 | 
							
								            return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        // If the scheduler queue is empty, cancel the requested microtask and
							 | 
						||
| 
								 | 
							
								        // set the scheduled flag to undefined so the next AsapAction will schedule
							 | 
						||
| 
								 | 
							
								        // its own.
							 | 
						||
| 
								 | 
							
								        if (scheduler.actions.length === 0) {
							 | 
						||
| 
								 | 
							
								            Immediate.clearImmediate(id);
							 | 
						||
| 
								 | 
							
								            scheduler.scheduled = undefined;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        // Return undefined so the action knows to request a new async id if it's rescheduled.
							 | 
						||
| 
								 | 
							
								        return undefined;
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    return AsapAction;
							 | 
						||
| 
								 | 
							
								}(AsyncAction));
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=AsapAction.js.map
							 |