mirror of
https://github.com/betagouv/mon-entreprise
synced 2025-03-13 22:35:05 +00:00
L'état est automatiquement sauvegardé dans le localStorage On ne sauvegarde que les données nécessaires : les values du form, et les foldedQuestions La sauvegarde est automatique, et est déclenchée une seconde après la dernière action
62 lines
1.6 KiB
JavaScript
62 lines
1.6 KiB
JavaScript
import React from 'react'
|
|
import { render } from 'react-dom'
|
|
import { compose, createStore, applyMiddleware } from 'redux'
|
|
import reducers from './reducers/reducers'
|
|
import DevTools from './DevTools'
|
|
import { Provider } from 'react-redux'
|
|
import Layout from './containers/Layout'
|
|
import { AppContainer } from 'react-hot-loader'
|
|
import { persistState, retrievePersistedState } from './storage/persist'
|
|
import debounceFormChangeActions from './debounceFormChangeActions'
|
|
import computeThemeColours from './components/themeColours'
|
|
import { getIframeOption, getUrl } from './utils'
|
|
|
|
import { rules, rulesFr } from 'Engine/rules'
|
|
import lang from './i18n'
|
|
|
|
let initialState = {
|
|
iframe: getUrl().includes('iframe'),
|
|
themeColours: computeThemeColours(getIframeOption('couleur')),
|
|
...retrievePersistedState()
|
|
}
|
|
|
|
let enhancer = compose(
|
|
applyMiddleware(debounceFormChangeActions()),
|
|
DevTools.instrument({ maxAge: 10 })
|
|
)
|
|
|
|
let tracker = {
|
|
push: console.log,
|
|
connectToHistory: history => history
|
|
}
|
|
|
|
let initialRules = lang == 'en' ? rules : rulesFr
|
|
let store = createStore(reducers(tracker, initialRules), initialState, enhancer)
|
|
let anchor = document.querySelector('#js')
|
|
|
|
persistState(store)
|
|
|
|
let App = ({ store }) => (
|
|
<Provider store={store}>
|
|
<div id="dev">
|
|
<Layout tracker={tracker} />
|
|
<DevTools />
|
|
</div>
|
|
</Provider>
|
|
)
|
|
|
|
render(<App store={store} />, anchor)
|
|
|
|
// Hot react component reloading. Unstable but helpful.
|
|
if (module.hot) {
|
|
module.hot.accept('./containers/Layout', () => {
|
|
render(
|
|
<AppContainer>
|
|
<App store={store} />
|
|
</AppContainer>,
|
|
anchor
|
|
)
|
|
})
|
|
}
|
|
|
|
export { anchor }
|