From efb9908a794c60bbc4d4f3c76a429a38e47c1485 Mon Sep 17 00:00:00 2001 From: Gihan S Date: Wed, 3 Oct 2018 12:55:36 +0530 Subject: [PATCH] Updated code to be universal. So it can be executed in node environment. --- src/components/PlaceholderWithoutTracking.jsx | 2 +- src/hoc/trackWindowScroll.js | 26 ++++++++++++++++--- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/components/PlaceholderWithoutTracking.jsx b/src/components/PlaceholderWithoutTracking.jsx index 2d2aa4e..3502d49 100644 --- a/src/components/PlaceholderWithoutTracking.jsx +++ b/src/components/PlaceholderWithoutTracking.jsx @@ -32,7 +32,7 @@ class PlaceholderWithoutTracking extends React.Component { } isPlaceholderInViewport() { - if (!this.placeholder) { + if (typeof window === 'undefined' || !this.placeholder) { return false; } diff --git a/src/hoc/trackWindowScroll.js b/src/hoc/trackWindowScroll.js index afa12c6..b4c20dc 100644 --- a/src/hoc/trackWindowScroll.js +++ b/src/hoc/trackWindowScroll.js @@ -18,18 +18,30 @@ const trackWindowScroll = (BaseComponent) => { this.state = { scrollPosition: { - x: window.scrollX || window.pageXOffset, - y: window.scrollY || window.pageYOffset, + x: (typeof window === 'undefined' ? + 0 : + (window.scrollX || window.pageXOffset) + ), + y: (typeof window === 'undefined' ? + 0 : + (window.scrollY || window.pageYOffset) + ), }, }; } componentDidMount() { + if (typeof window == 'undefined') { + return; + } window.addEventListener('scroll', this.delayedScroll); window.addEventListener('resize', this.delayedScroll); } componentWillUnmount() { + if (typeof window === 'undefined') { + return; + } window.removeEventListener('scroll', this.delayedScroll); window.removeEventListener('resize', this.delayedScroll); } @@ -37,8 +49,14 @@ const trackWindowScroll = (BaseComponent) => { onChangeScroll() { this.setState({ scrollPosition: { - x: window.scrollX || window.pageXOffset, - y: window.scrollY || window.pageYOffset, + x: (typeof window == 'undefined' ? + 0 : + (window.scrollX || window.pageXOffset) + ), + y: (typeof window === 'undefined' ? + 0 : + (window.scrollY || window.pageYOffset) + ), }, }); }