mirror of
https://github.com/lifegpc/eh-downloader.git
synced 2026-06-06 05:38:44 +08:00
34 lines
921 B
TypeScript
34 lines
921 B
TypeScript
import { Component, ComponentChild, createContext } from "preact";
|
|
import { StateUpdater } from "preact/hooks";
|
|
import { ConfigType } from "../config.ts";
|
|
|
|
export const SettingsCtx = createContext<State | null>(null);
|
|
|
|
type State = {
|
|
set_settings: StateUpdater<ConfigType | undefined>;
|
|
set_changed: StateUpdater<Set<string>>;
|
|
};
|
|
|
|
type Props = {
|
|
children: ComponentChild;
|
|
set_settings: StateUpdater<ConfigType | undefined>;
|
|
set_changed: StateUpdater<Set<string>>;
|
|
};
|
|
|
|
export default class SettingsContext extends Component<Props, State> {
|
|
constructor(props: Props) {
|
|
super(props);
|
|
this.state = {
|
|
set_settings: props.set_settings,
|
|
set_changed: props.set_changed,
|
|
};
|
|
}
|
|
render() {
|
|
return (
|
|
<SettingsCtx.Provider value={this.state}>
|
|
{this.props.children}
|
|
</SettingsCtx.Provider>
|
|
);
|
|
}
|
|
}
|