mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
* import * as React from "react"; This is the correct way to import React from an ES module since the ES module will not have a default export. Only named exports. * import * as ReactDOM from "react-dom"
41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @flow
|
|
*/
|
|
|
|
import * as React from 'react';
|
|
import {createContext, useMemo, useState} from 'react';
|
|
|
|
export type DisplayDensity = 'comfortable' | 'compact';
|
|
export type Theme = 'auto' | 'light' | 'dark';
|
|
|
|
type Context = {
|
|
isModalShowing: boolean,
|
|
setIsModalShowing: (value: boolean) => void,
|
|
...
|
|
};
|
|
|
|
const SettingsModalContext = createContext<Context>(((null: any): Context));
|
|
SettingsModalContext.displayName = 'SettingsModalContext';
|
|
|
|
function SettingsModalContextController({children}: {|children: React$Node|}) {
|
|
const [isModalShowing, setIsModalShowing] = useState<boolean>(false);
|
|
|
|
const value = useMemo(() => ({isModalShowing, setIsModalShowing}), [
|
|
isModalShowing,
|
|
setIsModalShowing,
|
|
]);
|
|
|
|
return (
|
|
<SettingsModalContext.Provider value={value}>
|
|
{children}
|
|
</SettingsModalContext.Provider>
|
|
);
|
|
}
|
|
|
|
export {SettingsModalContext, SettingsModalContextController};
|