()
| 22 | import { SourceInspector } from './components/source-inspector' |
| 23 | |
| 24 | export default function DevTools() { |
| 25 | const { settings } = createDevtoolsSettings() |
| 26 | const { setHeight } = createHeight() |
| 27 | const { persistOpen, setPersistOpen } = createPersistOpen() |
| 28 | const [rootEl, setRootEl] = createSignal<HTMLDivElement>() |
| 29 | const [isOpen, setIsOpen] = createSignal( |
| 30 | settings().defaultOpen || persistOpen(), |
| 31 | ) |
| 32 | const pip = createPiPWindow() |
| 33 | let panelRef: HTMLDivElement | undefined = undefined |
| 34 | const [isResizing, setIsResizing] = createSignal(false) |
| 35 | |
| 36 | const toggleOpen = () => { |
| 37 | if (pip().pipWindow) { |
| 38 | return |
| 39 | } |
| 40 | const open = isOpen() |
| 41 | const newState = !open |
| 42 | setIsOpen(newState) |
| 43 | setPersistOpen(newState) |
| 44 | |
| 45 | // Emit event when user toggles devtools |
| 46 | devtoolsEventClient.emit('trigger-toggled', { isOpen: newState }) |
| 47 | } |
| 48 | |
| 49 | // Listen for trigger-toggled events to control devtools |
| 50 | createEffect(() => { |
| 51 | const unsubscribe = devtoolsEventClient.on('trigger-toggled', (event) => { |
| 52 | if (pip().pipWindow) { |
| 53 | return |
| 54 | } |
| 55 | const payload = event.payload as unknown as { isOpen: boolean } |
| 56 | const shouldBeOpen = payload.isOpen |
| 57 | if (shouldBeOpen !== isOpen()) { |
| 58 | setIsOpen(shouldBeOpen) |
| 59 | setPersistOpen(shouldBeOpen) |
| 60 | } |
| 61 | }) |
| 62 | |
| 63 | onCleanup(unsubscribe) |
| 64 | }) |
| 65 | // Used to resize the panel |
| 66 | const handleDragStart = ( |
| 67 | panelElement: HTMLDivElement | undefined, |
| 68 | startEvent: MouseEvent, |
| 69 | ) => { |
| 70 | if (startEvent.button !== 0) return // Only allow left click for drag |
| 71 | if (!panelElement) return |
| 72 | setIsResizing(true) |
| 73 | |
| 74 | const dragInfo = { |
| 75 | originalHeight: panelElement.getBoundingClientRect().height, |
| 76 | pageY: startEvent.pageY, |
| 77 | } |
| 78 | |
| 79 | const run = (moveEvent: MouseEvent) => { |
| 80 | const delta = dragInfo.pageY - moveEvent.pageY |
| 81 | const newHeight = |
nothing calls this directly
no test coverage detected