Skip to content

Commit 330205b

Browse files
author
Loïc Mangeonjean
committed
fix!: make the hook only return 1 color
so the parameter is not an array that changes every render
1 parent 29eeb6a commit 330205b

File tree

3 files changed

+12
-10
lines changed

3 files changed

+12
-10
lines changed

src/MonacoEditor.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { ForwardedRef, forwardRef, ReactElement, useEffect, useMemo, useR
22
import debounce from 'lodash.debounce'
33
import { monaco, createEditor, getMonacoLanguage, updateEditorKeybindingsMode, registerEditorOpenHandler } from '@codingame/monaco-editor-wrapper'
44
import { IEditorOptions } from 'vscode/service-override/modelEditor'
5-
import { useDeepMemo, useLastValueRef, useLastVersion, useThemeColors } from './hooks'
5+
import { useDeepMemo, useLastValueRef, useLastVersion, useThemeColor } from './hooks'
66
import './style'
77

88
const STATUS_BAR_HEIGHT = 20
@@ -123,7 +123,9 @@ function MonacoEditor ({
123123
const preventTriggerChangeEventRef = useRef<boolean>(false)
124124

125125
const [height, setHeight] = useState<number | string>(requestedHeight !== 'auto' ? requestedHeight : 50)
126-
const [statusBarBackground, statusBarForeground, statusBarBorder] = useThemeColors(['statusBar.background', 'statusBar.foreground', 'statusBar.border'])
126+
const statusBarBackground = useThemeColor('statusBar.background')
127+
const statusBarForeground = useThemeColor('statusBar.foreground')
128+
const statusBarBorder = useThemeColor('statusBar.border')
127129

128130
const containerRef = useRef<HTMLDivElement>(null)
129131
const statusBarRef = useRef<HTMLDivElement>(null)

src/hooks.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,21 @@ function getCurrentThemeColor (color: string): string | undefined {
88
return themeService.getColorTheme().getColor(color)?.toString()
99
}
1010

11-
export function useThemeColors (colors: string[]): (string | undefined)[] {
12-
const [colorValues, setColorValues] = useState(colors.map(getCurrentThemeColor))
11+
export function useThemeColor (color: string): string | undefined {
12+
const [colorValue, setColorValue] = useState(getCurrentThemeColor(color))
1313
useEffect(() => {
1414
const disposable = StandaloneServices.get(IThemeService).onDidColorThemeChange(() => {
15-
setColorValues(colors.map(getCurrentThemeColor))
15+
setColorValue(getCurrentThemeColor(color))
1616
})
1717
// Since useEffect is asynchronous, the theme may have changed between the initialization of state and now
1818
// Let's update the state just in case
19-
setColorValues(colors.map(getCurrentThemeColor))
19+
setColorValue(getCurrentThemeColor(color))
2020
return () => {
2121
disposable.dispose()
2222
}
23-
}, [colors])
23+
}, [color])
2424

25-
return colorValues
25+
return colorValue
2626
}
2727

2828
export function useUserConfiguration (programmingLanguageId?: string): Partial<monaco.editor.IEditorOptions> {

src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { loadLanguage, monaco, updateKeybindings, updateUserConfiguration } from '@codingame/monaco-editor-wrapper'
2-
import { useThemeColors, useUserConfiguration } from './hooks'
2+
import { useThemeColor, useUserConfiguration } from './hooks'
33
import MonacoEditor, { MonacoEditorProps } from './MonacoEditor'
44

55
export default MonacoEditor
66
export {
77
monaco,
8-
useThemeColors,
8+
useThemeColor,
99
useUserConfiguration,
1010
updateKeybindings,
1111
updateUserConfiguration,

0 commit comments

Comments
 (0)