Mixins / foldkit-mixins

Capability

namespace · packages/mixins/src/capability.ts:6

export * as Capability from './capability.js'

Ported from effect-atom-jsx/src/Element.ts Capability, without Handle objects. Inheritance is metadata: a behavior that needs Interactive can attach to TextInput. Lookups go through a Map so __proto__ is a legal name.

Members

Capability.Any

type · packages/mixins/src/capability.ts:17

type Any = Capability<string, readonly CapabilityParent[]>

Capability.AssignableNamesOf

type · packages/mixins/src/capability.ts:22

type AssignableNamesOf<T> = T extends string
  ? T
  : T extends Capability<any, infer Extends>
    ? MetadataToken.NameOf<T> | AssignableNamesOf<Extends[number]>
    : MetadataToken.NameOf<T>

Capability.Base

const · packages/mixins/src/capability.ts:108

const Base: Capability<'Base', readonly []>

Capability.Capability

interface · packages/mixins/src/capability.ts:10

interface Capability<
  Name extends string = string,
  Extends extends readonly CapabilityParent[] = readonly [],
> extends MetadataToken.MetadataToken<'element.capability', Name> {
  readonly extends: Extends
}

Capability.CapabilityParent

type · packages/mixins/src/capability.ts:8

type CapabilityParent =
  string | MetadataToken.MetadataToken<'element.capability', string>

Capability.Collection

const · packages/mixins/src/capability.ts:114

const Collection: Capability<
  'Collection',
  readonly [Capability<'Base', readonly []>]
>

Capability.Container

const · packages/mixins/src/capability.ts:110

const Container: Capability<
  'Container',
  readonly [
    Capability<'Interactive', readonly [Capability<'Base', readonly []>]>,
  ]
>

Capability.describe

function · packages/mixins/src/capability.ts:101

function describe(capability: Any): {
  readonly name: string
  readonly extends: ReadonlyArray<string>
}

Capability.Draggable

const · packages/mixins/src/capability.ts:113

const Draggable: Capability<
  'Draggable',
  readonly [
    Capability<'Interactive', readonly [Capability<'Base', readonly []>]>,
  ]
>

Capability.extendsCapability

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

function extendsCapability(value: string | Any, base: string | Any): boolean

True when value is base or inherits from it. Ported from AF-UI.

Capability.ExtendsOf

type · packages/mixins/src/capability.ts:20

type ExtendsOf<T> =
  T extends Capability<any, infer Extends>
    ? MetadataToken.NameOf<Extends[number]>
    : never

Capability.Focusable

const · packages/mixins/src/capability.ts:111

const Focusable: Capability<
  'Focusable',
  readonly [
    Capability<'Interactive', readonly [Capability<'Base', readonly []>]>,
  ]
>

Capability.Interactive

const · packages/mixins/src/capability.ts:109

const Interactive: Capability<
  'Interactive',
  readonly [Capability<'Base', readonly []>]
>

Capability.is

function · packages/mixins/src/capability.ts:34

function is(value: unknown): value is Any

Capability.make

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

function make<
  const Name extends string,
  const Extends extends readonly CapabilityParent[] = readonly [],
>(
  name: Name,
  options?: {
    readonly extends?: Extends
  },
): Capability<Name, Extends>

Capability.NameOf

type · packages/mixins/src/capability.ts:18

type NameOf<T> = MetadataToken.NameOf<T>

Capability.names

function · packages/mixins/src/capability.ts:90

function names(capability: Any): ReadonlyArray<string>

Capability.NamesOf

type · packages/mixins/src/capability.ts:19

type NamesOf<T extends readonly unknown[]> = MetadataToken.NamesOf<T>

Capability.Satisfies

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

type Satisfies<
  Actual,
  Required extends {
    readonly name: string
  },
> = Required['name'] extends AssignableNamesOf<Actual> ? true : false

Capability.satisfies

function · packages/mixins/src/capability.ts:87

function satisfies(actual: string | Any, required: string | Any): boolean

Capability.TextInput

const · packages/mixins/src/capability.ts:112

const TextInput: Capability<
  'TextInput',
  readonly [
    Capability<
      'Focusable',
      readonly [
        Capability<'Interactive', readonly [Capability<'Base', readonly []>]>,
      ]
    >,
  ]
>