API Reference ash_ui v#0.1.0

Copy Markdown View Source

Modules

Static AshUi extension and runtime surface.

A one-shot browser affordance emitted by a successful Ash action.

Declarative, one-shot DOM effects for Ash actions.

A keyed collection in the render algebra — structurally identical to Phoenix.LiveView.Comprehension. AshUi always emits keyed entries (has_key?: true) and never emits streams: collections are keyed comprehensions over resource state by model, permanently — stream and LiveComponents are excluded from this algebra by design, not omission.

The differential kernel over AshUi.Rendered: produces LiveView-wire-compatible diff maps and retained fingerprint state.

Expression entry point for AshUi constructor expressions.

Shared compiler from source expression syntax to Ash-native expressions.

Canonical custom expressions that consuming applications register with Ash.

Markdown source -> sanitized AshUi.SafeHTML.

Subscription edges for what a rendered record DERIVES: "whatever a page reads, it subscribes to".

Ash notifier that forwards resource notifications into AshUi's notification-native read match index.

Registration-free event binding resolution over the compiled patch table.

Compiles an AshUi resource's :view calculation into a AshUi.Patch.Table: slots with stable addresses + a field→slots propagation index + keyed list anchors + child tables for nested render(Resource, input).

ONE dispatch semantics, backing-blind (DESIGN.md §5): run the target instance's OWN action — arguments, validations, changes, never bypassed — and persist through the instance's data layer. The storage seam is the only place backing appears

THE entry-key function for keyed collections — one identity rule shared by the live renderer and the binding resolver, implementing Ash resource identity correctly

Change derivation over a compiled AshUi.Patch.Table.

Target-specific static skeleton compiled from a resource's lowered view: interleaved static markup + ordered dynamic refs, the exact statics/dynamics contract the host bridge's Rendered structs consume.

Compiled patch table for one resource view: every dynamic position in the lowered view becomes a slot with a stable address, an evaluator, and the dependency field paths that invalidate it; the propagation index inverts dependencies to slot ids. Nested render(Resource, input) compiles the child resource's own table under an address prefix.

The O(1) dispatch reload contract — the ONE canonical policy for what a bridge reloads after a dispatch. Every transport bridge calls after_dispatch/4; none owns a private copy of the policy, so a new target cannot drift from it.

Builds %AshUi.Rendered{} structures straight from a compiled patch table — statics from the table's skeleton, dynamics from evaluator closures over the CURRENT record. The neutral differential contract uses nil-based change tracking: a dynamic whose address is not in the changed set (AshUi.Patch.Runtime.changed_addresses/3) returns nil, and the AshUi.Diff kernel decides the minimal keyed patch. This is the ONE runtime emission path — transports convert or diff its output, never re-emit.

Adapter seam for lowering AshUi's neutral render protocol to a host target.

Host-neutral HTML target lowering for AshUi.RenderTree.

The default render target, preserving AshUi's neutral DOM vocabulary.

Adapter-neutral rendered output produced from a semantic view tree.

Render-tree node addressing: keyed nodes use {:key, key} segments, unkeyed nodes match positionally with {:index, index} segments. These paths are the stable addresses the patch ops target and the id scheme the HTML renderer and binding collector already emit.

The render algebra's node: statics interleaved with a dynamic function, identified by a fingerprint. Structurally identical to Phoenix.LiveView.Rendered (phoenix_live_view 1.1.x) so transport adapters can convert by struct rename alone; the shape is a frozen contract verified against LiveView as an executable oracle.

Materializes a rendered structure to iodata — the SAME statics and dynamics the differential engine diffs, zipped without change tracking. Transports use this for full-document bodies so materialization and diffing can never disagree.

Normalized resource contract consumed by the runtime and adapters.

Build-side stylesheet GENERATOR for VS Code color-theme JSON (DESIGN.md §9).

Ash type for authored AshUi render-tree values.

Compile-time [part=] coverage over a document root's render closure (DESIGN.md §9).

Compile-time stylesheet resolution discipline (DESIGN.md §9).