Skip to content

Commit 995f172

Browse files
De-generalize it back to a specific concept of named events. Can be re-generalized in the future if we need.
1 parent 8be16ae commit 995f172

12 files changed

+136
-142
lines changed

src/Components/Components/src/PublicAPI.Unshipped.txt

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,22 +29,22 @@ Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddComponentParamete
2929
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddComponentRenderMode(int sequence, Microsoft.AspNetCore.Components.IComponentRenderMode! renderMode) -> void
3030
*REMOVED*Microsoft.AspNetCore.Components.RouteData.RouteData(System.Type! pageType, System.Collections.Generic.IReadOnlyDictionary<string!, object!>! routeValues) -> void
3131
*REMOVED*Microsoft.AspNetCore.Components.RouteData.RouteValues.get -> System.Collections.Generic.IReadOnlyDictionary<string!, object!>!
32-
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddNamedValue(int sequence, string! name, object? value) -> void
32+
Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddNamedEvent(int sequence, string! eventType, string! assignedName) -> void
3333
Microsoft.AspNetCore.Components.RenderTree.ComponentFrameFlags
3434
Microsoft.AspNetCore.Components.RenderTree.ComponentFrameFlags.HasCallerSpecifiedRenderMode = 1 -> Microsoft.AspNetCore.Components.RenderTree.ComponentFrameFlags
35-
Microsoft.AspNetCore.Components.RenderTree.NamedValue
36-
Microsoft.AspNetCore.Components.RenderTree.NamedValue.ComponentId.get -> int
37-
Microsoft.AspNetCore.Components.RenderTree.NamedValue.FrameIndex.get -> int
38-
Microsoft.AspNetCore.Components.RenderTree.NamedValue.Name.get -> string!
39-
Microsoft.AspNetCore.Components.RenderTree.NamedValue.NamedValue() -> void
40-
Microsoft.AspNetCore.Components.RenderTree.NamedValue.NamedValue(int componentId, int frameIndex, string! name, object? value) -> void
41-
Microsoft.AspNetCore.Components.RenderTree.NamedValue.Value.get -> object?
42-
Microsoft.AspNetCore.Components.RenderTree.RenderBatch.AddedNamedValues.get -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange<Microsoft.AspNetCore.Components.RenderTree.NamedValue>?
43-
Microsoft.AspNetCore.Components.RenderTree.RenderBatch.RemovedNamedValues.get -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange<Microsoft.AspNetCore.Components.RenderTree.NamedValue>?
35+
Microsoft.AspNetCore.Components.RenderTree.NamedEvent
36+
Microsoft.AspNetCore.Components.RenderTree.NamedEvent.AssignedName.get -> string!
37+
Microsoft.AspNetCore.Components.RenderTree.NamedEvent.ComponentId.get -> int
38+
Microsoft.AspNetCore.Components.RenderTree.NamedEvent.EventType.get -> string!
39+
Microsoft.AspNetCore.Components.RenderTree.NamedEvent.FrameIndex.get -> int
40+
Microsoft.AspNetCore.Components.RenderTree.NamedEvent.NamedEvent() -> void
41+
Microsoft.AspNetCore.Components.RenderTree.NamedEvent.NamedEvent(int componentId, int frameIndex, string! eventType, string! assignedName) -> void
42+
Microsoft.AspNetCore.Components.RenderTree.RenderBatch.AddedNamedEvents.get -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange<Microsoft.AspNetCore.Components.RenderTree.NamedEvent>?
43+
Microsoft.AspNetCore.Components.RenderTree.RenderBatch.RemovedNamedEvents.get -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange<Microsoft.AspNetCore.Components.RenderTree.NamedEvent>?
4444
Microsoft.AspNetCore.Components.RenderTree.Renderer.GetCurrentRenderTreeFrames(int componentId, bool optional) -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange<Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame>?
4545
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentFrameFlags.get -> Microsoft.AspNetCore.Components.RenderTree.ComponentFrameFlags
4646
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.ComponentRenderMode = 9 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType
47-
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.NamedValue = 10 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType
47+
Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.NamedEvent = 10 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType
4848
Microsoft.AspNetCore.Components.RouteData.RouteData(System.Type! pageType, System.Collections.Generic.IReadOnlyDictionary<string!, object?>! routeValues) -> void
4949
Microsoft.AspNetCore.Components.RouteData.RouteValues.get -> System.Collections.Generic.IReadOnlyDictionary<string!, object?>!
5050
Microsoft.AspNetCore.Components.Routing.IRoutingStateProvider
@@ -103,5 +103,5 @@ virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.CreateComponentState
103103
virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.DispatchEventAsync(ulong eventHandlerId, Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo? fieldInfo, System.EventArgs! eventArgs, bool quiesce) -> System.Threading.Tasks.Task!
104104
virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.ResolveComponentForRenderMode(System.Type! componentType, int? parentComponentId, Microsoft.AspNetCore.Components.IComponentActivator! componentActivator, Microsoft.AspNetCore.Components.IComponentRenderMode! renderMode) -> Microsoft.AspNetCore.Components.IComponent!
105105
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentRenderMode.get -> Microsoft.AspNetCore.Components.IComponentRenderMode
106-
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.NamedValueName.get -> string
107-
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.NamedValueValue.get -> object
106+
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.NamedEventAssignedName.get -> string
107+
~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.NamedEventType.get -> string
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
namespace Microsoft.AspNetCore.Components.RenderTree;
5+
6+
/// <summary>
7+
/// Types in the Microsoft.AspNetCore.Components.RenderTree are not recommended for use outside
8+
/// of the Blazor framework. These types will change in a future release.
9+
/// </summary>
10+
/// <remarks>
11+
/// Constructs an instance of <see cref="NamedEvent"/>.
12+
/// </remarks>
13+
/// <param name="componentId">The ID of the component holding the named value.</param>
14+
/// <param name="frameIndex">The index of the <see cref="RenderTreeFrameType.NamedEvent"/> frame within the component's current render output.</param>
15+
/// <param name="eventType">The event type.</param>
16+
/// <param name="assignedName">The application-assigned name.</param>
17+
public readonly struct NamedEvent(int componentId, int frameIndex, string eventType, string assignedName)
18+
{
19+
/// <summary>
20+
/// The ID of the component holding the named event.
21+
/// </summary>
22+
public readonly int ComponentId { get; } = componentId;
23+
24+
/// <summary>
25+
/// The index of the <see cref="RenderTreeFrameType.NamedEvent"/> frame within the component's current render output.
26+
/// </summary>
27+
public readonly int FrameIndex { get; } = frameIndex;
28+
29+
/// <summary>
30+
/// The event type.
31+
/// </summary>
32+
public readonly string EventType { get; } = eventType;
33+
34+
/// <summary>
35+
/// The application-assigned name.
36+
/// </summary>
37+
public readonly string AssignedName { get; } = assignedName;
38+
}

