/** * 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 * as React from 'react'; import {useContext, useMemo} from 'react'; import {SettingsContext} from './SettingsContext'; import {StoreContext} from '../context'; import {CHANGE_LOG_URL} from 'react-devtools-shared/src/devtools/constants'; import {isInternalFacebookBuild} from 'react-devtools-feature-flags'; import styles from './SettingsShared.css'; import CodeEditorOptions from './CodeEditorOptions'; import CodeEditorByDefault from './CodeEditorByDefault'; import {LOCAL_STORAGE_ALWAYS_OPEN_IN_EDITOR} from '../../../constants'; import {useLocalStorage} from '../hooks'; function getChangeLogUrl(version: ?string): string | null { if (!version) { return null; } // Version numbers are in the format of: ..- // e.g. "4.23.0-f0dd459e0" // GitHub CHANGELOG headers are in the format of: .. // but the "." are stripped from anchor tags, becomming: const versionAnchor = version.replace(/^(\d+)\.(\d+)\.(\d+).*/, '$1$2$3'); return `${CHANGE_LOG_URL}#${versionAnchor}`; } export default function GeneralSettings(_: {}): React.Node { const { displayDensity, setDisplayDensity, setTheme, setTraceUpdatesEnabled, theme, traceUpdatesEnabled, } = useContext(SettingsContext); const {backendVersion, supportsTraceUpdates} = useContext(StoreContext); const frontendVersion = process.env.DEVTOOLS_VERSION; const showBackendVersion = backendVersion && backendVersion !== frontendVersion; const [alwaysOpenInEditor] = useLocalStorage( LOCAL_STORAGE_ALWAYS_OPEN_IN_EDITOR, false, ); return (
{isInternalFacebookBuild && (
This is an internal build of React DevTools for Meta
)}
Theme
Display density
{alwaysOpenInEditor && (__IS_CHROME__ || __IS_EDGE__) ? (
To enable link handling in your browser's DevTools settings, look for the option Extension -> Link Handling. Select "React Developer Tools".
) : null}
{supportsTraceUpdates && (
)}
{showBackendVersion && (
)} {!showBackendVersion && ( )}
); } function Version({label, version}: {label: string, version: ?string}) { const changelogLink = useMemo(() => { return getChangeLogUrl(version); }, [version]); if (version == null) { return null; } else { return ( <> {label}{' '} {version} ); } }