-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathindex.js
68 lines (58 loc) · 1.84 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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import "react-app-polyfill/stable";
import "raf/polyfill";
import React from "react";
import ReactDOM from "react-dom";
import { useStrict } from "mobx";
import { Provider } from "mobx-react";
import WebFontLoader from "webfontloader";
import { createBrowserHistory } from "history";
import ReactGA from "react-ga";
import "./index.scss";
import App from "./App";
import MorsePlayer from "./MorsePlayer";
import RootStore from "./stores/RootStore";
import LocalTransport from "./LocalTransport";
import registerServiceWorker from "./registerServiceWorker";
import modernizr from "./modernizr";
import UnsupportedBrowser from "./UnsupportedBrowser";
ReactGA.initialize("G-65SKQ2JDP7");
WebFontLoader.load({
google: {
families: ["Roboto:300,400,500,700", "Material Icons"]
}
});
useStrict(true);
const requiredFeatures = {
"Web Audio API": modernizr.webaudio,
"Web Storage API": modernizr.localstorage,
"CSS Flexible Box Layout": modernizr.flexbox
};
let rootElement;
let missingFeatures = [];
for (const [name, present] of Object.entries(requiredFeatures)) {
if (!present) {
missingFeatures.push(name);
}
}
if (missingFeatures.length === 0) {
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
const transport = new LocalTransport();
const store = new RootStore(transport);
const player = new MorsePlayer(store.morse, audioContext);
const history = createBrowserHistory();
rootElement = (
<Provider store={store} morsePlayer={player}>
<App history={history} />
</Provider>
);
registerServiceWorker(
store.appStore.notifyUpdate,
store.appStore.notifyCached
);
window.transport = transport;
window.store = store;
window.player = player;
} else {
rootElement = <UnsupportedBrowser missingFeatures={missingFeatures} />;
}
ReactDOM.render(rootElement, document.getElementById("root"));