libui.state — Reactive State

Reactive state containers for the declarative UI layer.

class libui.state.State(initial: T)

Bases: Generic[T]

Reactive container. Notifies subscribers on change.

Usage:

value = State(0)
value.subscribe(lambda: print(value.value))
value.value = 42  # prints 42
subscribers: set[Callable]
property value: T
get() T
set(new: T) None
update(fn: Callable[[T], T]) None

Apply a function to the current value: state.update(lambda x: x + 1).

subscribe(cb: Callable) Callable

Add a subscriber. Returns an unsubscribe function.

unsubscribe(cb: Callable) None
map(fn: Callable[[T], U]) Computed[U]

Create a derived readonly state: greeting = name.map(lambda n: f'Hello {n}').

class libui.state.Computed(source: State | Computed, fn: Callable)

Bases: Generic[T]

Readonly derived state. Updates automatically when source changes.

subscribers: set[Callable]
property value: T
get() T
subscribe(cb: Callable) Callable
unsubscribe(cb: Callable) None
map(fn: Callable) Computed
class libui.state.ListState(initial: list[T] | None = None)

Bases: Generic[T]

Observable list for tables. Notifies on insert/delete/change.

data: list[T]
subscribers: set[Callable]
subscribe(cb: Callable) Callable
unsubscribe(cb: Callable) None
append(item: T) None
pop(index: int = -1) T