@tko/utils.jsx
Version:
TKO JSX Rendering
26 lines (25 loc) • 646 B
JavaScript
// @tko/utils.jsx 🥊 4.0.0-beta1.3 ESM
import {
cleanNode
} from "@tko/utils";
const DELAY_MS = 25;
const MAX_CLEAN_AT_ONCE = 1e3;
const cleanNodeQueue = [];
let cleanNodeTimeoutID = null;
export function queueCleanNode(node) {
cleanNodeQueue.push(node);
triggerCleanTimeout();
}
function triggerCleanTimeout() {
if (!cleanNodeTimeoutID && cleanNodeQueue.length) {
cleanNodeTimeoutID = setTimeout(flushCleanQueue, DELAY_MS);
}
}
function flushCleanQueue() {
cleanNodeTimeoutID = null;
const nodes = cleanNodeQueue.splice(0, MAX_CLEAN_AT_ONCE);
for (const node of nodes) {
cleanNode(node);
}
triggerCleanTimeout();
}