src/Components/Components/src/RenderTree/NamedEventHandler.cs

Lines changed: 0 additions & 46 deletions
This file was deleted.

src/Components/Components/src/RenderTree/RenderBatch.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,29 +34,29 @@ public readonly struct RenderBatch
3434
public ArrayRange<ulong> DisposedEventHandlerIDs { get; }
3535

3636
/// <summary>
37-
/// Gets the named values that were added, or null.
37+
/// Gets the named events that were added, or null.
3838
/// </summary>
39-
public ArrayRange<NamedValue>? AddedNamedValues { get; }
39+
public ArrayRange<NamedEvent>? AddedNamedEvents { get; }
4040

4141
/// <summary>
42-
/// Gets the named values that were removed, or null.
42+
/// Gets the named events that were removed, or null.
4343
/// </summary>
44-
public ArrayRange<NamedValue>? RemovedNamedValues { get; }
44+
public ArrayRange<NamedEvent>? RemovedNamedEvents { get; }
4545

4646
internal RenderBatch(
4747
ArrayRange<RenderTreeDiff> updatedComponents,
4848
ArrayRange<RenderTreeFrame> referenceFrames,
4949
ArrayRange<int> disposedComponentIDs,
5050
ArrayRange<ulong> disposedEventHandlerIDs,
51-
ArrayRange<NamedValue>? addedNamedValues,
52-
ArrayRange<NamedValue>? removedNamedValues)
51+
ArrayRange<NamedEvent>? addedNamedEvents,
52+
ArrayRange<NamedEvent>? removedNamedEvents)
5353
{
5454
UpdatedComponents = updatedComponents;
5555
ReferenceFrames = referenceFrames;
5656
DisposedComponentIDs = disposedComponentIDs;
5757
DisposedEventHandlerIDs = disposedEventHandlerIDs;
58-
AddedNamedValues = addedNamedValues;
59-
RemovedNamedValues = removedNamedValues;
58+
AddedNamedEvents = addedNamedEvents;
59+
RemovedNamedEvents = removedNamedEvents;
6060
}
6161
}
6262

