17 lines
522 B
JavaScript
17 lines
522 B
JavaScript
|
"use strict";
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.beforeNextFrameOnce = void 0;
|
||
|
let onceCbs = [];
|
||
|
const paramsMap = new WeakMap();
|
||
|
function flushOnceCallbacks() {
|
||
|
onceCbs.forEach((cb) => cb(...paramsMap.get(cb)));
|
||
|
onceCbs = [];
|
||
|
}
|
||
|
function beforeNextFrameOnce(cb, ...params) {
|
||
|
paramsMap.set(cb, params);
|
||
|
if (onceCbs.includes(cb))
|
||
|
return;
|
||
|
onceCbs.push(cb) === 1 && requestAnimationFrame(flushOnceCallbacks);
|
||
|
}
|
||
|
exports.beforeNextFrameOnce = beforeNextFrameOnce;
|