SettingsModalContext.js — react Source File
Architecture documentation for SettingsModalContext.js, a javascript file in the react codebase. 6 imports, 2 dependents.
Entity Profile
Dependency Diagram
graph LR c590b2f8_e784_4482_1344_3166beeda587["SettingsModalContext.js"] 913bb343_55ea_f1b8_08f5_b75cb0a92b76["context.js"] c590b2f8_e784_4482_1344_3166beeda587 --> 913bb343_55ea_f1b8_08f5_b75cb0a92b76 90c55265_8c71_a702_1208_8bdd01b6c4ae["bridge.js"] c590b2f8_e784_4482_1344_3166beeda587 --> 90c55265_8c71_a702_1208_8bdd01b6c4ae 0304bbc8_f110_6643_71c6_d26bddc58fde["types.js"] c590b2f8_e784_4482_1344_3166beeda587 --> 0304bbc8_f110_6643_71c6_d26bddc58fde bba85af0_a356_d0c5_4d12_914508b89593["store.js"] c590b2f8_e784_4482_1344_3166beeda587 --> bba85af0_a356_d0c5_4d12_914508b89593 d8f20c67_f5fa_0f0a_c967_c41fd9ffce07["ReactTypes"] c590b2f8_e784_4482_1344_3166beeda587 --> d8f20c67_f5fa_0f0a_c967_c41fd9ffce07 ac587885_e294_a1e9_b13f_5e7b920fdb42["react"] c590b2f8_e784_4482_1344_3166beeda587 --> ac587885_e294_a1e9_b13f_5e7b920fdb42 33c9bb39_5afe_7433_b39c_5c97384e3323["SettingsModal.js"] 33c9bb39_5afe_7433_b39c_5c97384e3323 --> c590b2f8_e784_4482_1344_3166beeda587 2c88dff5_1ec3_9232_0235_005236b72c3c["SettingsModalContextToggle.js"] 2c88dff5_1ec3_9232_0235_005236b72c3c --> c590b2f8_e784_4482_1344_3166beeda587 style c590b2f8_e784_4482_1344_3166beeda587 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
/**
* Copyright (c) Meta Platforms, Inc. and 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 type {ReactContext} from 'shared/ReactTypes';
import * as React from 'react';
import {
createContext,
useContext,
useCallback,
useState,
startTransition,
} from 'react';
import {BridgeContext, StoreContext} from '../context';
import type {FrontendBridge} from '../../../bridge';
import type {DevToolsHookSettings} from '../../../backend/types';
import type Store from '../../store';
export type Theme = 'auto' | 'light' | 'dark';
type Context = {
isModalShowing: boolean,
setIsModalShowing: (value: boolean) => void,
environmentNames: null | Promise<Array<string>>,
hookSettings: null | Promise<$ReadOnly<DevToolsHookSettings>>,
};
const SettingsModalContext: ReactContext<Context> = createContext<Context>(
((null: any): Context),
);
SettingsModalContext.displayName = 'SettingsModalContext';
function fetchEnvironmentNames(bridge: FrontendBridge): Promise<Array<string>> {
return new Promise(resolve => {
function onEnvironmentNames(names: Array<string>) {
bridge.removeListener('environmentNames', onEnvironmentNames);
resolve(names);
}
bridge.addListener('environmentNames', onEnvironmentNames);
bridge.send('getEnvironmentNames');
});
}
function fetchHookSettings(
store: Store,
): Promise<$ReadOnly<DevToolsHookSettings>> {
return new Promise(resolve => {
function onHookSettings(settings: $ReadOnly<DevToolsHookSettings>) {
store.removeListener('hookSettings', onHookSettings);
resolve(settings);
}
store.addListener('hookSettings', onHookSettings);
store.getHookSettings();
});
}
function SettingsModalContextController({
children,
}: {
children: React$Node,
}): React.Node {
const bridge = useContext(BridgeContext);
const store = useContext(StoreContext);
const setIsModalShowing: boolean => void = useCallback(
(value: boolean) => {
startTransition(() => {
setContext({
isModalShowing: value,
setIsModalShowing,
environmentNames: value ? fetchEnvironmentNames(bridge) : null,
hookSettings: value ? fetchHookSettings(store) : null,
});
});
},
[bridge, store],
);
const [currentContext, setContext] = useState<Context>({
isModalShowing: false,
setIsModalShowing,
environmentNames: null,
hookSettings: null,
});
return (
<SettingsModalContext.Provider value={currentContext}>
{children}
</SettingsModalContext.Provider>
);
}
export {SettingsModalContext, SettingsModalContextController};
Domain
Subdomains
Functions
Dependencies
- ReactTypes
- bridge.js
- context.js
- react
- store.js
- types.js
Imported By
Source
Frequently Asked Questions
What does SettingsModalContext.js do?
SettingsModalContext.js is a source file in the react codebase, written in javascript. It belongs to the BabelCompiler domain, Validation subdomain.
What functions are defined in SettingsModalContext.js?
SettingsModalContext.js defines 2 function(s): Context.setIsModalShowing, boolean.
What does SettingsModalContext.js depend on?
SettingsModalContext.js imports 6 module(s): ReactTypes, bridge.js, context.js, react, store.js, types.js.
What files import SettingsModalContext.js?
SettingsModalContext.js is imported by 2 file(s): SettingsModal.js, SettingsModalContextToggle.js.
Where is SettingsModalContext.js in the architecture?
SettingsModalContext.js is located at packages/react-devtools-shared/src/devtools/views/Settings/SettingsModalContext.js (domain: BabelCompiler, subdomain: Validation, directory: packages/react-devtools-shared/src/devtools/views/Settings).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free