@mui/x-data-grid
Version:
The Community plan edition of the MUI X Data Grid components.
33 lines (32 loc) • 941 B
JavaScript
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useRunOncePerLoop = useRunOncePerLoop;
var React = _interopRequireWildcard(require("react"));
function useRunOncePerLoop(callback, nextFrame = false) {
const scheduledRef = React.useRef(false);
const schedule = React.useCallback((...args) => {
if (scheduledRef.current) {
return;
}
scheduledRef.current = true;
const runner = () => {
scheduledRef.current = false;
callback(...args);
};
if (nextFrame) {
if (typeof requestAnimationFrame === 'function') {
requestAnimationFrame(runner);
}
return;
}
if (typeof queueMicrotask === 'function') {
queueMicrotask(runner);
} else {
Promise.resolve().then(runner);
}
}, [callback, nextFrame]);
return schedule;
}
;