ilink-world/docs/.docz/.cache/commonjs/query-result-store.js

124 lines
3.8 KiB
JavaScript
Raw Normal View History

2020-03-12 15:14:51 +00:00
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.StaticQueryStore = exports.PageQueryStore = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _gatsby = require("gatsby");
var _socketIo = require("./socketIo");
var _pageRenderer = _interopRequireDefault(require("./page-renderer"));
var _normalizePagePath = _interopRequireDefault(require("./normalize-page-path"));
if (process.env.NODE_ENV === `production`) {
throw new Error(`It appears like Gatsby is misconfigured. JSONStore is Gatsby internal ` + `development-only component and should never be used in production.\n\n` + `Unless your site has a complex or custom webpack/Gatsby ` + `configuration this is likely a bug in Gatsby. ` + `Please report this at https://github.com/gatsbyjs/gatsby/issues ` + `with steps to reproduce this error.`);
}
const getPathFromProps = props => props.pageResources && props.pageResources.page ? (0, _normalizePagePath.default)(props.pageResources.page.path) : undefined;
class PageQueryStore extends _react.default.Component {
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "handleMittEvent", () => {
this.setState({
pageQueryData: (0, _socketIo.getPageQueryData)()
});
});
this.state = {
pageQueryData: (0, _socketIo.getPageQueryData)(),
path: null
};
}
componentDidMount() {
(0, _socketIo.registerPath)(getPathFromProps(this.props));
___emitter.on(`*`, this.handleMittEvent);
}
componentWillUnmount() {
(0, _socketIo.unregisterPath)(this.state.path);
___emitter.off(`*`, this.handleMittEvent);
}
static getDerivedStateFromProps(props, state) {
const newPath = getPathFromProps(props);
if (newPath !== state.path) {
(0, _socketIo.unregisterPath)(state.path);
(0, _socketIo.registerPath)(newPath);
return {
path: newPath
};
}
return null;
}
shouldComponentUpdate(nextProps, nextState) {
// We want to update this component when:
// - location changed
// - page data for path changed
return this.props.location !== nextProps.location || this.state.path !== nextState.path || this.state.pageQueryData[(0, _normalizePagePath.default)(nextState.path)] !== nextState.pageQueryData[(0, _normalizePagePath.default)(nextState.path)];
}
render() {
const data = this.state.pageQueryData[getPathFromProps(this.props)]; // eslint-disable-next-line
if (!data) {
return _react.default.createElement("div", null);
}
return _react.default.createElement(_pageRenderer.default, (0, _extends2.default)({}, this.props, data));
}
}
exports.PageQueryStore = PageQueryStore;
class StaticQueryStore extends _react.default.Component {
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "handleMittEvent", () => {
this.setState({
staticQueryData: (0, _socketIo.getStaticQueryData)()
});
});
this.state = {
staticQueryData: (0, _socketIo.getStaticQueryData)()
};
}
componentDidMount() {
___emitter.on(`*`, this.handleMittEvent);
}
componentWillUnmount() {
___emitter.off(`*`, this.handleMittEvent);
}
shouldComponentUpdate(nextProps, nextState) {
// We want to update this component when:
// - static query results changed
return this.state.staticQueryData !== nextState.staticQueryData;
}
render() {
return _react.default.createElement(_gatsby.StaticQueryContext.Provider, {
value: this.state.staticQueryData
}, this.props.children);
}
}
exports.StaticQueryStore = StaticQueryStore;