MCPcopy Create free account
hub / github.com/TanStack/devtools / DevTools

Function DevTools

packages/devtools/src/devtools.tsx:24–231  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

22import { SourceInspector } from './components/source-inspector'
23import { WorkbenchHeader } from './components/workbench-header'
24import { PluginsStrip } from './components/plugins-strip'
25import { PANEL_CLOSE_THRESHOLD } from './utils/constants'
26
27const themeDocumentOwners = new WeakMap<Document, Map<symbol, string>>()
28const previousThemeAttributes = new WeakMap<Document, string | null>()
29
30const setDocumentTheme = (document: Document, owner: symbol, theme: string) => {
31 let owners = themeDocumentOwners.get(document)
32 if (!owners) {
33 owners = new Map()
34 themeDocumentOwners.set(document, owners)
35 previousThemeAttributes.set(
36 document,
37 document.documentElement.getAttribute('data-tanstack-devtools-theme'),
38 )
39 }
40 owners.delete(owner)
41 owners.set(owner, theme)
42 document.documentElement.dataset.tanstackDevtoolsTheme = theme
43}
44
45const clearDocumentTheme = (document: Document, owner: symbol) => {
46 const owners = themeDocumentOwners.get(document)
47 if (!owners) return
48 owners.delete(owner)
49 const themes = [...owners.values()]
50 const currentTheme = themes[themes.length - 1]
51 if (currentTheme) {
52 document.documentElement.dataset.tanstackDevtoolsTheme = currentTheme
53 return
54 }
55 const previousTheme = previousThemeAttributes.get(document)
56 if (previousTheme === null || previousTheme === undefined) {
57 delete document.documentElement.dataset.tanstackDevtoolsTheme
58 } else {
59 document.documentElement.dataset.tanstackDevtoolsTheme = previousTheme
60 }
61 themeDocumentOwners.delete(document)
62 previousThemeAttributes.delete(document)
63}
64
65export default function DevTools() {
66 const { settings } = createDevtoolsSettings()
67 const { state } = createDevtoolsState()
68 const { setHeight } = createHeight()
69 const { persistOpen, setPersistOpen } = createPersistOpen()
70 const [rootEl, setRootEl] = createSignal<HTMLDivElement>()
71 const [isOpen, setIsOpen] = createSignal(
72 settings().defaultOpen || persistOpen(),
73 )
74 const pip = createPiPWindow()
75 let panelRef: HTMLDivElement | undefined
76 const [isResizing, setIsResizing] = createSignal(false)
77 const { isCollapsed } = createCollapsed()
78 const [showMarketplace, setShowMarketplace] = createSignal(false)
79 const themeOwner = Symbol('tanstack-devtools-theme')
80
81 const updateHeight = (nextHeight: number) => {

Callers

nothing calls this directly

Calls 13

createDevtoolsSettingsFunction · 0.90
createHeightFunction · 0.90
createPersistOpenFunction · 0.90
createPiPWindowFunction · 0.90
createDisableTabbingFunction · 0.90
getHotkeyPermutationsFunction · 0.90
createThemeFunction · 0.90
setPersistOpenFunction · 0.85
runFunction · 0.85
toggleOpenFunction · 0.85
isEditableTargetFunction · 0.85
handleDragStartFunction · 0.85

Tested by

no test coverage detected