@@ -53,63 +53,22 @@ export type DevtoolsOptions = Partial<DevtoolsOptionsWithDefaults>
5353
5454export function createDevtools ( props : DevtoolsOptions ) {
5555
56- let output_listeners : OutputListener [ ] = [ ]
57- const output : OutputEventBus = {
58- listen ( listener ) {
59- output_listeners . push ( listener )
60- s . onCleanup ( ( ) => {
61- mutate_remove ( output_listeners , listener )
62- } )
63- } ,
64- emit ( e ) {
65- s . batch ( ( ) => {
66- for ( let fn of output_listeners ) {
67- fn ( e )
68- }
69- } )
70- } ,
71- }
72-
73- let input_listeners : InputListener [ ] = [ ]
74- const input : InputEventBus = {
75- listen ( listener ) {
76- input_listeners . push ( listener )
77- s . onCleanup ( ( ) => {
78- mutate_remove ( input_listeners , listener )
79- } )
80- } ,
81- emit ( e ) {
82- s . batch ( ( ) => {
83- for ( let fn of input_listeners ) {
84- fn ( e )
85- }
86- } )
87- } ,
88- }
89-
90- let options : DevtoolsOptionsWithDefaults = {
91- errorOverlayFooter : props . errorOverlayFooter ?? ( ( ) => null ) ,
92- headerSubtitle : props . headerSubtitle ?? ( ( ) => null ) ,
93- useShortcuts : props . useShortcuts ?? false ,
94- catchWindowErrors : props . catchWindowErrors ?? false ,
95- }
96-
97- const controller = createController ( output , input , options )
56+ const ctx = createAppCtx ( props )
9857
9958 return {
100- output,
101- input,
59+ output : ctx . output ,
60+ input : ctx . input ,
10261 Devtools ( ) {
10362 return (
10463 < div class = { ui . devtools_root_class + ' h-inherit' } >
10564 < ui . Styles />
10665 < ui . ErrorOverlay
107- footer = { options . errorOverlayFooter ( ) }
108- catchWindowErrors = { options . catchWindowErrors }
66+ footer = { ctx . options . errorOverlayFooter ( ) }
67+ catchWindowErrors = { ctx . options . catchWindowErrors }
10968 >
110- < ControllerCtx . Provider value = { controller } >
111- < App headerSubtitle = { options . headerSubtitle ( ) } />
112- </ ControllerCtx . Provider >
69+ < AppCtx . Provider value = { ctx } >
70+ < App headerSubtitle = { ctx . options . headerSubtitle ( ) } />
71+ </ AppCtx . Provider >
11372 </ ui . ErrorOverlay >
11473 </ div >
11574 )
@@ -157,11 +116,49 @@ function createViewCache() {
157116 return { set : setCacheGetter , get : getCache }
158117}
159118
160- function createController (
161- output : OutputEventBus ,
162- input : InputEventBus ,
163- options : DevtoolsOptions ,
164- ) {
119+ function createAppCtx ( props : DevtoolsOptions ) {
120+
121+ let output_listeners : OutputListener [ ] = [ ]
122+ const output : OutputEventBus = {
123+ listen ( listener ) {
124+ output_listeners . push ( listener )
125+ s . onCleanup ( ( ) => {
126+ mutate_remove ( output_listeners , listener )
127+ } )
128+ } ,
129+ emit ( e ) {
130+ s . batch ( ( ) => {
131+ for ( let fn of output_listeners ) {
132+ fn ( e )
133+ }
134+ } )
135+ } ,
136+ }
137+
138+ let input_listeners : InputListener [ ] = [ ]
139+ const input : InputEventBus = {
140+ listen ( listener ) {
141+ input_listeners . push ( listener )
142+ s . onCleanup ( ( ) => {
143+ mutate_remove ( input_listeners , listener )
144+ } )
145+ } ,
146+ emit ( e ) {
147+ s . batch ( ( ) => {
148+ for ( let fn of input_listeners ) {
149+ fn ( e )
150+ }
151+ } )
152+ } ,
153+ }
154+
155+ let options : DevtoolsOptionsWithDefaults = {
156+ errorOverlayFooter : props . errorOverlayFooter ?? ( ( ) => null ) ,
157+ headerSubtitle : props . headerSubtitle ?? ( ( ) => null ) ,
158+ useShortcuts : props . useShortcuts ?? false ,
159+ catchWindowErrors : props . catchWindowErrors ?? false ,
160+ }
161+
165162 //
166163 // LOCATOR
167164 //
@@ -308,8 +305,8 @@ function createController(
308305 }
309306}
310307
311- export type Controller = ReturnType < typeof createController >
308+ export type AppCtx = ReturnType < typeof createAppCtx >
312309
313- const ControllerCtx = s . createContext < Controller > ( 'ControllerCtx' as any as Controller )
310+ const AppCtx = s . createContext < AppCtx > ( 'ControllerCtx' as any as AppCtx )
314311
315- export const useController = ( ) => s . useContext ( ControllerCtx )
312+ export const useAppCtx = ( ) => s . useContext ( AppCtx )
0 commit comments