131 lines
4.1 KiB
JavaScript
131 lines
4.1 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
||
|
|
||
|
exports.__esModule = true;
|
||
|
exports.default = void 0;
|
||
|
|
||
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
||
|
|
||
|
var _react = _interopRequireDefault(require("react"));
|
||
|
|
||
|
var _router = require("@reach/router");
|
||
|
|
||
|
var _gatsbyReactRouterScroll = require("gatsby-react-router-scroll");
|
||
|
|
||
|
var _navigation = require("./navigation");
|
||
|
|
||
|
var _apiRunnerBrowser = require("./api-runner-browser");
|
||
|
|
||
|
var _loader = _interopRequireDefault(require("./loader"));
|
||
|
|
||
|
var _queryResultStore = require("./query-result-store");
|
||
|
|
||
|
var _ensureResources = _interopRequireDefault(require("./ensure-resources"));
|
||
|
|
||
|
var _errorOverlayHandler = require("./error-overlay-handler");
|
||
|
|
||
|
if (window.__webpack_hot_middleware_reporter__ !== undefined) {
|
||
|
const overlayErrorID = `webpack`; // Report build errors
|
||
|
|
||
|
window.__webpack_hot_middleware_reporter__.useCustomOverlay({
|
||
|
showProblems(type, obj) {
|
||
|
if (type !== `errors`) {
|
||
|
(0, _errorOverlayHandler.clearError)(overlayErrorID);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
(0, _errorOverlayHandler.reportError)(overlayErrorID, obj[0]);
|
||
|
},
|
||
|
|
||
|
clear() {
|
||
|
(0, _errorOverlayHandler.clearError)(overlayErrorID);
|
||
|
}
|
||
|
|
||
|
});
|
||
|
}
|
||
|
|
||
|
(0, _navigation.init)(); // In gatsby v2 if Router is used in page using matchPaths
|
||
|
// paths need to contain full path.
|
||
|
// For example:
|
||
|
// - page have `/app/*` matchPath
|
||
|
// - inside template user needs to use `/app/xyz` as path
|
||
|
// Resetting `basepath`/`baseuri` keeps current behaviour
|
||
|
// to not introduce breaking change.
|
||
|
// Remove this in v3
|
||
|
|
||
|
const RouteHandler = props => _react.default.createElement(_router.BaseContext.Provider, {
|
||
|
value: {
|
||
|
baseuri: `/`,
|
||
|
basepath: `/`
|
||
|
}
|
||
|
}, _react.default.createElement(_queryResultStore.PageQueryStore, props));
|
||
|
|
||
|
class LocationHandler extends _react.default.Component {
|
||
|
render() {
|
||
|
const {
|
||
|
location
|
||
|
} = this.props;
|
||
|
|
||
|
if (!_loader.default.isPageNotFound(location.pathname)) {
|
||
|
return _react.default.createElement(_ensureResources.default, {
|
||
|
location: location
|
||
|
}, locationAndPageResources => _react.default.createElement(_navigation.RouteUpdates, {
|
||
|
location: location
|
||
|
}, _react.default.createElement(_gatsbyReactRouterScroll.ScrollContext, {
|
||
|
location: location,
|
||
|
shouldUpdateScroll: _navigation.shouldUpdateScroll
|
||
|
}, _react.default.createElement(_router.Router, {
|
||
|
basepath: __BASE_PATH__,
|
||
|
location: location,
|
||
|
id: "gatsby-focus-wrapper"
|
||
|
}, _react.default.createElement(RouteHandler, (0, _extends2.default)({
|
||
|
path: encodeURI(locationAndPageResources.pageResources.page.matchPath || locationAndPageResources.pageResources.page.path)
|
||
|
}, this.props, locationAndPageResources))))));
|
||
|
}
|
||
|
|
||
|
const dev404PageResources = _loader.default.loadPageSync(`/dev-404-page`);
|
||
|
|
||
|
const real404PageResources = _loader.default.loadPageSync(`/404.html`);
|
||
|
|
||
|
let custom404;
|
||
|
|
||
|
if (real404PageResources) {
|
||
|
custom404 = _react.default.createElement(_queryResultStore.PageQueryStore, (0, _extends2.default)({}, this.props, {
|
||
|
pageResources: real404PageResources
|
||
|
}));
|
||
|
}
|
||
|
|
||
|
return _react.default.createElement(_navigation.RouteUpdates, {
|
||
|
location: location
|
||
|
}, _react.default.createElement(_router.Router, {
|
||
|
basepath: __BASE_PATH__,
|
||
|
location: location,
|
||
|
id: "gatsby-focus-wrapper"
|
||
|
}, _react.default.createElement(RouteHandler, {
|
||
|
path: location.pathname,
|
||
|
location: location,
|
||
|
pageResources: dev404PageResources,
|
||
|
custom404: custom404
|
||
|
})));
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
const Root = () => _react.default.createElement(_router.Location, null, locationContext => _react.default.createElement(LocationHandler, locationContext)); // Let site, plugins wrap the site e.g. for Redux.
|
||
|
|
||
|
|
||
|
const WrappedRoot = (0, _apiRunnerBrowser.apiRunner)(`wrapRootElement`, {
|
||
|
element: _react.default.createElement(Root, null)
|
||
|
}, _react.default.createElement(Root, null), ({
|
||
|
result,
|
||
|
plugin
|
||
|
}) => {
|
||
|
return {
|
||
|
element: result
|
||
|
};
|
||
|
}).pop();
|
||
|
|
||
|
var _default = () => _react.default.createElement(_queryResultStore.StaticQueryStore, null, WrappedRoot);
|
||
|
|
||
|
exports.default = _default;
|