-
-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Expand file tree
/
Copy pathDevtoolsPanelComponent.tsx
More file actions
78 lines (72 loc) · 2.3 KB
/
DevtoolsPanelComponent.tsx
File metadata and controls
78 lines (72 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import { createLocalStorage } from '@solid-primitives/storage'
import { createMemo, createSignal } from 'solid-js'
import { ContentView, ParentPanel } from './Devtools'
import { getPreferredColorScheme } from './utils'
import { THEME_PREFERENCE } from './constants'
import {
DevtoolsStateContext,
PiPProvider,
QueryDevtoolsContext,
ThemeContext,
} from './contexts'
import type { MutationCacheMap, QueryCacheMap, Theme } from './contexts'
import type { DevtoolsComponentType } from './Devtools'
const DevtoolsPanelComponent: DevtoolsComponentType = (props) => {
const [localStore, setLocalStore] = createLocalStorage({
prefix: 'TanstackQueryDevtools',
})
const [selectedQueryHash, setSelectedQueryHash] = createSignal<string | null>(
null,
)
const [selectedMutationId, setSelectedMutationId] = createSignal<
number | null
>(null)
const [panelWidth, setPanelWidth] = createSignal(0)
const [offline, setOffline] = createSignal(false)
const queryCacheMap: QueryCacheMap = new Map()
const mutationCacheMap: MutationCacheMap = new Map()
const colorScheme = getPreferredColorScheme()
const theme = createMemo(() => {
const preference = (props.theme ||
localStore.theme_preference ||
THEME_PREFERENCE) as Theme
if (preference !== 'system') return preference
return colorScheme()
})
return (
<QueryDevtoolsContext.Provider value={props}>
<DevtoolsStateContext.Provider
value={{
selectedQueryHash,
setSelectedQueryHash,
selectedMutationId,
setSelectedMutationId,
panelWidth,
setPanelWidth,
offline,
setOffline,
queryCacheMap,
mutationCacheMap,
}}
>
<PiPProvider
disabled
localStore={localStore}
setLocalStore={setLocalStore}
>
<ThemeContext.Provider value={theme}>
<ParentPanel>
<ContentView
localStore={localStore}
setLocalStore={setLocalStore}
onClose={props.onClose}
showPanelViewOnly
/>
</ParentPanel>
</ThemeContext.Provider>
</PiPProvider>
</DevtoolsStateContext.Provider>
</QueryDevtoolsContext.Provider>
)
}
export default DevtoolsPanelComponent