UNPKG

1.2 kBJavaScriptView Raw
1import React from 'react';
2import { render } from 'react-dom';
3
4import store from './store';
5import app from '@magento/peregrine/lib/store/actions/app';
6import Adapter from '@magento/venia-ui/lib/components/Adapter';
7import { registerSW } from './registerSW';
8import './index.css';
9
10// server rendering differs from browser rendering
11const isServer = !globalThis.document;
12
13// TODO: on the server, the http request should provide the origin
14const origin = isServer
15 ? process.env.MAGENTO_BACKEND_URL
16 : globalThis.location.origin;
17
18// on the server, components add styles to this set and we render them in bulk
19const styles = new Set();
20
21const tree = <Adapter origin={origin} store={store} styles={styles} />;
22
23if (isServer) {
24 // TODO: ensure this actually renders correctly
25 import('react-dom/server').then(({ default: ReactDOMServer }) => {
26 console.log(ReactDOMServer.renderToString(tree));
27 });
28} else {
29 render(tree, document.getElementById('root'));
30 registerSW();
31
32 globalThis.addEventListener('online', () => {
33 store.dispatch(app.setOnline());
34 });
35 globalThis.addEventListener('offline', () => {
36 store.dispatch(app.setOffline());
37 });
38}
39
\No newline at end of file