Spaces:
Sleeping
Sleeping
| // https://d3js.org/d3-timer/ v3.0.1 Copyright 2010-2021 Mike Bostock | |
| (function (global, factory) { | |
| typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | |
| typeof define === 'function' && define.amd ? define(['exports'], factory) : | |
| (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.d3 = global.d3 || {})); | |
| }(this, (function (exports) { 'use strict'; | |
| var frame = 0, // is an animation frame pending? | |
| timeout$1 = 0, // is a timeout pending? | |
| interval$1 = 0, // are any timers active? | |
| pokeDelay = 1000, // how frequently we check for clock skew | |
| taskHead, | |
| taskTail, | |
| clockLast = 0, | |
| clockNow = 0, | |
| clockSkew = 0, | |
| clock = typeof performance === "object" && performance.now ? performance : Date, | |
| setFrame = typeof window === "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); }; | |
| function now() { | |
| return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew); | |
| } | |
| function clearNow() { | |
| clockNow = 0; | |
| } | |
| function Timer() { | |
| this._call = | |
| this._time = | |
| this._next = null; | |
| } | |
| Timer.prototype = timer.prototype = { | |
| constructor: Timer, | |
| restart: function(callback, delay, time) { | |
| if (typeof callback !== "function") throw new TypeError("callback is not a function"); | |
| time = (time == null ? now() : +time) + (delay == null ? 0 : +delay); | |
| if (!this._next && taskTail !== this) { | |
| if (taskTail) taskTail._next = this; | |
| else taskHead = this; | |
| taskTail = this; | |
| } | |
| this._call = callback; | |
| this._time = time; | |
| sleep(); | |
| }, | |
| stop: function() { | |
| if (this._call) { | |
| this._call = null; | |
| this._time = Infinity; | |
| sleep(); | |
| } | |
| } | |
| }; | |
| function timer(callback, delay, time) { | |
| var t = new Timer; | |
| t.restart(callback, delay, time); | |
| return t; | |
| } | |
| function timerFlush() { | |
| now(); // Get the current time, if not already set. | |
| ++frame; // Pretend we’ve set an alarm, if we haven’t already. | |
| var t = taskHead, e; | |
| while (t) { | |
| if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e); | |
| t = t._next; | |
| } | |
| --frame; | |
| } | |
| function wake() { | |
| clockNow = (clockLast = clock.now()) + clockSkew; | |
| frame = timeout$1 = 0; | |
| try { | |
| timerFlush(); | |
| } finally { | |
| frame = 0; | |
| nap(); | |
| clockNow = 0; | |
| } | |
| } | |
| function poke() { | |
| var now = clock.now(), delay = now - clockLast; | |
| if (delay > pokeDelay) clockSkew -= delay, clockLast = now; | |
| } | |
| function nap() { | |
| var t0, t1 = taskHead, t2, time = Infinity; | |
| while (t1) { | |
| if (t1._call) { | |
| if (time > t1._time) time = t1._time; | |
| t0 = t1, t1 = t1._next; | |
| } else { | |
| t2 = t1._next, t1._next = null; | |
| t1 = t0 ? t0._next = t2 : taskHead = t2; | |
| } | |
| } | |
| taskTail = t0; | |
| sleep(time); | |
| } | |
| function sleep(time) { | |
| if (frame) return; // Soonest alarm already set, or will be. | |
| if (timeout$1) timeout$1 = clearTimeout(timeout$1); | |
| var delay = time - clockNow; // Strictly less than if we recomputed clockNow. | |
| if (delay > 24) { | |
| if (time < Infinity) timeout$1 = setTimeout(wake, time - clock.now() - clockSkew); | |
| if (interval$1) interval$1 = clearInterval(interval$1); | |
| } else { | |
| if (!interval$1) clockLast = clock.now(), interval$1 = setInterval(poke, pokeDelay); | |
| frame = 1, setFrame(wake); | |
| } | |
| } | |
| function timeout(callback, delay, time) { | |
| var t = new Timer; | |
| delay = delay == null ? 0 : +delay; | |
| t.restart(elapsed => { | |
| t.stop(); | |
| callback(elapsed + delay); | |
| }, delay, time); | |
| return t; | |
| } | |
| function interval(callback, delay, time) { | |
| var t = new Timer, total = delay; | |
| if (delay == null) return t.restart(callback, delay, time), t; | |
| t._restart = t.restart; | |
| t.restart = function(callback, delay, time) { | |
| delay = +delay, time = time == null ? now() : +time; | |
| t._restart(function tick(elapsed) { | |
| elapsed += total; | |
| t._restart(tick, total += delay, time); | |
| callback(elapsed); | |
| }, delay, time); | |
| }; | |
| t.restart(callback, delay, time); | |
| return t; | |
| } | |
| exports.interval = interval; | |
| exports.now = now; | |
| exports.timeout = timeout; | |
| exports.timer = timer; | |
| exports.timerFlush = timerFlush; | |
| Object.defineProperty(exports, '__esModule', { value: true }); | |
| }))); | |