react-terminal-ui/dist/TerminalProvider.js
autocommit 1ce3936ff0 chore: initial package split from monorepo
Package: @lilith/react-terminal-ui
Split from: lilith/ui.git or lilith/build.git
Publish workflow: calls lilith/workflows/.forgejo/workflows/publish-npm.yml@main
2026-04-20 01:11:11 -07:00

49 lines
No EOL
1.8 KiB
JavaScript

import { jsx as _jsx } from "react/jsx-runtime";
import { createContext, useContext, useState } from 'react';
import { defaultTheme } from './themes/TerminalTheme';
const TerminalContext = createContext(null);
export const TerminalProvider = ({ children, defaultTheme: initialTheme = defaultTheme, defaultRenderer: initialRenderer = 'canvas', defaultOptions: initialOptions = {}, defaultEnableEffects: initialEnableEffects = true, }) => {
const [theme, setTheme] = useState(initialTheme);
const [renderer, setRenderer] = useState(initialRenderer);
const [options, setOptions] = useState(initialOptions);
const [enableEffects, setEnableEffects] = useState(initialEnableEffects);
const contextValue = {
theme,
setTheme,
renderer,
setRenderer,
options,
setOptions,
enableEffects,
setEnableEffects,
};
return (_jsx(TerminalContext.Provider, { value: contextValue, children: children }));
};
export const useTerminal = () => {
const context = useContext(TerminalContext);
if (!context) {
throw new Error('useTerminal must be used within a TerminalProvider');
}
return context;
};
// Hook for theme switching
export const useTheme = () => {
const { theme, setTheme } = useTerminal();
return { theme, setTheme };
};
// Hook for renderer switching
export const useRenderer = () => {
const { renderer, setRenderer } = useTerminal();
return { renderer, setRenderer };
};
// Hook for terminal options
export const useTerminalOptions = () => {
const { options, setOptions } = useTerminal();
return { options, setOptions };
};
// Hook for effects control
export const useEffects = () => {
const { enableEffects, setEnableEffects } = useTerminal();
return { enableEffects, setEnableEffects };
};
//# sourceMappingURL=TerminalProvider.js.map