Files
simple-react-app-kit/packages/i18n/src/devtool/message-repository.tsx
T

40 lines
892 B
TypeScript
Raw Normal View History

import * as React from "react"
import type { MessageRepository } from "./types"
const MessageRepositoryContext = React.createContext<MessageRepository | null>(
null
)
export interface MessageRepositoryProviderProps {
children: React.ReactNode
repository: MessageRepository
}
export function MessageRepositoryProvider({
children,
repository,
}: MessageRepositoryProviderProps) {
return (
<MessageRepositoryContext.Provider value={repository}>
{children}
</MessageRepositoryContext.Provider>
)
}
export function useMessageRepository() {
const repository = React.useContext(MessageRepositoryContext)
if (!repository) {
throw new Error(
"MessagePanel requires a MessageRepositoryProvider or a repository prop."
)
}
return repository
}
export function useOptionalMessageRepository() {
return React.useContext(MessageRepositoryContext)
}