@@ -15,6 +15,42 @@ export type Value_Node = {
1515 get_value : ( ( ) => unknown ) | undefined
1616}
1717
18+ export type Value_Node_Map = Map < ValueItemID , Value_Node >
19+
20+ /** Prop becomes stale or live (is being currently listened to reactively or not) */
21+ export type On_Prop_State_Change = ( key : string , state : PropGetterState ) => void
22+ export type On_Value_Update = ( id : ValueItemID ) => void
23+
24+ export type Observed_Props_Map = WeakMap < Solid . Props , Observed_Props >
25+
26+ /**
27+ * Manages observing getter properties.
28+ * This is used to track when a prop is accessed and when it is no longer accessed. (STALE | LIVE)
29+ */
30+ export type Observed_Props = {
31+ props : Solid . Props
32+ on_prop_state_change ?: On_Prop_State_Change | undefined
33+ on_value_update ?: On_Value_Update | undefined
34+ observed_getters : Record < string , { v : unknown | typeof $NOT_SET ; n : number } >
35+ }
36+
37+ export type Inspector_Context < TEl extends object > = {
38+ value_map : Value_Node_Map
39+ config : Collect_Details_Config < TEl >
40+ }
41+
42+ export type Collect_Details_Config < TEl extends object > = {
43+ on_prop_state_change : On_Prop_State_Change
44+ on_value_update : On_Value_Update
45+ props_map : Observed_Props_Map
46+ eli : ElementInterface < TEl >
47+ }
48+
49+
50+ const $INSPECTOR = Symbol ( 'inspector' )
51+ const $NOT_SET = Symbol ( 'not-set' )
52+
53+
1854export function value_node_make ( get_value : ( ( ) => unknown ) | undefined ) : Value_Node {
1955 return {
2056 tracked_stores : [ ] ,
@@ -46,44 +82,11 @@ export function value_node_set_selected(node: Value_Node, selected: boolean): vo
4682 if ( ! selected ) value_node_unsubscribe ( node )
4783}
4884
49- export type Value_Node_Map = Map < ValueItemID , Value_Node >
50-
51- export function value_node_map_make ( ) : Value_Node_Map {
52- return new Map ( )
53- }
54-
55- export function value_node_map_get ( map : Value_Node_Map , id : ValueItemID ) : Value_Node | undefined {
56- return map . get ( id )
57- }
58-
59- export function value_node_map_add ( map : Value_Node_Map , id : ValueItemID , get_value : ( ( ) => unknown ) | undefined ) : void {
60- map . set ( id , value_node_make ( get_value ) )
61- }
62-
6385export function value_node_map_reset ( map : Value_Node_Map ) : void {
6486 for ( let signal of map . values ( ) ) value_node_reset ( signal )
6587}
6688
67- /** Prop becomes stale or live (is being currently listened to reactively or not) */
68- export type On_Prop_State_Change = ( key : string , state : PropGetterState ) => void
69- export type On_Value_Update = ( id : ValueItemID ) => void
70-
71- export type Observed_Props_Map = WeakMap < Solid . Component [ 'props' ] , Observed_Props >
72-
73- const $NOT_SET = Symbol ( 'not-set' )
74-
75- /**
76- * Manages observing getter properties.
77- * This is used to track when a prop is accessed and when it is no longer accessed. (STALE | LIVE)
78- */
79- export type Observed_Props = {
80- props : Solid . Component [ 'props' ]
81- on_prop_state_change ?: On_Prop_State_Change | undefined
82- on_value_update ?: On_Value_Update | undefined
83- observed_getters : Record < string , { v : unknown | typeof $NOT_SET ; n : number } >
84- }
85-
86- export function observed_props_make ( props : Solid . Component [ 'props' ] ) : Observed_Props {
89+ export function observed_props_make ( props : Solid . Props ) : Observed_Props {
8790 return {
8891 props : props ,
8992 on_prop_state_change : undefined ,
@@ -170,21 +173,6 @@ export function clear_owner_observers(owner: Solid.Owner, observed_props_map: Ob
170173 }
171174}
172175
173- type Inspector_Context < TEl extends object > = {
174- value_map : Value_Node_Map
175- config : Collect_Details_Config < TEl >
176- }
177-
178- export
179- type Collect_Details_Config < TEl extends object > = {
180- on_prop_state_change : On_Prop_State_Change
181- on_value_update : On_Value_Update
182- props_map : Observed_Props_Map
183- eli : ElementInterface < TEl >
184- }
185-
186- const $INSPECTOR = Symbol ( 'inspector' )
187-
188176function map_source_value < TEl extends object > (
189177 node_raw : Solid . SourceMapValue | Solid . Computation ,
190178 handler : ( nodeId : NodeID , value : unknown ) => void ,
@@ -205,7 +193,7 @@ function map_source_value<TEl extends object>(
205193 return null
206194 }
207195
208- value_node_map_add ( ctx . value_map , `${ ValueItemType . Signal } :${ id } ` , ( ) => node_raw . value )
196+ ctx . value_map . set ( `${ ValueItemType . Signal } :${ id } ` , value_node_make ( ( ) => node_raw . value ) )
209197
210198 if ( node . kind === NodeType . Memo ||
211199 node . kind === NodeType . Signal
@@ -247,7 +235,7 @@ export function pre_observe_component_props(
247235}
248236
249237function map_props < TEl extends object > (
250- props : Solid . Component [ 'props' ] ,
238+ props : Solid . Props ,
251239 ctx : Inspector_Context < TEl > ,
252240) {
253241 // proxy props need to be checked for changes in keys
@@ -277,7 +265,7 @@ function map_props<TEl extends object>(
277265 // GETTER
278266 if ( desc . get ) {
279267 let { get_value, is_stale} = observed_props_observe_prop ( observed , key , id , desc . get )
280- value_node_map_add ( ctx . value_map , id , get_value )
268+ ctx . value_map . set ( id , value_node_make ( get_value ) )
281269 let last_value = get_value ( )
282270 record [ key ] = {
283271 getter : is_stale ? PropGetterState . Stale : PropGetterState . Live ,
@@ -291,8 +279,9 @@ function map_props<TEl extends object>(
291279 value : encodeValue ( desc . value , false , ctx . config . eli ) ,
292280 }
293281 // non-object props cannot be inspected (won't ever change and aren't deep)
294- if ( Array . isArray ( desc . value ) || misc . is_plain_object ( desc . value ) )
295- value_node_map_add ( ctx . value_map , id , ( ) => desc . value )
282+ if ( Array . isArray ( desc . value ) || misc . is_plain_object ( desc . value ) ) {
283+ ctx . value_map . set ( id , value_node_make ( ( ) => desc . value ) )
284+ }
296285 }
297286 }
298287 }
@@ -305,7 +294,7 @@ export function collect_owner_details<TEl extends object>(
305294 config : Collect_Details_Config < TEl > ,
306295) {
307296 let ctx : Inspector_Context < TEl > = {
308- value_map : value_node_map_make ( ) ,
297+ value_map : new Map ( ) ,
309298 config : config ,
310299 }
311300
@@ -400,7 +389,7 @@ export function collect_owner_details<TEl extends object>(
400389 }
401390 }
402391
403- value_node_map_add ( ctx . value_map , ValueItemType . Value , get_value )
392+ ctx . value_map . set ( ValueItemType . Value , value_node_make ( get_value ) )
404393
405394 return {
406395 details : details ,
0 commit comments