JSFiddle - React, Tailwind, and code Playground
by Aeoril
JavaScript
window.cancelAnimationFrame = window.webkitCancelAnimationFrame = null;
var animationFrame = (function (global) {
var now = performance.now
? performance.now.bind(performance)
: Date.now
? Date.now.bind(Date)
: function(){ return +(new Date()); };
var pendingCallbacks = [];
var pendingHandles = {};
var frameTimer = null;
var lastFrameTime = 0;
function reset_data () {
pendingCallbacks = [];
pendingHandles = {};
frameTimer = null;
}
function object_keys (obj) {
var keys = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
keys.push(key);
}
}
return keys;
}
function generate_handle (currentHandles) {
var handles = object_keys(currentHandles);
var newHandle;
do {
newHandle = Math.floor(Math.random() * 4294967296 + 1);
} while (handles.indexOf(newHandle) !== -1);
return newHandle;
}
function process_frame () {
var currentCallbacks = pendingCallbacks;
reset_data();
lastFrameTime = now();
for (var i = 0; i < currentCallbacks.length; i++) {
currentCallbacks[i](lastFrameTime);
}
}
function rAF_shim (fn) {
if (typeof fn === 'function') {
if (!frameTimer) {
var delay = Math.max(0, (lastFrameTime + 16) - now());
frameTimer = setTimeout(process_frame, delay);
}
var handle = generate_handle(pendingHandles);
pendingHandles[handle] = fn;
pendingCallbacks.push(fn);
return handle;
}
throw new TypeError("Failed to execute 'requestAnimationFrame' on 'Window': The callback provided as parameter 1 is not a function.");
}
function cAF_shim (handle) {
var fn = pendingHandles[handle];
var index =...