import React from "react"; /** * Copyright (c) Nicolas Gallagher. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow strict */ import { isLocaleRTL } from './isLocaleRTL'; type Locale = string; type WritingDirection = 'ltr' | 'rtl'; type LocaleValue = { // Locale writing direction. direction: WritingDirection; // Locale BCP47 language code: https://www.ietf.org/rfc/bcp/bcp47.txt locale: Locale | null; }; type ProviderProps = { children: any; } & LocaleValue; const defaultLocale = { direction: 'ltr', locale: 'en-US' }; const LocaleContext = React.createContext((defaultLocale as any)); export function getLocaleDirection(locale: Locale): WritingDirection { return isLocaleRTL(locale) ? 'rtl' : 'ltr'; } export function LocaleProvider(props: ProviderProps) { const { direction, locale, children } = props; const needsContext = direction || locale; return needsContext ? {children} : children; } export function useLocaleContext(): LocaleValue { return React.useContext(LocaleContext); }