Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/framework / dist / client / renderApp.js
Size: Mime:
"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