diff --git a/packages/trace-viewer/src/ui/settingsView.tsx b/packages/trace-viewer/src/ui/settingsView.tsx index 57c058c248..883e4abca5 100644 --- a/packages/trace-viewer/src/ui/settingsView.tsx +++ b/packages/trace-viewer/src/ui/settingsView.tsx @@ -15,14 +15,19 @@ */ import * as React from 'react'; -import type { Setting } from '@web/uiUtils'; import './settingsView.css'; +export type Setting = { + value: T, + set: (value: T) => void, + title: string +}; + export const SettingsView: React.FunctionComponent<{ settings: Setting[], }> = ({ settings }) => { return
- {settings.map(([value, set, title]) => { + {settings.map(({ value, set, title }) => { return
} diff --git a/packages/trace-viewer/src/ui/workbench.tsx b/packages/trace-viewer/src/ui/workbench.tsx index 2d6b0bd8bd..491a8eac16 100644 --- a/packages/trace-viewer/src/ui/workbench.tsx +++ b/packages/trace-viewer/src/ui/workbench.tsx @@ -72,7 +72,7 @@ export const Workbench: React.FunctionComponent<{ const activeAction = model ? highlightedAction || selectedAction : undefined; const [selectedTime, setSelectedTime] = React.useState(); const [sidebarLocation, setSidebarLocation] = useSetting<'bottom' | 'right'>('propertiesSidebarLocation', 'bottom'); - const [showRouteActions, , showRouteActionsSetting] = useSetting('show-route-actions', true, 'Show route actions'); + const [showRouteActions, setShowRouteActions] = useSetting('show-route-actions', true); const filteredActions = React.useMemo(() => { return (model?.actions || []).filter(action => showRouteActions || !isRouteAction(action)); @@ -299,7 +299,7 @@ export const Workbench: React.FunctionComponent<{ const settingsTab: TabbedPaneTabModel = { id: 'settings', title: 'Settings', - component: , + component: , }; return
diff --git a/packages/web/src/theme.ts b/packages/web/src/theme.ts index b12fc0b7db..426a66a97e 100644 --- a/packages/web/src/theme.ts +++ b/packages/web/src/theme.ts @@ -15,7 +15,7 @@ */ import React from 'react'; -import { type Setting, settings } from './uiUtils'; +import { settings } from './uiUtils'; declare global { interface Document { @@ -68,12 +68,12 @@ export function currentTheme(): Theme { return document.body.classList.contains('dark-mode') ? 'dark-mode' : 'light-mode'; } -export function useDarkModeSetting() { +export function useDarkModeSetting(): [boolean, (value: boolean) => void] { const [theme, setTheme] = React.useState(currentTheme() === 'dark-mode'); return [theme, (value: boolean) => { const current = currentTheme() === 'dark-mode'; if (current !== value) toggleTheme(); setTheme(value); - }, 'Dark mode'] as Setting; + }]; } diff --git a/packages/web/src/uiUtils.ts b/packages/web/src/uiUtils.ts index 794ace1dc5..3ca9eb49af 100644 --- a/packages/web/src/uiUtils.ts +++ b/packages/web/src/uiUtils.ts @@ -139,10 +139,7 @@ export function copy(text: string) { textArea.remove(); } -export type Setting = readonly [T, (value: T) => void, string]; - - -export function useSetting(name: string | undefined, defaultValue: S, title?: string): [S, React.Dispatch>, Setting] { +export function useSetting(name: string | undefined, defaultValue: S, title?: string): [S, React.Dispatch>] { if (name) defaultValue = settings.getObject(name, defaultValue); const [value, setValue] = React.useState(defaultValue); @@ -160,9 +157,7 @@ export function useSetting(name: string | undefined, defaultValue: S, title?: return () => settings.onChangeEmitter.removeEventListener(name, onStoreChange); } }, [defaultValue, name]); - - const setting = [value, setValueWrapper, title || name || ''] as Setting; - return [value, setValueWrapper, setting]; + return [value, setValueWrapper]; } declare global {