69 lines
2.2 KiB
JavaScript
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;
|
|
} |