@nanocollective/nanocoder
Version:
A local-first CLI coding agent that brings the power of agentic coding tools like Claude Code and Gemini CLI to local models or controlled APIs like OpenRouter
46 lines • 1.67 kB
JavaScript
import React, { createContext, useCallback, useContext, useMemo, useState, } from 'react';
const UIStateContext = createContext(undefined);
// Existing hook that builds the UI state (kept to separate creation from context)
function useUIState() {
const [showClearMessage, setShowClearMessage] = useState(false);
const [showCompletions, setShowCompletions] = useState(false);
const [completions, setCompletions] = useState([]);
const [pendingFileMentions, setPendingFileMentions] = useState([]);
const resetUIState = useCallback(() => {
setShowClearMessage(false);
setShowCompletions(false);
setCompletions([]);
setPendingFileMentions([]);
}, []);
return useMemo(() => ({
showClearMessage,
showCompletions,
completions,
pendingFileMentions,
setShowClearMessage,
setShowCompletions,
setCompletions,
setPendingFileMentions,
resetUIState,
}), [
showClearMessage,
showCompletions,
completions,
pendingFileMentions,
resetUIState,
]);
}
// Provider to expose a single shared UI state instance to the subtree
export function UIStateProvider({ children }) {
const state = useUIState();
return React.createElement(UIStateContext.Provider, { value: state }, children);
}
// Hook to consume the shared UI state from context (preferred for consumers)
export function useUIStateContext() {
const ctx = useContext(UIStateContext);
if (!ctx) {
throw new Error('useUIStateContext must be used within a UIStateProvider');
}
return ctx;
}
//# sourceMappingURL=useUIState.js.map