Skip to content

Commit bd82bab

Browse files
committed
Add DebuggerOptions
1 parent 18f28dd commit bd82bab

File tree

3 files changed

+33
-17
lines changed

3 files changed

+33
-17
lines changed

packages/debugger/src/main/index.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,16 @@ import {
1919
type NodeID,
2020
type OutputListener,
2121
type OutputMessage,
22+
type DebuggerOptions,
2223
dom_element_interface,
24+
type ElementInterface,
2325
} from './types.ts'
2426

25-
function createDebugger() {
27+
function createDebugger<TEl extends object>(
28+
options?: DebuggerOptions<TEl>,
29+
) {
30+
31+
let eli = options?.eli ?? dom_element_interface as any as ElementInterface<TEl>
2632

2733
initRoots()
2834

@@ -140,7 +146,6 @@ function createDebugger() {
140146
}
141147
}
142148

143-
let eli = dom_element_interface
144149
let component_registry = walker.makeComponentRegistry(eli)
145150

146151
//
@@ -266,12 +271,15 @@ function createDebugger() {
266271
}
267272
}
268273

269-
let _debugger_instance: ReturnType<typeof createDebugger> | undefined
274+
export type Debugger = ReturnType<typeof createDebugger>
275+
let _debugger_instance: Debugger | undefined
270276

271277
/**
272278
* Used for connecting debugger to devtools
273279
*/
274-
export function useDebugger() {
275-
_debugger_instance ??= createDebugger()
280+
export function useDebugger<TEl extends object>(
281+
options?: DebuggerOptions<TEl>,
282+
): Debugger {
283+
_debugger_instance ??= createDebugger(options)
276284
return _debugger_instance
277285
}

packages/debugger/src/main/types.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,10 @@ export const dom_element_interface: ElementInterface<Element> = {
173173
},
174174
}
175175

176+
export type DebuggerOptions<TEl extends object> = {
177+
eli: ElementInterface<TEl>,
178+
}
179+
176180
//
177181
// EXPOSED SOLID API
178182
//

packages/overlay/src/index.tsx

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {createBodyCursor} from '@solid-primitives/cursor'
66
import {makeEventListener} from '@solid-primitives/event-listener'
77
import * as num from '@nothing-but/utils/num'
88
import {useDebugger} from '@solid-devtools/debugger/bundled'
9+
import * as debug from '@solid-devtools/debugger/types'
910
import {Icon, MountIcons, createDevtools} from '@solid-devtools/frontend'
1011
import {useIsMobile, useIsTouch, atom} from '@solid-devtools/shared/primitives'
1112
import {msg} from '@solid-devtools/shared/utils'
@@ -14,9 +15,10 @@ import frontendStyles from '@solid-devtools/frontend/dist/styles.css'
1415
import overlayStyles from './styles.css'
1516

1617
export type OverlayOptions = {
17-
defaultOpen?: boolean
18-
alwaysOpen?: boolean
19-
noPadding?: boolean
18+
defaultOpen?: boolean
19+
alwaysOpen?: boolean
20+
noPadding?: boolean
21+
debuggerOptions?: debug.DebuggerOptions<any>
2022
}
2123

2224
export function attachDevtoolsOverlay(props?: OverlayOptions): (() => void) {
@@ -39,19 +41,21 @@ export function attachDevtoolsOverlay(props?: OverlayOptions): (() => void) {
3941
})
4042
}
4143

42-
const Overlay: s.Component<OverlayOptions> = ({defaultOpen, alwaysOpen, noPadding}) => {
44+
const Overlay: s.Component<OverlayOptions> = props => {
4345

44-
const debug = useDebugger()
46+
let {alwaysOpen, debuggerOptions, defaultOpen, noPadding} = props
47+
48+
const instance = useDebugger(debuggerOptions)
4549

4650
if (defaultOpen || alwaysOpen) {
47-
debug.toggleEnabled(true)
51+
instance.toggleEnabled(true)
4852
}
4953

50-
const isOpen = atom(alwaysOpen || debug.enabled())
54+
const isOpen = atom(alwaysOpen || instance.enabled())
5155
function toggleOpen(enabled?: boolean) {
5256
if (!alwaysOpen) {
5357
enabled ??= !isOpen()
54-
debug.toggleEnabled(enabled)
58+
instance.toggleEnabled(enabled)
5559
isOpen.set(enabled)
5660
}
5761
}
@@ -106,19 +110,19 @@ const Overlay: s.Component<OverlayOptions> = ({defaultOpen, alwaysOpen, noPaddin
106110
<s.Show when={isOpen()}>
107111
{_ => {
108112

109-
debug.emit(msg('ResetState', undefined))
113+
instance.emit(msg('ResetState', undefined))
110114

111-
s.onCleanup(() => debug.emit(msg('InspectNode', null)))
115+
s.onCleanup(() => instance.emit(msg('InspectNode', null)))
112116

113117
const devtools = createDevtools({
114118
headerSubtitle: () => 'overlay',
115119
})
116120

117121
devtools.output.listen(e => {
118-
separate(e, debug.emit)
122+
separate(e, instance.emit)
119123
})
120124

121-
debug.listen(e => {
125+
instance.listen(e => {
122126
separate(e, devtools.input.emit)
123127
})
124128

0 commit comments

Comments
 (0)