src/Components/Components/src/RenderTree/RenderTreeDiffBuilder.cs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -726,17 +726,17 @@ private static void AppendDiffEntriesForFramesWithSameSequence(
726726
break;
727727
}
728728

729-
case RenderTreeFrameType.NamedValue:
729+
case RenderTreeFrameType.NamedEvent:
730730
{
731-
// We don't have a use case for the names changing, so we don't even check that. We assume for a given sequence number
732-
// the name is always a constant. What can change is the frame index and the value.
731+
// We don't have a use case for the event types changing, so we don't even check that. We assume for a given sequence number
732+
// the event type is always a constant. What can change is the frame index and the assigned name.
733733
if (oldFrameIndex != newFrameIndex
734-
|| ChangeDetection.MayHaveChanged(oldFrame.NamedValueValueField, newFrame.NamedValueValueField))
734+
|| !string.Equals(oldFrame.NamedEventAssignedName, newFrame.NamedEventAssignedName, StringComparison.Ordinal))
735735
{
736736
// We could track the updates as a concept in its own right, but this situation will be uncommon,
737737
// so it's enough to treat it as a delete+add
738-
diffContext.BatchBuilder.RemoveNamedValue(diffContext.ComponentId, oldFrameIndex, ref oldFrame);
739-
diffContext.BatchBuilder.AddNamedValue(diffContext.ComponentId, newFrameIndex, ref newFrame);
738+
diffContext.BatchBuilder.RemoveNamedEvent(diffContext.ComponentId, oldFrameIndex, ref oldFrame);
739+
diffContext.BatchBuilder.AddNamedEvent(diffContext.ComponentId, newFrameIndex, ref newFrame);
740740
}
741741

742742
break;
@@ -837,9 +837,9 @@ private static void InsertNewFrame(ref DiffContext diffContext, int newFrameInde
837837
InitializeNewComponentReferenceCaptureFrame(ref diffContext, ref newFrame);
838838
break;
839839
}
840-
case RenderTreeFrameType.NamedValue:
840+
case RenderTreeFrameType.NamedEvent:
841841
{
842-
InitializeNewNamedValue(ref diffContext, newFrameIndex);
842+
InitializeNewNamedEvent(ref diffContext, newFrameIndex);
843843
break;
844844
}
845845
default:
@@ -887,9 +887,9 @@ private static void RemoveOldFrame(ref DiffContext diffContext, int oldFrameInde
887887
diffContext.Edits.Append(RenderTreeEdit.RemoveFrame(diffContext.SiblingIndex));
888888
break;
889889
}
890-
case RenderTreeFrameType.NamedValue:
890+
case RenderTreeFrameType.NamedEvent:
891891
{
892-
diffContext.BatchBuilder.RemoveNamedValue(diffContext.ComponentId, oldFrameIndex, ref diffContext.OldTree[oldFrameIndex]);
892+
diffContext.BatchBuilder.RemoveNamedEvent(diffContext.ComponentId, oldFrameIndex, ref diffContext.OldTree[oldFrameIndex]);
893893
break;
894894
}
895895
default:
@@ -947,8 +947,8 @@ private static void InitializeNewSubtree(ref DiffContext diffContext, int frameI
947947
case RenderTreeFrameType.ComponentReferenceCapture:
948948
InitializeNewComponentReferenceCaptureFrame(ref diffContext, ref frame);
949949
break;
950-
case RenderTreeFrameType.NamedValue:
951-
InitializeNewNamedValue(ref diffContext, i);
950+
case RenderTreeFrameType.NamedEvent:
951+
InitializeNewNamedEvent(ref diffContext, i);
952952
break;
953953
}
954954
}
@@ -1007,9 +1007,9 @@ private static void InitializeNewComponentReferenceCaptureFrame(ref DiffContext
10071007
newFrame.ComponentReferenceCaptureActionField(componentInstance);
10081008
}
10091009

1010-
private static void InitializeNewNamedValue(ref DiffContext diffContext, int newTreeFrameIndex)
1010+
private static void InitializeNewNamedEvent(ref DiffContext diffContext, int newTreeFrameIndex)
10111011
{
1012-
diffContext.BatchBuilder.AddNamedValue(diffContext.ComponentId, newTreeFrameIndex, ref diffContext.NewTree[newTreeFrameIndex]);
1012+
diffContext.BatchBuilder.AddNamedEvent(diffContext.ComponentId, newTreeFrameIndex, ref diffContext.NewTree[newTreeFrameIndex]);
10131013
}
10141014

