import React from "react"; import { defaultConfig, defaultJson } from "src/constants/data"; import { ReducerAction, useConfigReducer } from "src/reducer/reducer"; import { ReactComponent, StorageConfig } from "src/typings/global"; export interface AppConfig { json: string; settings: StorageConfig; } export const initialStates: AppConfig = { json: JSON.stringify(defaultJson), settings: defaultConfig, }; interface Config { states: AppConfig; dispatch: React.Dispatch; } const defaultContext: Config = { states: initialStates, dispatch: () => {}, }; const ConfigContext: React.Context = React.createContext(defaultContext); const useConfig = () => React.useContext(ConfigContext); const WithConfig: ReactComponent = ({ children }) => { const [states, dispatch] = React.useReducer(useConfigReducer, initialStates); const value = { states, dispatch }; return ( {children} ); }; const withConfig =

( Component: React.ComponentType

): React.FC => { return (props) => ( ); }; export { WithConfig, useConfig, ConfigContext, withConfig };