123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- // 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 });
- })));
|