Mixins / foldkit-mixins-ui
What resolve does
resolve(attributes, mixins, { input, h }) receives the shaped value the
component passed to its render callback and returns the same shape with published
attribute bundles resolved through Mixins.
For a simple Button:
{ button: baseAttributes }
|
v
Button.resolve(...)
|
v
{ button: resolvedAttributes }For richer components, non-slot values pass through untouched. Values such as
animatePanel, isVisible, activeIndex, or selectedValue remain component
data rather than becoming Mixins slots.
input is whatever attached Style/Behavior callbacks are allowed to read. In a
feature view that is often the Surface's projected Model; leave it out when no
attached Mixin reads one.
What resolve returns (and draw receives) has a name for each adapter:
ResolvedButton<Message>, ResolvedInput<Message>, ResolvedDialog<Message>,
ResolvedRadioGroup<Value, Message> and ResolvedRadioOption<Value, Message>,
ResolvedTabs<Value, Message>, ResolvedCalendar<Message>,
ResolvedMenu<Message> (with ResolvedMenuGroup/ResolvedMenuItem per
entry), and so on, so a
helper that draws part of a component can be typed without ReturnType.
ResolvedTextarea's textarea bundle is typed for h.textarea, which refuses
InnerHTML; the resolver refuses an InnerHTML from any Mixin, so no cast is
needed.
Every adapter is available as both a component namespace (Button.toView,
Button.resolve, Button.ButtonSlots) and flat Slot exports such as
ButtonSlots.