Allow providing arrays of subcomponents when crafting a component.

Review Request #13646 — Created March 18, 2024 and submitted — Latest diff uploaded

Information

Ink
master

Reviewers

When crafting a component, subcomponents are expected to be provided
one-by-one. This is fine in typical usage, but if a component needs to
pre-build subcomponent state and pass it in as an array of
subcomponents, then this will fail.

What happens is that the array of subcomponents ends up being provided
as a single child to a component. This doesn't get seen as subcomponent
information, since it's an array and not a subcomponent object.

Since the grammar doesn't provide something like ...${subcomponents}
outside of a <tag>, we instead need to handle this in the crafting
implementation.

We now handle any children that are arrays as possible lists of
subcomponents. We'll never have an array as a valid child outside of
this, so this should be safe and shouldn't impact any other usage.

This problem was first encountered in MenuButton.

All unit tests pass.

Hit this with MenuButton and verified I could capture and pass along
arrays of subcomponents.

Commits

Files