1- import { createState } from "dreamland/core" ;
1+ import { createDelegate , createState } from "dreamland/core" ;
22import { StatefulClass } from "./StatefulClass" ;
33import { browser , scramjet } from "./main" ;
44import {
@@ -10,6 +10,8 @@ import { NewTab } from "./pages/NewTab";
1010import { Playground } from "./pages/Playground" ;
1111import { createMenu } from "./components/Menu" ;
1212
13+ const requestInspectElement = createDelegate < [ HTMLElement , Tab ] > ( ) ;
14+
1315let id = 0 ;
1416export class Tab extends StatefulClass {
1517 id : number ;
@@ -33,7 +35,7 @@ export class Tab extends StatefulClass {
3335
3436 internalpage : HTMLElement | null ;
3537
36- devtoolsOpen : boolean = true ;
38+ devtoolsOpen : boolean = false ;
3739 devtoolsWidth = 200 ;
3840
3941 constructor ( public url : URL = new URL ( "puter://newtab" ) ) {
@@ -178,6 +180,17 @@ function injectDevtools(client: ScramjetClient, tab: Tab) {
178180 } ,
179181 } ;
180182 client . global . document . head . appendChild ( devtoolsScript ) ;
183+ requestInspectElement . listen ( ( [ elm , t ] ) => {
184+ if ( t != tab ) return ;
185+ // @ts -expect-error
186+ client . global . window . connector1 . default . trigger (
187+ "Overlay.inspectNodeRequested" ,
188+ {
189+ // @ts -expect-error
190+ backendNodeId : client . global . pushNodesToFrontend ( elm ) ,
191+ }
192+ ) ;
193+ } ) ;
181194
182195 // unproxied version
183196 // const devtoolsUrl = "/chi";
@@ -323,7 +336,8 @@ function pageContextItems(client: ScramjetClient, tab: Tab, e: MouseEvent) {
323336 {
324337 label : "Inspect" ,
325338 action : ( ) => {
326- tab . devtoolsOpen = ! tab . devtoolsOpen ;
339+ tab . devtoolsOpen = true ;
340+ if ( e . target ) requestInspectElement ( [ e . target as HTMLElement , tab ] ) ;
327341 } ,
328342 } ,
329343 ] ;
0 commit comments