Files
30-seconds-of-code/node_modules/gatsby-plugin-transition-link/components/delayTransitionRender.js
2019-08-20 15:52:05 +02:00

69 lines
2.2 KiB
JavaScript

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
exports.__esModule = true;
exports.default = delayTransitionRender;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _react = _interopRequireWildcard(require("react"));
var _requestanimationframeTimer = require("requestanimationframe-timer");
var _jsxFileName = "/Users/tylerbarnes/Documents/GitHub/transitionlink-workspace/gatsby-plugin-transition-link/src/components/delayTransitionRender.js";
function delayTransitionRender(WrappedComponent) {
var DelayedTransitionWrapper =
/*#__PURE__*/
function (_Component) {
(0, _inheritsLoose2.default)(DelayedTransitionWrapper, _Component);
function DelayedTransitionWrapper(props) {
var _this;
_this = _Component.call(this, props) || this;
_this.state = {
// if there is a delay, set shouldRender to false
// then in componentdid mount shouldRender becomes true
// after the delay.
shouldRender: !!!_this.props.delay
};
return _this;
}
var _proto = DelayedTransitionWrapper.prototype;
_proto.componentDidMount = function componentDidMount() {
var _this2 = this;
this.renderTimeout = (0, _requestanimationframeTimer.setTimeout)(function () {
return _this2.setState({
shouldRender: true
});
}, this.props.delay);
};
_proto.componentWillUnmount = function componentWillUnmount() {
(0, _requestanimationframeTimer.clearTimeout)(this.renderTimeout);
};
_proto.render = function render() {
return this.state.shouldRender || typeof window === "undefined" ? _react.default.createElement(WrappedComponent, (0, _extends2.default)({}, this.props, {
__source: {
fileName: _jsxFileName,
lineNumber: 30
},
__self: this
})) : null;
};
return DelayedTransitionWrapper;
}(_react.Component);
return DelayedTransitionWrapper;
}