MCPcopy Index your code
hub / github.com/TanStack/ai / DevtoolsContent

Function DevtoolsContent

packages/ai-devtools/src/components/Shell.tsx:33–150  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

31}
32
33function DevtoolsContent() {
34 const styles = useStyles()
35 const [leftPanelWidth, setLeftPanelWidth] = createSignal(300)
36 const [isDragging, setIsDragging] = createSignal(false)
37
38 let dragStartX = 0
39 let dragStartWidth = 0
40
41 const handleMouseDown = (e: MouseEvent) => {
42 e.preventDefault()
43 e.stopPropagation()
44 setIsDragging(true)
45 document.body.style.cursor = 'col-resize'
46 document.body.style.userSelect = 'none'
47 dragStartX = e.clientX
48 dragStartWidth = leftPanelWidth()
49 }
50
51 const handleMouseMove = (e: MouseEvent) => {
52 if (!isDragging()) return
53
54 e.preventDefault()
55 const deltaX = e.clientX - dragStartX
56 const newWidth = Math.max(150, Math.min(800, dragStartWidth + deltaX))
57 setLeftPanelWidth(newWidth)
58 }
59
60 const handleMouseUp = () => {
61 setIsDragging(false)
62 document.body.style.cursor = ''
63 document.body.style.userSelect = ''
64 }
65
66 onMount(() => {
67 document.addEventListener('mousemove', handleMouseMove)
68 document.addEventListener('mouseup', handleMouseUp)
69
70 const openedAt = Date.now()
71 emitAIDevtoolsEvent('devtools:opened', {
72 ...createAIDevtoolsEventEnvelope({
73 eventType: 'devtools:opened',
74 source: 'devtools',
75 visibility: 'devtools-action',
76 timestamp: openedAt,
77 }),
78 })
79 emitAIDevtoolsEvent('devtools:request-state', {
80 ...createAIDevtoolsEventEnvelope({
81 eventType: 'devtools:request-state',
82 source: 'devtools',
83 visibility: 'devtools-action',
84 timestamp: openedAt + 1,
85 }),
86 })
87 })
88
89 onCleanup(() => {
90 document.removeEventListener('mousemove', handleMouseMove)

Callers

nothing calls this directly

Calls 6

useStylesFunction · 0.90
emitAIDevtoolsEventFunction · 0.90
nowMethod · 0.80
addEventListenerMethod · 0.45
emitMethod · 0.45

Tested by

no test coverage detected