@@ -32,6 +32,19 @@ function InspectorPanel({
3232
3333 const theme = entity [ "theme" ] ;
3434
35+ // Determine the panel title - use name if available, otherwise default
36+ let panelTitle = "Inspector Panel" ;
37+ if ( entity [ "names" ] ) {
38+ try {
39+ const names = JSON . parse ( entity [ "names" ] ) ;
40+ if ( names [ "primary" ] ) {
41+ panelTitle = names [ "primary" ] ;
42+ }
43+ } catch ( e ) {
44+ // If parsing fails, keep default title
45+ }
46+ }
47+
3548 let inspectorPanel = < div > </ div > ;
3649
3750 if ( theme === "base" ) {
@@ -101,14 +114,47 @@ function InspectorPanel({
101114 } else {
102115 console . log ( "unhandled theme type" ) ;
103116 console . log ( entity ) ;
117+
118+ // Get all keys except those starting with @
119+ const allKeys = Object . keys ( entity ) . filter ( ( key ) => ! key . startsWith ( "@" ) ) ;
120+
121+ // Create custom ordering for class/subclass hierarchy
122+ const orderedKeys = [ ] ;
123+ const processedKeys = new Set ( ) ;
124+
125+ // First pass: add all keys except subclass
126+ allKeys . forEach ( key => {
127+ if ( key !== "subclass" ) {
128+ orderedKeys . push ( { key, indented : false } ) ;
129+ processedKeys . add ( key ) ;
130+
131+ // If this is "class" and "subclass" exists, add subclass right after
132+ if ( key === "class" && entity . hasOwnProperty ( "subclass" ) ) {
133+ orderedKeys . push ( { key : "subclass" , indented : true } ) ;
134+ processedKeys . add ( "subclass" ) ;
135+ }
136+ }
137+ } ) ;
138+
139+ // Second pass: add any remaining keys that weren't processed
140+ allKeys . forEach ( key => {
141+ if ( ! processedKeys . has ( key ) ) {
142+ orderedKeys . push ( { key, indented : false } ) ;
143+ }
144+ } ) ;
145+
104146 inspectorPanel = (
105147 < table >
106148 < tbody >
107- { Object . keys ( entity )
108- . filter ( ( key ) => ! key . startsWith ( "@" ) )
109- . map ( ( key ) => (
110- < TableRow key = { key } mode = { mode } table_key = { key } entity = { entity } />
111- ) ) }
149+ { orderedKeys . map ( ( { key, indented } ) => (
150+ < TableRow
151+ key = { key }
152+ mode = { mode }
153+ table_key = { key }
154+ entity = { entity }
155+ indented = { indented }
156+ />
157+ ) ) }
112158 </ tbody >
113159 </ table >
114160 ) ;
@@ -117,7 +163,7 @@ function InspectorPanel({
117163 return (
118164 < div className = "inspector-panel" >
119165 < div className = "panel-header" >
120- < h4 className = "title" > Inspector Panel </ h4 >
166+ < h6 className = "title" > { panelTitle } </ h6 >
121167 < button
122168 className = "close-panel-button"
123169 onClick = { ( ) => {
0 commit comments