From 2cfd09ecdb75823c1b40e6a060a1da0e8da366f6 Mon Sep 17 00:00:00 2001 From: Nicolas Gallagher Date: Mon, 27 Feb 2017 14:50:29 -0800 Subject: [PATCH] [fix] server-side rendering e1fc253 added deferred image loading but didn't guard the 'requestIdleFallback' shim for use in Node.js Fix #376 --- src/modules/requestIdleCallback/index.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/modules/requestIdleCallback/index.js b/src/modules/requestIdleCallback/index.js index b43c7ad4..03f0c64b 100644 --- a/src/modules/requestIdleCallback/index.js +++ b/src/modules/requestIdleCallback/index.js @@ -1,3 +1,6 @@ +/* global window */ +import { canUseDOM } from 'fbjs/lib/ExecutionEnvironment'; + const _requestIdleCallback = function (cb) { return setTimeout(() => { const start = Date.now(); @@ -14,8 +17,10 @@ const _cancelIdleCallback = function (id) { clearTimeout(id); }; -const requestIdleCallback = window.requestIdleCallback || _requestIdleCallback; -const cancelIdleCallback = window.cancelIdleCallback || _cancelIdleCallback; +const isSupported = canUseDOM && typeof window.requestIdleCallback !== 'undefined'; + +const requestIdleCallback = isSupported ? window.requestIdleCallback : _requestIdleCallback; +const cancelIdleCallback = isSupported ? window.cancelIdleCallback : _cancelIdleCallback; export default requestIdleCallback; export { cancelIdleCallback };