mirror of https://gitee.com/antv-l7/antv-l7
73 lines
2.1 KiB
JavaScript
73 lines
2.1 KiB
JavaScript
import React from "react"
|
|
import ReactDOM from "react-dom"
|
|
import domReady from "@mikaelkristiansson/domready"
|
|
|
|
import socketIo from "./socketIo"
|
|
import emitter from "./emitter"
|
|
import { apiRunner, apiRunnerAsync } from "./api-runner-browser"
|
|
import { setLoader, publicLoader } from "./loader"
|
|
import DevLoader from "./dev-loader"
|
|
import syncRequires from "./sync-requires"
|
|
// Generated during bootstrap
|
|
import matchPaths from "./match-paths.json"
|
|
|
|
window.___emitter = emitter
|
|
|
|
const loader = new DevLoader(syncRequires, matchPaths)
|
|
setLoader(loader)
|
|
loader.setApiRunner(apiRunner)
|
|
|
|
window.___loader = publicLoader
|
|
|
|
// Let the site/plugins run code very early.
|
|
apiRunnerAsync(`onClientEntry`).then(() => {
|
|
// Hook up the client to socket.io on server
|
|
const socket = socketIo()
|
|
if (socket) {
|
|
socket.on(`reload`, () => {
|
|
window.location.reload()
|
|
})
|
|
}
|
|
|
|
/**
|
|
* Service Workers are persistent by nature. They stick around,
|
|
* serving a cached version of the site if they aren't removed.
|
|
* This is especially frustrating when you need to test the
|
|
* production build on your local machine.
|
|
*
|
|
* Let's warn if we find service workers in development.
|
|
*/
|
|
if (`serviceWorker` in navigator) {
|
|
navigator.serviceWorker.getRegistrations().then(registrations => {
|
|
if (registrations.length > 0)
|
|
console.warn(
|
|
`Warning: found one or more service workers present.`,
|
|
`If your site isn't behaving as expected, you might want to remove these.`,
|
|
registrations
|
|
)
|
|
})
|
|
}
|
|
|
|
const rootElement = document.getElementById(`___gatsby`)
|
|
|
|
const renderer = apiRunner(
|
|
`replaceHydrateFunction`,
|
|
undefined,
|
|
ReactDOM.render
|
|
)[0]
|
|
|
|
Promise.all([
|
|
loader.loadPage(`/dev-404-page/`),
|
|
loader.loadPage(`/404.html`),
|
|
loader.loadPage(window.location.pathname),
|
|
]).then(() => {
|
|
const preferDefault = m => (m && m.default) || m
|
|
let Root = preferDefault(require(`./root`))
|
|
domReady(() => {
|
|
renderer(<Root />, rootElement, () => {
|
|
apiRunner(`onInitialClientRender`)
|
|
})
|
|
})
|
|
})
|
|
})
|