/** * 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 {use, useState, useEffect} from 'react'; import type {DevToolsHookSettings} from 'react-devtools-shared/src/backend/types'; import type Store from 'react-devtools-shared/src/devtools/store'; import styles from './SettingsShared.css'; type Props = { hookSettings: Promise<$ReadOnly>, store: Store, }; export default function DebuggingSettings({ hookSettings, store, }: Props): React.Node { const usedHookSettings = use(hookSettings); const [appendComponentStack, setAppendComponentStack] = useState( usedHookSettings.appendComponentStack, ); const [breakOnConsoleErrors, setBreakOnConsoleErrors] = useState( usedHookSettings.breakOnConsoleErrors, ); const [hideConsoleLogsInStrictMode, setHideConsoleLogsInStrictMode] = useState(usedHookSettings.hideConsoleLogsInStrictMode); const [showInlineWarningsAndErrors, setShowInlineWarningsAndErrors] = useState(usedHookSettings.showInlineWarningsAndErrors); const [ disableSecondConsoleLogDimmingInStrictMode, setDisableSecondConsoleLogDimmingInStrictMode, ] = useState(usedHookSettings.disableSecondConsoleLogDimmingInStrictMode); useEffect(() => { store.setShouldShowWarningsAndErrors(showInlineWarningsAndErrors); }, [showInlineWarningsAndErrors]); useEffect(() => { store.updateHookSettings({ appendComponentStack, breakOnConsoleErrors, showInlineWarningsAndErrors, hideConsoleLogsInStrictMode, disableSecondConsoleLogDimmingInStrictMode, }); }, [ store, appendComponentStack, breakOnConsoleErrors, showInlineWarningsAndErrors, hideConsoleLogsInStrictMode, disableSecondConsoleLogDimmingInStrictMode, ]); return (
); }