()
| 22 | import { SourceInspector } from './components/source-inspector' |
| 23 | import { WorkbenchHeader } from './components/workbench-header' |
| 24 | import { PluginsStrip } from './components/plugins-strip' |
| 25 | import { PANEL_CLOSE_THRESHOLD } from './utils/constants' |
| 26 | |
| 27 | const themeDocumentOwners = new WeakMap<Document, Map<symbol, string>>() |
| 28 | const previousThemeAttributes = new WeakMap<Document, string | null>() |
| 29 | |
| 30 | const 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 | |
| 45 | const 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 | |
| 65 | export 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) => { |
nothing calls this directly
no test coverage detected