Skip to content

Commit 95b348b

Browse files
committed
Add setElementInterface function to setup to support custom renderers
1 parent 370c545 commit 95b348b

File tree

8 files changed

+27
-40
lines changed

8 files changed

+27
-40
lines changed

.changeset/proud-dogs-end.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@solid-devtools/debugger": minor
3+
"solid-devtools": minor
4+
---
5+
6+
Add setElementInterface funtion to setup to support custom renderers (closes #343)

packages/debugger/src/inspector/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ export function createInspector(props: {
6262
const encoded = encodeValue(
6363
node.getValue(),
6464
selected,
65-
setup.debugger_options.eli,
65+
setup.eli,
6666
selected &&
6767
(storeNode => node.addStoreObserver(observeStoreNode(storeNode))),
6868
)
@@ -80,7 +80,7 @@ export function createInspector(props: {
8080
[
8181
storeProperty,
8282
typeof data === 'object'
83-
? encodeValue(data.value, true, setup.debugger_options.eli, undefined, true)
83+
? encodeValue(data.value, true, setup.eli, undefined, true)
8484
: data ?? null,
8585
],
8686
])
@@ -164,7 +164,7 @@ export function createInspector(props: {
164164
onValueUpdate: pushValueUpdate,
165165
onPropStateChange: pushPropState,
166166
observedPropsMap: propsMap,
167-
eli: setup.debugger_options.eli,
167+
eli: setup.eli,
168168
})
169169

170170
props.emit(msg('InspectedNodeDetails', result.details))

packages/debugger/src/main/index.ts

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,11 @@ import {
1919
type NodeID,
2020
type OutputListener,
2121
type OutputMessage,
22-
type DebuggerOptions,
2322
} from './types.ts'
2423

25-
function createDebugger<TEl extends object>(
26-
options?: DebuggerOptions<TEl>,
27-
) {
24+
function createDebugger() {
2825
assert(globalThis.SolidDevtools$$, 'solid-devtools is not setup')
2926

30-
if (options != null) {
31-
globalThis.SolidDevtools$$.debugger_options = options
32-
}
33-
3427
initRoots()
3528

3629
const _output_listeners: OutputListener[] = []
@@ -147,7 +140,7 @@ function createDebugger<TEl extends object>(
147140
}
148141
}
149142

150-
let component_registry = walker.makeComponentRegistry(setup.debugger_options.eli)
143+
let component_registry = walker.makeComponentRegistry(setup.eli)
151144

152145
//
153146
// Structure:
@@ -278,9 +271,7 @@ let _debugger_instance: Debugger | undefined
278271
/**
279272
* Used for connecting debugger to devtools
280273
*/
281-
export function useDebugger<TEl extends object>(
282-
options?: DebuggerOptions<TEl>,
283-
): Debugger {
284-
_debugger_instance ??= createDebugger(options)
274+
export function useDebugger(): Debugger {
275+
_debugger_instance ??= createDebugger()
285276
return _debugger_instance
286277
}

packages/debugger/src/main/types.ts

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

176-
export type DebuggerOptions<TEl extends object> = {
177-
eli: ElementInterface<TEl>,
178-
}
179-
180176
//
181177
// EXPOSED SOLID API
182178
//

packages/debugger/src/setup.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ export function setLocatorOptions(options: debug.LocatorOptions) {
2020
globalThis.SolidDevtools$$.locator_options = options
2121
}
2222

23-
export function setDebuggerOptions(options: debug.DebuggerOptions<any>) {
23+
export function setElementInterface(eli: debug.ElementInterface<any>) {
2424
assert(globalThis.SolidDevtools$$, 'solid-devtools is not setup')
25-
globalThis.SolidDevtools$$.debugger_options = options
25+
globalThis.SolidDevtools$$.eli = eli
2626
}
2727

2828
export function setClientVersion(version: string) {
@@ -51,7 +51,7 @@ export type SetupApi = {
5151
$RAW: typeof store.$RAW
5252
}
5353
// custom
54-
debugger_options: debug.DebuggerOptions<any>
54+
eli: debug.ElementInterface<any>
5555
locator_options: debug.LocatorOptions | null
5656
get_created_owners: () => debug.Solid.Owner[]
5757
get_locator_options: () => debug.LocatorOptions | null
@@ -106,13 +106,9 @@ if (!s.DEV || !store.DEV) {
106106
created_owners = null
107107
return events
108108
},
109-
debugger_options: {
110-
eli: debug.dom_element_interface,
111-
},
109+
eli: debug.dom_element_interface,
112110
locator_options: null,
113-
get_locator_options() {
114-
return this.locator_options
115-
},
111+
get_locator_options() {return this.locator_options},
116112
versions: {
117113
client: null,
118114
solid: null,

packages/main/src/setup.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ setSolidVersion(process.env.SOLID_VERSION, process.env.EXPECTED_SOLID_VERSION)
1010

1111
export {
1212
setLocatorOptions,
13-
setDebuggerOptions,
13+
setElementInterface,
1414
} from '@solid-devtools/debugger/setup'

packages/main/src/setup_noop.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import type * as API from './setup.ts'
22

33
export const {
44
setLocatorOptions,
5-
setDebuggerOptions,
5+
setElementInterface,
66
}: typeof API = {
7-
setLocatorOptions() {/**/},
8-
setDebuggerOptions() {/**/},
7+
setLocatorOptions() {/**/},
8+
setElementInterface() {/**/},
99
}

packages/overlay/src/index.tsx

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ 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'
109
import {Icon, MountIcons, createDevtools} from '@solid-devtools/frontend'
1110
import {useIsMobile, useIsTouch, atom} from '@solid-devtools/shared/primitives'
1211
import {msg} from '@solid-devtools/shared/utils'
@@ -15,10 +14,9 @@ import frontendStyles from '@solid-devtools/frontend/dist/styles.css'
1514
import overlayStyles from './styles.css'
1615

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

2422
export function attachDevtoolsOverlay(props?: OverlayOptions): (() => void) {
@@ -43,9 +41,9 @@ export function attachDevtoolsOverlay(props?: OverlayOptions): (() => void) {
4341

4442
const Overlay: s.Component<OverlayOptions> = props => {
4543

46-
let {alwaysOpen, debuggerOptions, defaultOpen, noPadding} = props
44+
let {alwaysOpen, defaultOpen, noPadding} = props
4745

48-
const instance = useDebugger(debuggerOptions)
46+
const instance = useDebugger()
4947

5048
if (defaultOpen || alwaysOpen) {
5149
instance.toggleEnabled(true)

0 commit comments

Comments
 (0)