UNPKG

cl-react-graph

Version:
121 lines (91 loc) 4.43 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _apiRunnerBrowser = require("./api-runner-browser"); var _react = _interopRequireWildcard(require("react")); var _reactDom = _interopRequireDefault(require("react-dom")); var _router = require("@reach/router"); var _utils = require("@reach/router/lib/utils"); var _gatsbyReactRouterScroll = require("gatsby-react-router-scroll"); var _domready = _interopRequireDefault(require("domready")); var _navigation = require("./navigation"); var _emitter = _interopRequireDefault(require("./emitter")); var _pageRenderer = _interopRequireDefault(require("./page-renderer")); var _asyncRequires = _interopRequireDefault(require("./async-requires")); var _loader = _interopRequireWildcard(require("./loader")); var _ensureResources = _interopRequireDefault(require("./ensure-resources")); window.asyncRequires = _asyncRequires.default; window.___emitter = _emitter.default; window.___loader = _loader.default; _loader.default.addPagesArray([window.page]); _loader.default.addDataPaths({ [window.page.jsonName]: window.dataPath }); _loader.default.addProdRequires(_asyncRequires.default); (0, _loader.setApiRunnerForLoader)(_apiRunnerBrowser.apiRunner); (0, _navigation.init)(); // Let the site/plugins run code very early. (0, _apiRunnerBrowser.apiRunnerAsync)(`onClientEntry`).then(() => { // Let plugins register a service worker. The plugin just needs // to return true. if ((0, _apiRunnerBrowser.apiRunner)(`registerServiceWorker`).length > 0) { require(`./register-service-worker`); } class RouteHandler extends _react.default.Component { render() { let location = this.props.location; return _react.default.createElement(_ensureResources.default, { location: location }, ({ pageResources, location }) => _react.default.createElement(_navigation.RouteUpdates, { location: location }, _react.default.createElement(_gatsbyReactRouterScroll.ScrollContext, { location: location, shouldUpdateScroll: _navigation.shouldUpdateScroll }, _react.default.createElement(_pageRenderer.default, (0, _extends2.default)({}, this.props, { location: location, pageResources: pageResources }, pageResources.json))))); } } const _window = window, page = _window.page, browserLoc = _window.location; if ( // Make sure the window.page object is defined page && // The canonical path doesn't match the actual path (i.e. the address bar) __PATH_PREFIX__ + page.path !== browserLoc.pathname && ( // ...and if matchPage is specified, it also doesn't match the actual path !page.matchPath || !(0, _utils.match)(__PATH_PREFIX__ + page.matchPath, browserLoc.pathname)) && // Ignore 404 pages, since we want to keep the same URL page.path !== `/404.html` && !page.path.match(/^\/404\/?$/) && // Also ignore the offline shell (since when using the offline plugin, all // pages have this canonical path) !page.path.match(/^\/offline-plugin-app-shell-fallback\/?$/)) { (0, _router.navigate)(__PATH_PREFIX__ + page.path + browserLoc.search + browserLoc.hash, { replace: true }); } _loader.default.getResourcesForPathname(browserLoc.pathname).then(() => { const Root = () => (0, _react.createElement)(_router.Router, { basepath: __PATH_PREFIX__ }, (0, _react.createElement)(RouteHandler, { path: `/*` })); const WrappedRoot = (0, _apiRunnerBrowser.apiRunner)(`wrapRootElement`, { element: _react.default.createElement(Root, null) }, _react.default.createElement(Root, null), ({ result }) => { return { element: result }; }).pop(); let NewRoot = () => WrappedRoot; const renderer = (0, _apiRunnerBrowser.apiRunner)(`replaceHydrateFunction`, undefined, _reactDom.default.hydrate)[0]; (0, _domready.default)(() => { renderer(_react.default.createElement(NewRoot, null), typeof window !== `undefined` ? document.getElementById(`___gatsby`) : void 0, () => { (0, _loader.postInitialRenderWork)(); (0, _apiRunnerBrowser.apiRunner)(`onInitialClientRender`); }); }); }); });