@@ -113,37 +113,41 @@ const registerComponent = <TEl extends object>(
113113
114114export
115115const registerElement = < TEl extends object > (
116- r : ComponentRegistry < TEl > ,
117- componentId : NodeID ,
118- elementId : NodeID ,
119- element : TEl ,
116+ r : ComponentRegistry < TEl > ,
117+ component_id : NodeID ,
118+ element_id : NodeID ,
119+ element : TEl ,
120120) : void => {
121- let component = r . components . get ( componentId )
122- if ( ! component ) return
121+ let component = r . components . get ( component_id )
122+ if ( component == null ) return
123123
124- component . element_nodes . add ( elementId )
125- r . element_nodes . set ( elementId , { el : element as any as TEl , component} )
124+ component . element_nodes . add ( element_id )
125+ r . element_nodes . set ( element_id , { el : element , component} )
126126}
127127
128128export
129129const getComponent = < TEl extends object > (
130- r : ComponentRegistry < TEl > ,
130+ r : ComponentRegistry < TEl > ,
131131 id : NodeID ,
132132) : { name : string | undefined ; id : NodeID ; elements : TEl [ ] } | null => {
133133 // provided if might be of an element node (in DOM mode) or component node
134134 // both need to be checked
135135
136136 let component = r . components . get ( id )
137- if ( component ) return {
138- name : component . name ,
139- elements : [ ...component . elements ] . map ( el => el as any as TEl ) ,
140- id
137+ if ( component != null ) return {
138+ name : component . name ,
139+ elements : [ ...component . elements ] ,
140+ id : id ,
141141 }
142142
143- let elData = r . element_nodes . get ( id )
144- return elData
145- ? { name : elData . component . name , id : elData . component . id , elements : [ elData . el ] }
146- : null
143+ let el_data = r . element_nodes . get ( id )
144+ if ( el_data == null ) return null
145+
146+ return {
147+ name : el_data . component . name ,
148+ id : el_data . component . id ,
149+ elements : [ el_data . el ] ,
150+ }
147151}
148152
149153/**
@@ -156,11 +160,13 @@ const getComponent = <TEl extends object>(
156160export
157161const getComponentElement = < TEl extends object > (
158162 r : ComponentRegistry < TEl > ,
159- elementId : NodeID ,
163+ element_id : NodeID ,
160164) : { name : string | undefined ; id : NodeID ; element : TEl } | undefined => {
161- let el_data = r . element_nodes . get ( elementId )
162- if ( el_data != null ) {
163- return { name : el_data . component . name , id : el_data . component . id , element : el_data . el }
165+ let el_data = r . element_nodes . get ( element_id )
166+ if ( el_data != null ) return {
167+ name : el_data . component . name ,
168+ id : el_data . component . id ,
169+ element : el_data . el ,
164170 }
165171}
166172
@@ -201,13 +207,15 @@ const findComponent = <TEl extends object>(
201207}
202208
203209
204- export type ComputationUpdateHandler = (
210+ export
211+ type ComputationUpdateHandler = (
205212 rootId : NodeID ,
206213 owner : Solid . Owner ,
207214 changedStructure : boolean ,
208215) => void
209216
210- export type TreeWalkerConfig < TEl extends object > = {
217+ export
218+ type TreeWalkerConfig < TEl extends object > = {
211219 mode : TreeWalkerMode
212220 rootId : NodeID
213221 onUpdate : ComputationUpdateHandler
@@ -326,20 +334,21 @@ function mapChildren<TEl extends object>(
326334
327335let els_seen = new Set < object > ( )
328336
329- const make_el_json = < TEl extends object > ( el : TEl , eli : ElementInterface < TEl > ) : Mapped . Owner => ( {
330- id : get_id_el ( el ) ,
331- type : NodeType . Element ,
332- name : eli . getName ( el ) ?? UNKNOWN ,
333- children : [ ] ,
334- } )
335- const push_make_el_json = < TEl extends object > (
336- arr : Mapped . Owner [ ] ,
337- el : TEl ,
338- eli : ElementInterface < TEl > ,
337+ const add_new_el_json = < TEl extends object > (
338+ comp_id : NodeID ,
339+ child_arr : Mapped . Owner [ ] ,
340+ el : TEl ,
341+ config : TreeWalkerConfig < TEl > ,
339342) : Mapped . Owner => {
340- let el_json = make_el_json ( el , eli )
341- arr . push ( el_json )
343+ let el_json : Mapped . Owner = {
344+ id : get_id_el ( el ) ,
345+ type : NodeType . Element ,
346+ name : config . eli . getName ( el ) ?? UNKNOWN ,
347+ children : [ ] ,
348+ }
349+ child_arr . push ( el_json )
342350 els_seen . add ( el )
351+ registerElement ( config . registry , comp_id , el_json . id , el )
343352 return el_json
344353}
345354
@@ -488,7 +497,7 @@ function mapOwner<TEl extends object>(
488497 if ( ! els_seen . has ( el ) ) {
489498 stack_els_arr [ stack_els_len ] = config . eli . getChildren ( el )
490499 stack_els_idx [ stack_els_len ] = 0
491- stack_els_own [ stack_els_len ] = push_make_el_json ( el_own . children , el , config . eli )
500+ stack_els_own [ stack_els_len ] = add_new_el_json ( id , el_own . children , el , config )
492501 stack_els_len += 1
493502 }
494503 }
@@ -512,7 +521,7 @@ function mapOwner<TEl extends object>(
512521 if ( ! els_seen . has ( el ) ) {
513522 stack_els_arr [ stack_els_len ] = config . eli . getChildren ( el )
514523 stack_els_idx [ stack_els_len ] = 0
515- stack_els_own [ stack_els_len ] = push_make_el_json ( el_own . children , el , config . eli )
524+ stack_els_own [ stack_els_len ] = add_new_el_json ( id , el_own . children , el , config )
516525 stack_els_len += 1
517526 }
518527 }
@@ -521,16 +530,15 @@ function mapOwner<TEl extends object>(
521530 return mapped
522531}
523532
524- export const walkSolidTree = /*#__PURE__*/ untrackedCallback ( function < TEl extends object > (
533+ export
534+ const walkSolidTree = /*#__PURE__*/ untrackedCallback ( function < TEl extends object > (
525535 owner : Solid . Owner | Solid . Root ,
526536 config : TreeWalkerConfig < TEl > ,
527537) : Mapped . Owner {
528538
529- const r = mapOwner ( owner , null , config ) !
539+ let r = mapOwner ( owner , null , config ) !
530540
531- if ( config . mode === TreeWalkerMode . DOM ) {
532- els_seen . clear ( )
533- }
541+ els_seen . clear ( )
534542
535543 return r
536544} )
0 commit comments