@@ -136,6 +136,7 @@ public struct RenderTreeFrame
136136 // RenderTreeFrameType.Component
137137 // --------------------------------------------------------------------------------
138138
139+ [ FieldOffset ( 6 ) ] internal byte ComponentRenderModeField ;
139140 [ FieldOffset ( 8 ) ] internal int ComponentSubtreeLengthField ;
140141 [ FieldOffset ( 12 ) ] internal int ComponentIdField ;
141142 [ FieldOffset ( 16 ) ]
@@ -144,6 +145,12 @@ public struct RenderTreeFrame
144145 [ FieldOffset ( 24 ) ] internal ComponentState ComponentStateField ;
145146 [ FieldOffset ( 32 ) ] internal object ComponentKeyField ;
146147
148+ /// <summary>
149+ /// If the <see cref="FrameType"/> property equals <see cref="RenderTreeFrameType.Component"/>
150+ /// gets the component render mode's numeric value.
151+ /// </summary>
152+ public byte ComponentRenderMode => ComponentRenderModeField ;
153+
147154 /// <summary>
148155 /// If the <see cref="FrameType"/> property equals <see cref="RenderTreeFrameType.Component"/>
149156 /// gets the number of frames in the subtree for which this frame is the root.
@@ -262,14 +269,15 @@ private RenderTreeFrame(int sequence, int elementSubtreeLength, string elementNa
262269 }
263270
264271 // Component constructor
265- private RenderTreeFrame ( int sequence , int componentSubtreeLength , [ DynamicallyAccessedMembers ( LinkerFlags . Component ) ] Type componentType , ComponentState componentState , object componentKey )
272+ private RenderTreeFrame ( int sequence , int componentSubtreeLength , [ DynamicallyAccessedMembers ( LinkerFlags . Component ) ] Type componentType , ComponentState componentState , object componentKey , byte componentRenderMode )
266273 : this ( )
267274 {
268275 SequenceField = sequence ;
269276 FrameTypeField = RenderTreeFrameType . Component ;
270277 ComponentSubtreeLengthField = componentSubtreeLength ;
271278 ComponentTypeField = componentType ;
272279 ComponentKeyField = componentKey ;
280+ ComponentRenderModeField = componentRenderMode ;
273281
274282 if ( componentState != null )
275283 {
@@ -349,10 +357,10 @@ internal static RenderTreeFrame Attribute(int sequence, string name, object valu
349357 => new RenderTreeFrame ( sequence , attributeName : name , attributeValue : value , attributeEventHandlerId : 0 , attributeEventUpdatesAttributeName : null ) ;
350358
351359 internal static RenderTreeFrame ChildComponent ( int sequence , [ DynamicallyAccessedMembers ( LinkerFlags . Component ) ] Type componentType )
352- => new RenderTreeFrame ( sequence , componentSubtreeLength : 0 , componentType , null , null ) ;
360+ => new RenderTreeFrame ( sequence , componentSubtreeLength : 0 , componentType , null , null , default ) ;
353361
354362 internal static RenderTreeFrame PlaceholderChildComponentWithSubtreeLength ( int subtreeLength )
355- => new RenderTreeFrame ( 0 , componentSubtreeLength : subtreeLength , typeof ( IComponent ) , null , null ) ;
363+ => new RenderTreeFrame ( 0 , componentSubtreeLength : subtreeLength , typeof ( IComponent ) , null , null , default ) ;
356364
357365 internal static RenderTreeFrame Region ( int sequence )
358366 => new RenderTreeFrame ( sequence , regionSubtreeLength : 0 ) ;
@@ -367,13 +375,16 @@ internal RenderTreeFrame WithElementSubtreeLength(int elementSubtreeLength)
367375 => new RenderTreeFrame ( SequenceField , elementSubtreeLength : elementSubtreeLength , ElementNameField , ElementKeyField ) ;
368376
369377 internal RenderTreeFrame WithComponentSubtreeLength ( int componentSubtreeLength )
370- => new RenderTreeFrame ( SequenceField , componentSubtreeLength : componentSubtreeLength , ComponentTypeField , ComponentStateField , ComponentKeyField ) ;
378+ => new RenderTreeFrame ( SequenceField , componentSubtreeLength : componentSubtreeLength , ComponentTypeField , ComponentStateField , ComponentKeyField , ComponentRenderModeField ) ;
371379
372380 internal RenderTreeFrame WithAttributeSequence ( int sequence )
373381 => new RenderTreeFrame ( sequence , attributeName : AttributeNameField , AttributeValueField , AttributeEventHandlerIdField , AttributeEventUpdatesAttributeNameField ) ;
374382
375383 internal RenderTreeFrame WithComponent ( ComponentState componentState )
376- => new RenderTreeFrame ( SequenceField , componentSubtreeLength : ComponentSubtreeLengthField , ComponentTypeField , componentState , ComponentKeyField ) ;
384+ => new RenderTreeFrame ( SequenceField , componentSubtreeLength : ComponentSubtreeLengthField , ComponentTypeField , componentState , ComponentKeyField , ComponentRenderModeField ) ;
385+
386+ internal RenderTreeFrame WithRenderMode ( ComponentRenderMode componentRenderMode )
387+ => new RenderTreeFrame ( SequenceField , componentSubtreeLength : ComponentSubtreeLengthField , ComponentTypeField , ComponentStateField , ComponentKeyField , componentRenderMode . NumericValue ) ;
377388
378389 internal RenderTreeFrame WithAttributeEventHandlerId ( ulong eventHandlerId )
379390 => new RenderTreeFrame ( SequenceField , attributeName : AttributeNameField , AttributeValueField , eventHandlerId , AttributeEventUpdatesAttributeNameField ) ;
@@ -394,7 +405,7 @@ internal RenderTreeFrame WithElementKey(object elementKey)
394405 => new RenderTreeFrame ( SequenceField , elementSubtreeLength : ElementSubtreeLengthField , ElementNameField , elementKey ) ;
395406
396407 internal RenderTreeFrame WithComponentKey ( object componentKey )
397- => new RenderTreeFrame ( SequenceField , componentSubtreeLength : ComponentSubtreeLengthField , ComponentTypeField , ComponentStateField , componentKey ) ;
408+ => new RenderTreeFrame ( SequenceField , componentSubtreeLength : ComponentSubtreeLengthField , ComponentTypeField , ComponentStateField , componentKey , ComponentRenderModeField ) ;
398409
399410 /// <inheritdoc />
400411 // Just to be nice for debugging and unit tests.
0 commit comments