Mixins / foldkit-mixins

Mixin

namespace · packages/mixins/src/mixin.ts:9

export * as Mixin from './mixin.js'

Mixin is the common algebra: a named set of per-slot contributions.

StaticMixin holds only static contributions, so it stays assignable to any Message universe; Style uses it. Mixin may hold deferred contributions and is tied to one Message universe; Behavior uses it. Composition is immutable and keeps the deferred form when either side is deferred.

In the guides

Members

Mixin.AnyMixin

type · packages/mixins/src/mixin.ts:28

type AnyMixin = Mixin<any> | StaticMixin<any>

Mixin.compose

function · packages/mixins/src/mixin.ts:83

function compose<Message = never>(
  ...mixins: ReadonlyArray<MixinFor<Message>>
): Mixin<Message>

Mixin.contributionsFor

function · packages/mixins/src/mixin.ts:100

function contributionsFor<Message>(
  mixin: Mixin<Message> | StaticMixin<Message>,
  slot: string,
): SlotContribution<Message> | undefined

Mixin.dynamic

function · packages/mixins/src/mixin.ts:76

function dynamic<Message = never>(
  name: string,
  contributions: Contribution<Message>,
): Mixin<Message>

Mixin.empty

function · packages/mixins/src/mixin.ts:81

function empty<Message = never>(): StaticMixin<Message>

Mixin.evaluate

function · packages/mixins/src/mixin.ts:41

function evaluate<Message>(
  contribution: SlotContribution<Message>,
  context: ContributionContext<Message>,
): StaticContribution<Message>

Mixin.isDynamic

function · packages/mixins/src/mixin.ts:37

function isDynamic<Message>(
  contribution: SlotContribution<Message>,
): contribution is DynamicContribution<Message>

Mixin.make

function · packages/mixins/src/mixin.ts:70

function make<Message = never>(
  name: string,
  contributions: StaticContributionMap<Message>,
): StaticMixin<Message>

Mixin.Mixin

interface · packages/mixins/src/mixin.ts:18

interface Mixin<Message = never> {
  readonly name: string
  readonly contributions: Contribution<Message>
}

Mixin.MixinFor

type · packages/mixins/src/mixin.ts:35

type MixinFor<Message> = Mixin<Message> | StaticMixin<Message> | Mixin<never>

A Mixin acceptable in any context of Message. Mixin<never> is included explicitly because a message-free dynamic Mixin (input-driven Style) does not widen to Mixin<Message> — HtmlBuilder is invariant in Message.

Mixin.StaticMixin

interface · packages/mixins/src/mixin.ts:23

interface StaticMixin<Message = never> {
  readonly name: string
  readonly contributions: StaticContributionMap<Message>
}