Skip to content

Commit 66eee74

Browse files
committed
Register mapped elements
1 parent da2d755 commit 66eee74

1 file changed

Lines changed: 50 additions & 42 deletions

File tree

packages/debugger/src/structure/walker.ts

Lines changed: 50 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -113,37 +113,41 @@ const registerComponent = <TEl extends object>(
113113

114114
export
115115
const 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

128128
export
129129
const 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>(
156160
export
157161
const 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

327335
let 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

Comments
 (0)