10151015
private static void DisposeFramesInRange(RenderBatchBuilder batchBuilder, int componentId, RenderTreeFrame[] frames, int startIndex, int endIndexExcl)
@@ -1025,9 +1025,9 @@ private static void DisposeFramesInRange(RenderBatchBuilder batchBuilder, int co
10251025
{
10261026
batchBuilder.DisposedEventHandlerIds.Append(frame.AttributeEventHandlerIdField);
10271027
}
1028-
else if (frame.FrameTypeField == RenderTreeFrameType.NamedValue)
1028+
else if (frame.FrameTypeField == RenderTreeFrameType.NamedEvent)
10291029
{
1030-
batchBuilder.RemoveNamedValue(componentId, i, ref frames[i]);
1030+
batchBuilder.RemoveNamedEvent(componentId, i, ref frames[i]);
10311031
}
10321032
}
10331033
}

src/Components/Components/src/RenderTree/RenderTreeFrame.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -283,23 +283,23 @@ public IComponentRenderMode ComponentRenderMode
283283
}
284284

285285
// --------------------------------------------------------------------------------
286-
// RenderTreeFrameType.NamedValue
286+
// RenderTreeFrameType.NamedEvent
287287
// --------------------------------------------------------------------------------
288288

289-
[FieldOffset(16)] internal string NamedValueNameField;
290-
[FieldOffset(24)] internal object NamedValueValueField;
289+
[FieldOffset(16)] internal string NamedEventTypeField;
290+
[FieldOffset(24)] internal string NamedEventAssignedNameField;
291291

292292
/// <summary>
293-
/// If the <see cref="FrameType"/> property equals <see cref="RenderTreeFrameType.NamedValue"/>,
294-
/// gets the name from the name-value pair. Otherwise, the value is undefined.
293+
/// If the <see cref="FrameType"/> property equals <see cref="RenderTreeFrameType.NamedEvent"/>,
294+
/// gets the event type. Otherwise, the value is undefined.
295295
/// </summary>
296-
public string NamedValueName => NamedValueNameField;
296+
public string NamedEventType => NamedEventTypeField;
297297

298298
/// <summary>
299-
/// If the <see cref="FrameType"/> property equals <see cref="RenderTreeFrameType.NamedValue"/>,
300-
/// gets the value from the name-value pair. Otherwise, the value is undefined.
299+
/// If the <see cref="FrameType"/> property equals <see cref="RenderTreeFrameType.NamedEvent"/>,
300+
/// gets the assigned name. Otherwise, the value is undefined.
301301
/// </summary>
302-
public object NamedValueValue => NamedValueValueField;
302+
public string NamedEventAssignedName => NamedEventAssignedNameField;
303303

304304
// Element constructor
305305
private RenderTreeFrame(int sequence, int elementSubtreeLength, string elementName, object elementKey)

src/Components/Components/src/RenderTree/RenderTreeFrameArrayBuilder.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ public void AppendComponentRenderMode(int sequence, IComponentRenderMode renderM
150150
};
151151
}
152152

153-
public void AppendNamedValue(int sequence, string name, object? value)
153+
public void AppendNamedEvent(int sequence, string eventType, string assignedName)
154154
{
155155
if (_itemsInUse == _items.Length)
156156
{
@@ -160,9 +160,9 @@ public void AppendNamedValue(int sequence, string name, object? value)
160160
_items[_itemsInUse++] = new RenderTreeFrame
161161
{
162162
SequenceField = sequence,
163-
FrameTypeField = RenderTreeFrameType.NamedValue,
164-
NamedValueNameField = name,
165-
NamedValueValueField = value,
163+
FrameTypeField = RenderTreeFrameType.NamedEvent,
164+
NamedEventTypeField = eventType,
165+
NamedEventAssignedNameField = assignedName,
166166
};
167167
}
168168
}

src/Components/Components/src/RenderTree/RenderTreeFrameType.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public enum RenderTreeFrameType : short
6565
ComponentRenderMode = 9,
6666

6767
/// <summary>
68-
/// Represents an arbitrary name-value pair at a location in the render tree.
68+
/// Represents an application-assigned name for an event.
6969
/// </summary>
70-
NamedValue = 10,
70+
NamedEvent = 10,
7171
}

0 commit comments

Comments
 (0)