All files / react-native-web/src/modules/requestIdleCallback index.js

50% Statements 5/10
66.67% Branches 4/6
0% Functions 0/4
50% Lines 5/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39                      1x                       1x       1x   1x     1x            
/**
 * Copyright (c) Nicolas Gallagher.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @flow
 */
 
import { canUseDOM } from 'fbjs/lib/ExecutionEnvironment';
 
const _requestIdleCallback = function (cb: Function, options?: Object) {
  return setTimeout(() => {
    const start = Date.now();
    cb({
      didTimeout: false,
      timeRemaining() {
        return Math.max(0, 50 - (Date.now() - start));
      }
    });
  }, 1);
};
 
const _cancelIdleCallback = function (id) {
  clearTimeout(id);
};
 
const isSupported = canUseDOM && typeof window.requestIdleCallback !== 'undefined';
 
const requestIdleCallback: (cb: any, options?: any) => TimeoutID = isSupported
  ? window.requestIdleCallback
  : _requestIdleCallback;
const cancelIdleCallback: (TimeoutID) => void = isSupported
  ? window.cancelIdleCallback
  : _cancelIdleCallback;
 
export default requestIdleCallback;
export { cancelIdleCallback };