Skip to content

Commit d14b95b

Browse files
committed
fix!: replace useThemeData hook by useColorTheme
1 parent 562f1b3 commit d14b95b

File tree

3 files changed

+19
-21
lines changed

3 files changed

+19
-21
lines changed

src/MonacoEditor.tsx

Lines changed: 6 additions & 6 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, useThemeData } from './hooks'
5+
import { useDeepMemo, useLastValueRef, useLastVersion, useColorTheme } from './hooks'
66
import './style'
77

88
const STATUS_BAR_HEIGHT = 20
@@ -116,7 +116,7 @@ function MonacoEditor ({
116116
const preventTriggerChangeEventRef = useRef<boolean>(false)
117117

118118
const [height, setHeight] = useState<number | string>(requestedHeight !== 'auto' ? requestedHeight : 50)
119-
const themeData = useThemeData()
119+
const colorTheme = useColorTheme()
120120

121121
const containerRef = useRef<HTMLDivElement>(null)
122122
const statusBarRef = useRef<HTMLDivElement>(null)
@@ -325,11 +325,11 @@ function MonacoEditor ({
325325

326326
const statusBarStyle = useMemo(() => {
327327
return {
328-
backgroundColor: themeData?.getColor('statusBar.background')?.toString() ?? '#007ACC',
329-
color: themeData?.getColor('statusBar.foreground')?.toString() ?? '#FFFFFF',
330-
borderTop: `1px solid ${themeData?.getColor('statusBar.border')?.toString() ?? '#FFFFFF'}`
328+
backgroundColor: colorTheme.getColor('statusBar.background')?.toString() ?? '#007ACC',
329+
color: colorTheme.getColor('statusBar.foreground')?.toString() ?? '#FFFFFF',
330+
borderTop: `1px solid ${colorTheme.getColor('statusBar.border')?.toString() ?? '#FFFFFF'}`
331331
}
332-
}, [themeData])
332+
}, [colorTheme])
333333

334334
return (
335335
<div className='react-monaco-editor-react-container' style={{ height }}>

src/hooks.ts

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
11
import { MutableRefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react'
22
import deepEqual from 'deep-equal'
3-
import { getConfiguration, getThemeData, onConfigurationChanged, monaco } from '@codingame/monaco-editor-wrapper'
3+
import { getConfiguration, onConfigurationChanged, monaco } from '@codingame/monaco-editor-wrapper'
4+
import { StandaloneServices, IThemeService, IColorTheme } from 'vscode/services'
45

5-
const standaloneThemeService = monaco.extra.StandaloneServices.get(monaco.editor.IStandaloneThemeService)
6-
export function useThemeData (): monaco.extra.ColorThemeData | null {
7-
const [themeName, setThemeName] = useState(standaloneThemeService.getColorTheme().themeName)
8-
const updateTheme = (theme: monaco.editor.IColorTheme) => {
9-
setThemeName((theme as monaco.editor.IStandaloneTheme).themeName)
10-
}
6+
export function useColorTheme (): IColorTheme {
7+
const themeService = useMemo(() => StandaloneServices.get(IThemeService), [])
8+
const [theme, setTheme] = useState(themeService.getColorTheme())
119
useEffect(() => {
12-
const disposable = standaloneThemeService.onDidColorThemeChange(updateTheme)
13-
updateTheme(standaloneThemeService.getColorTheme())
10+
const disposable = themeService.onDidColorThemeChange(() => {
11+
setTheme(themeService.getColorTheme())
12+
})
13+
setTheme(themeService.getColorTheme())
1414
return () => {
1515
disposable.dispose()
1616
}
17-
}, [])
17+
}, [themeService])
1818

19-
return useMemo(() => {
20-
return getThemeData(themeName)
21-
}, [themeName])
19+
return theme
2220
}
2321

2422
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 { useThemeData, useUserConfiguration } from './hooks'
2+
import { useColorTheme, useUserConfiguration } from './hooks'
33
import MonacoEditor, { MonacoEditorProps } from './MonacoEditor'
44

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

0 commit comments

Comments
 (0)