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