42 lines
1.2 KiB
Django/Jinja
42 lines
1.2 KiB
Django/Jinja
import { createContext, useState } from "react"
|
|
import { Event, hydrateClientStorage, useEventLoop } from "/utils/state.js"
|
|
|
|
{% if initial_state %}
|
|
export const initialState = {{ initial_state|json_dumps }}
|
|
{% else %}
|
|
export const initialState = {}
|
|
{% endif %}
|
|
|
|
export const ColorModeContext = createContext(null);
|
|
export const StateContext = createContext(null);
|
|
export const EventLoopContext = createContext(null);
|
|
{% if client_storage %}
|
|
export const clientStorage = {{ client_storage|json_dumps }}
|
|
{% else %}
|
|
export const clientStorage = {}
|
|
{% endif %}
|
|
|
|
{% if state_name %}
|
|
export const initialEvents = () => [
|
|
Event('{{state_name}}.{{const.hydrate}}', hydrateClientStorage(clientStorage)),
|
|
]
|
|
{% else %}
|
|
export const initialEvents = () => []
|
|
{% endif %}
|
|
|
|
export const isDevMode = {{ is_dev_mode|json_dumps }}
|
|
|
|
export function EventLoopProvider({ children }) {
|
|
const [state, addEvents, connectError] = useEventLoop(
|
|
initialState,
|
|
initialEvents,
|
|
clientStorage,
|
|
)
|
|
return (
|
|
<EventLoopContext.Provider value={[addEvents, connectError]}>
|
|
<StateContext.Provider value={state}>
|
|
{children}
|
|
</StateContext.Provider>
|
|
</EventLoopContext.Provider>
|
|
)
|
|
} |