Skip to content

thefrontside/freedom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Freedom

A general-purpose abstract component tree built on Effection structured concurrency. Freedom ("free DOM") maintains a tree of long-lived, stateful component nodes where each node is an Effection resource with a scope, a JSON-like property bag, and ordered children. It is designed to accept a firehose of events of any type through a single synchronous dispatch() entry point, and emit change notifications on an output stream for renderers to consume.

Specs

Extension Modules

Freedom is extensible through extension modules — operations installed by the root component that add capabilities to the tree using Freedom's context APIs. Extensions use middleware interception, scoped evaluation, and the property bag to layer behavior without modifying the core.

Focus

The Focus extension tracks which node in the tree is currently receiving input. Focus state is observable as a regular node property (node.props.focused), and the focus chain is derived from the tree by depth-first traversal. See the research summary for background on focus management across UI paradigms.

Install focus in the root component:

function* app(): Operation<void> {
  yield* useFocus();
  // ... rest of app
}

About

Freedom (free DOM) — a general-purpose abstract component tree built on Effection structured concurrency

Resources

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors