Repository URL to install this package:
|
Version:
1.2.8 ▾
|
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @see https://github.com/koba04/react-fiber-resources
* @see https://medium.com/@baphemot/whats-new-in-react-16-3-d2c9b7b6193b
* @description can render or hydrate, used by renderClientView & tests
*/
const react_1 = __importDefault(require("react"));
const react_dom_1 = require("react-dom");
const react_router_dom_1 = require("react-router-dom");
const react_apollo_1 = require("react-apollo");
const ReactHotLoader_1 = require("../bootstrapper/containers/ReactHotLoader");
const apolloClient_1 = require("./apolloClient");
const IS_BROWSER = typeof window === 'object';
const ROOT = typeof window === 'object' ? window : global;
const DOCUMENT = typeof document === 'object'
? document
: require('./MOCK_DOCUMENT').MOCK_DOCUMENT;
// router that works for tests too
const Router = process.env.NODE_ENV === 'testing' ? react_router_dom_1.MemoryRouter : react_router_dom_1.BrowserRouter;
// router state from server
const rehydrateRouterState = ROOT.__ROUTER_STATE__;
// Get the DOM Element that will host our React application.
const container = DOCUMENT.querySelector('#root');
function finalRehydration(app) {
const rehydrated = react_dom_1.hydrate(app, container);
return rehydrated;
}
/**
* Renders the given React Application component.
*/
function renderAppFinal(App) {
/**
* Firstly, define our full application component,
* wrapping the given component app
* with a browser based version of react router.
*
* @see https://github.com/gaearon/react-hot-loader/issues/667
*/
const app = (react_1.default.createElement(react_1.default.StrictMode, null,
react_1.default.createElement(ReactHotLoader_1.ReactHotLoader, { warnings: false, errors: false },
react_1.default.createElement(Router, { rehydrateState: rehydrateRouterState },
react_1.default.createElement(react_apollo_1.ApolloProvider, { client: apolloClient_1.client },
react_1.default.createElement(App, null))))));
return finalRehydration(app);
}
/**
* @description the actual renderApp function, decision tree for sync vs async
*/
function renderApp(App) {
if (isLoadingInIframe()) {
top.location = self.location;
return undefined;
}
else {
return renderAppFinal(App);
}
}
exports.renderApp = renderApp;
/**
* @todo @anto we need to add conditions to prevent reloading for CSR admins
*/
function isLoadingInIframe() {
return IS_BROWSER && window.parent.frames.length > 0;
}
//# sourceMappingURL=renderApp.js.map